Lazarus TStringList计数返回负数
我想使用count属性计算TStringList中的项数(字符串)。TStringList.Count返回我“-307586000”为什么 以下是我在Lazarus中的代码:Lazarus TStringList计数返回负数,lazarus,freepascal,tstringlist,Lazarus,Freepascal,Tstringlist,我想使用count属性计算TStringList中的项数(字符串)。TStringList.Count返回我“-307586000”为什么 以下是我在Lazarus中的代码: procedure Test; var list: TStringList; vrai: boolean; nCol, i: integer; begin vrai := true; list.Create; nCol := 5; for i := 0 to nCol-1 do
procedure Test;
var
list: TStringList;
vrai: boolean;
nCol, i: integer;
begin
vrai := true;
list.Create;
nCol := 5;
for i := 0 to nCol-1 do
if vrai then
begin
list.Add(intToStr(i));
showmessage(IntToStr(list.Count));
end;
end;
Thx伙计。您需要更改
list.Create代码>到列表:=TStringList.Create代码>当您通过对象变量而不是类类型调用构造函数时,会像调用普通方法一样调用构造函数。您实际上没有创建任何TStringList
对象,因此调用list.Add()
和list.Count
是未定义的行为。你很幸运,你的代码没有崩溃
另外,不要忘记调用list.Free代码>当您使用列表
完成时
试试这个:
procedure Test;
var
list: TStringList;
vrai: boolean;
nCol, i: integer;
begin
vrai := true;
list := TStringList.Create;
try
nCol := 5;
for i := 0 to nCol-1 do
begin
if vrai then
begin
list.Add(IntToStr(i));
ShowMessage(IntToStr(list.Count));
end;
end;
finally
list.Free;
end;
end;
您需要更改list.Create代码>到列表:=TStringList.Create代码>当您通过对象变量而不是类类型调用构造函数时,会像调用普通方法一样调用构造函数。您实际上没有创建任何TStringList
对象,因此调用list.Add()
和list.Count
是未定义的行为。你很幸运,你的代码没有崩溃
另外,不要忘记调用list.Free代码>当您使用列表
完成时
试试这个:
procedure Test;
var
list: TStringList;
vrai: boolean;
nCol, i: integer;
begin
vrai := true;
list := TStringList.Create;
try
nCol := 5;
for i := 0 to nCol-1 do
begin
if vrai then
begin
list.Add(IntToStr(i));
ShowMessage(IntToStr(list.Count));
end;
end;
finally
list.Free;
end;
end;