如何从函数返回 Stringlist 之前已经讨论过很多次了。我的代码序列版本 1 只是回顾如何做到这一点。
function GetStrings : TStringList;
begin
Result := TStringList.Create;
Result.Add('string A');
Result.Add('string B');
end;
procedure TForm1.Button1Click(Sender: TObject);
var stemp : tStringList;
begin
stemp := GetStrings;
MyListBox.items.addstrings(stemp);
stemp.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
MyListBox.items.addstrings(GetStrings);
end;
Run Code Online (Sandbox Code Playgroud)
是否有任何选项可以通过“无额外代码”来修复版本2中的内存泄漏,这种方法到底有多危险,如果我的字符串列表只是几个字符串项目,这会导致任何失败吗?内存不足问题不会发生吗?
Uwe*_*abe 14
不要使用TStringListas 结果类型,而是使用TArray<string>. 当然,这使得version1过时了。
function GetStrings : TArray<string>;
begin
var lst := TStringList.Create;
try
lst.Add('string A');
lst.Add('string B');
Result := lst.ToStringArray;
finally
lst.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)