我希望使用count属性来计数TStringList中的项目数(字符串)。TStringList.Count返回我"-307586000“为什么?
这是我在拉撒路的代码:
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;伙计们。
发布于 2018-04-02 18:00:25
当通过对象变量而不是类类型调用构造函数时,需要将list.Create;更改为list := TStringList.Create;,构造函数将像普通方法一样被调用。实际上没有创建任何TStringList对象,因此调用list.Add()和list.Count是未定义的行为。幸运的是,您的代码没有简单崩溃。
另外,在使用完list.Free;之后,不要忘记调用list。
试试这个:
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;https://stackoverflow.com/questions/49616252
复制相似问题