Tlist的使用(静态数组地址) ( 积分: 30 )

  • 主题发起人 主题发起人 ddzhouqian
  • 开始时间 开始时间
D

ddzhouqian

Unregistered / Unconfirmed
GUEST, unregistred user!
代码如下:
type
PRecord=^TRecord;
Trecord=record
name:array[0..20] of char;
age:integer;
end;
a1:array[0..10] of Trecord;
FList:TList;
procedure TForm1.Button1Click(Sender: TObject);
begin
Fa1[0].name:='a1';
Fa1[0].age:=10;
Fa1[1].name:='a2';
Fa1[1].age:=11;

FList:=TList.Create;
FList.Add(@Fa1[0]);
FList.Add(@Fa1[1]);
end;

procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
for i:=0 to FList.Count-1 do
begin
//Dispose(PRecord(FList.Items));//这句加上会报无效的指针的错误
listbox1.Items.Add(PRecord(FList.Items)^.name);
end;
FList.Free;
end;
以上代码为测试代码,问高手:
如何完全释放Flist,添加的静态数组的地址如何释放?是不是不需要释放?
 
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
for i:=0 to FList.Count-1 do
begin
//Dispose(PRecord(FList.Items));//这句加上会报无效的指针的错误
listbox1.Items.Add(PRecord(FList.Items)^.name);
end;
FList.Free;
SetLength(Fal,0)
///-----
end;
 
直接用SetLength(数组,0),就释放了
 
Fa1的声明在哪?
 
to :lake_cx
声明已经加上去了;是个静态数组。
 
静态数组为什么要释放?
 
楼上问得好.
 
看你申明的数组变量,是全局的或者是单元的,因为这个在软件编译期已经分配了内存,所以是不需要释放的,也是释放不了的,当然你一定要释放,可以申明为指针类型,再分配内存,再释放,TLIST释放,如果是动态分配的,先释放,再CLEAR
 
后退
顶部