读书人

请看看小弟我的动态数组的函数为什么

发布时间: 2012-02-27 10:00:22 作者: rapoo

请看看我的动态数组的函数,为什么报错?
请问一下,一个函数返回值是动态数组,如何分配这个函数的地址啊。
type
TMyArray = array of array of string ;
TForm_fbt = class(TForm)
...
public
function setbg(sl:Tstringlist):TmyArray;

function Tform_fbt.setbg(sl:Tstringlist):TmyArray;
var Ttemparray: TmyArray;
i,j,k,k1,k2,k3,k4:integer;
a:array[0..9] of integer;
sl1,sl2,sl3:Tstringlist;
str:string;
begin
setlength(Ttemparray,sl.Count+1,160);
....
result:= Ttemparray;

end;

然后我调用数组函数

high(setbg(sl1)) 这样就报错了。。。。

最后返回结果时报错。是什么原因啊?

[解决办法]
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;

type
TMyArray = array of array of string ;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function setbg(sl:Tstringlist):TmyArray;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

function TForm1.setbg(sl: Tstringlist): TmyArray;
var
Ttemparray: TmyArray;
i,j,k,k1,k2,k3,k4:integer;
a:array[0..9] of integer;
sl1,sl2,sl3:Tstringlist;
str:string;
begin
setlength(Ttemparray,sl.Count+1,160);
Result:=Ttemparray;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
strList:Tstringlist;
begin
strList:= Tstringlist.Create;
strList.Add( '123 ' );
strList.Add( '123 ' );
strList.Add( '123 ' );
showmessage( IntToStr( high(setbg(strList)) ) );
end;

end.
--执行结果

---------------------------
Project1
---------------------------
3
---------------------------
OK
---------------------------

[解决办法]
不可能是这个问题

setlength(Ttemparray,sl.Count+1,160);
....//这部分代码会不会有问题?
result:= Ttemparray;

读书人网 >.NET

热点推荐