TstringList:做返回之可以,但要注意stringlist的释放。用船只参数照样可以访问tstringlist;操作完后,你可以处理过程理处理的问题。 stringlist的释放再过程外处理。这样更安全,更符合常规的指针操作。 procedure GetastringList(var qList: TStringList); begin qList.Assign(ComboBox1.Items); //可以是其他的操作 end; 调用: var aList: TStringList; begin aList := TStringList.Create; GetastringList(aList);//处理stringlist showmessage(aList[0]); aList.Free;
大家看看我的代码为什么错? function GetStr:TStringList; var a:TStringList; begin a :=TStringList.Create; a.Add('dddddd'); Result:=a; A.Free; end;
哎,问题是在你的过程的内部就已经Free了,对象当然不存在了! function GetStr:TStringList; var a:TStringList; begin a :=TStringList.Create; a.Add('dddddd'); Result:=a; // A.Free; end; 调用: ar:=Getstr; .... ar.free;
stringlist的释放再过程外处理。这样更安全,更符合常规的指针操作。 procedure GetastringList(var qList: TStringList);
begin
qList.Assign(ComboBox1.Items);
//可以是其他的操作
end;
调用:
var
aList: TStringList;
begin aList := TStringList.Create;
GetastringList(aList);//处理stringlist
showmessage(aList[0]);
aList.Free;
function GetStr:TStringList;
var
a:TStringList;
begin
a :=TStringList.Create;
a.Add('dddddd');
Result:=a;
A.Free;
end;
function GetStr:TStringList;
var
a:TStringList;
begin
a :=TStringList.Create;
a.Add('dddddd');
Result:=a;
// A.Free;
end; 调用:
ar:=Getstr;
....
ar.free;
谢谢你,我通过了,按你说的,呵呵。
祝好运!