TList.Add() 参数是一个 Pointer, 下面是一个如何将 Integer 值处理为 Pointer的.
copy from : https://forum.lazarus.freepascal.org/index.php?topic=22905.0
type
pinteger=^integer;
var
aList:TList;
pi:pinteger;
i:integer;
begin
aList:=TList.Create;
for i:=0 to 9 do
begin
New(pi);
pi^:=i;
aList.Add(pi);
end;
for i:=0 to aList.Count-1 do
writeln(pinteger(aList[i])^);
//take care about self created items
for i:=aList.Count-1 downto 0 do
Dispose(pinteger(aList[i]));
aList.Clear;
aList.Free;
end.
使用自定义对象, 比直接使用Pointer更简单.
type
TTest=class
Value:integer;
end;
var
aList:TList;
aTest:TTest;
i:integer;
begin
aList:=TList.Create;
for i:=0 to 9 do
begin
aTest:=TTest.Create;
aTest.Value:=i;
aList.Add(aTest);
end;
for i:=0 to aList.Count-1 do
writeln(TTest(aList[i]).Value);
//take care about self created items
for i:=aList.Count-1 downto 0 do
TTest(aList[i]).Free;
aList.Clear;
aList.Free;
end.