作了个小程序,其中需要使用TStrings类作为一个函数的返回值,但本人总是调试不成功,不知是我程序的问题,还是本身这种方法就行不通!!请各位高手帮忙解决一下,先谢过了!源程序如下:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function ReturnStrings(s: String): TStrings;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}function TForm1.ReturnStrings(s: String): TStrings;
var
StringList: TStrings;
begin
StringList := TStringList.Create;
try
StringList.Add('111');
StringList.Add('s');
finally
Result := StringList;
StringList.Free;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
sl: TStrings;
str: String;
begin
sl := TStringList.Create;
str := '111';
try
sl := ReturnStrings(str);
showmessage(IntToStr(sl.Count));
finally
sl.Free;
end;
end;end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function ReturnStrings(s: String): TStrings;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}function TForm1.ReturnStrings(s: String): TStrings;
var
StringList: TStrings;
begin
StringList := TStringList.Create;
try
StringList.Add('111');
StringList.Add('s');
finally
Result := StringList;
StringList.Free;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
sl: TStrings;
str: String;
begin
sl := TStringList.Create;
str := '111';
try
sl := ReturnStrings(str);
showmessage(IntToStr(sl.Count));
finally
sl.Free;
end;
end;end.
function TForm1.ReturnStrings(s: String): TStrings;
var
StringList: TStrings;
begin
StringList := TStringList.Create;
try
StringList.Add('111');
StringList.Add('s');
finally
Result := nil;
StringList.Free;
end;
Result := StringList;
StringList.Free;
end;
function TForm1.ReturnStrings(s: String): TStrings;
var
StringList: TStrings;
begin
StringList := TStringList.Create;
try
StringList.Add('111');
StringList.Add('s');
finally
Result := nil;
StringList.Free;
Exit;
end;
Result := StringList;
StringList.Free;
end;
StringList.Add('s');
这里的引号是不是不需要呢?
没有传递过去。
begin
Result:= TStringList.Create;
try
Result.add('111');
Result.add('s');
except
exit;
end;
end;然后用你的BUtton事件里的代码就可以出现2的提示框!
function ss(Sd:TStrings):Tstrings;
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}function TForm1.ss(Sd:TStrings):Tstrings;
begin
sd.Add('aa');
sd.Add('bb');
Result := sd;
end;procedure TForm1.Button1Click(Sender: TObject);
var Sd:TStrings;
begin
Sd := TStringList.Create;
Try
cb.Items := ss(Sd);
Except
Sd.Free;
End;
end;詳見:http://expert.csdn.net/Expert/topic/1568/1568838.xml?temp=9.096926E-02