数组中如何求已被初始化的最大下标值?
var
edt:TedtList//Type TedtList=array of Tedit;
i:integer;
begin
setlength(edt,100);
for i:=0 to 10 do
begin
edt[i]:=Tedit.create(self); /////请问如何创建获取到已经被初始化的,最大的下标值(即10)
edt[i].width:=...
...
...
...
end;
end;
[解决办法]
大家都别晕了,解决问题才是关键:
- Delphi(Pascal) code
unit Unit2; interface uses Controls,Graphics,Menus,jpeg,OleServer,wwDBDateTimePicker,StdCtrls; /////////////////////////////////////预案//////////////////////////////////////////////////// Type TedtList=array of Tedit; ///////////////////////////////////////////////////////////////////////////////////////////// implementation end. unit Unit1; interface uses Unit2,Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } edt :TedtList; function GetUsedHigh_Edt(edt:TedtList):integer; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var i:integer; begin setlength(edt,100); for i:=0 to 9 do edt[i]:=Tedit.create(self); end; function Tform1.GetUsedHigh_Edt(edt:TedtList):integer; var i:integer; begin // ret:=0; // i:=0; 这两句不需要,因为后面有赋值了 for i:=Low(edt) to high(edt) do // 0改为Low(edt) begin if edt[i]=nil then begin result:=i; // 主要问题是这里,exit前没有返回值,怪我上次没看好,不好意思 exit; end; end; Result:=high(edt)+1; end; procedure TForm1.Button1Click(Sender: TObject); begin edit1.Text :=inttostr(GetUsedHigh_Edt(edt)); end; end.