读书人

数组中怎么求已被初始化的最大下标值

发布时间: 2012-02-17 17:50:42 作者: rapoo

数组中如何求已被初始化的最大下标值?
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. 

读书人网 >.NET

热点推荐