可以用函数或过程返回数组吗?(5分)

  • 主题发起人 主题发起人 jamers
  • 开始时间 开始时间
J

jamers

Unregistered / Unconfirmed
GUEST, unregistred user!
好象VB中可以的,在Delphi中可以处理数组吗?
例:
过程或函数test(var str1:string;temp:array of string):boolean;
这样可以将所带数组中的值处理或返回吗?
我没分了,只有这么点……
 
type
TTest = array of string;
test(var str1:string;temp:TTest):boolean;
 
谢谢,我去测试一下!
 
那不就是返回一个类,哦,不对,确切的说是结构体,俺磁盘上有一段,真要的话,留下
箱子?
 
jamers@sohu.com
谢谢
 
帮我看看,为什么这个不能编译?
把Function上的VAR去掉可以编译,但是运行的时候就出错…
如何能够实现……
type
Test=array of string;
function getStr(var str1:string;Ary:test):boolean;
var str2:tstrings;
i:integer;
begin
str2:=tstrings.Create ;
str2.CommaText :=str1;
setlength(ary,2);
for i:=0 to str2.count do
begin
setlength(ary,high(ary)+1);
ary[high(ary)]:=str2;
end;
str2.Destroy ;
result:=true;
end;
procedure TForm1.Button1Click(Sender: TObject);
var magic:array of string;
begin
getstr('dkk kfk kck kk',Magic);
showmessage(inttostr(high(magic)));
end;
 
可以考虑用指针啊...返回的时候返回一个指针,就像c++ builder一样
 
你还不清楚var的意思,建议看看object pascal。
看看下面修改后的代码。

type
Test=array of string;
function getStr(const str1:string;var Ary:test):boolean;
var str2:tstrings;
i:integer;
begin
str2:=tstringlist.Create ;
str2.CommaText :=str1;
setlength(ary,str2.Count);
for i:=0 to str2.count-1 do
begin
ary:=str2;
end;
str2.Destroy ;
result:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
magic:Test;
str: string;
begin
str := 'dkk kfk kck kk';
getstr(str,Magic);
showmessage(inttostr(high(magic)));
end;
 
哈哈,var 是变参,使用前一定要先声明。
 
可以用动态数组呀,可以作为函数的返回值
又不用担心内存泄漏,自动内存释放
 
其实影子说的var的办法也不错,其实就和cb的返回指针差不多
 
万分感谢,呵,不瞒各位,我刚从VB转向Delphi编程,呵
所以有很多地方不明白,呵,希望今后各位能多多指点…
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
911
SUNSTONE的Delphi笔记
S
后退
顶部