DELPHI 函數 返回 婁組??

yifan1008 2008-06-02 02:56:42
function blpshuzi(DD1,DD2:string;leib:integer):array[1..33] of integer;
begin
...

Result[0]:=45;
.
.
.
Result[33]:=545;

end;

為什么這樣不行?要怎才可以呢?
...全文
242 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
禹爸爸 2008-06-03
  • 打赏
  • 举报
回复
首先将array[1..33] of integer声明为一个类型,而后在引用该类型。
PS:你过程中的数组下标和你定义的不一致!!你的声明是从1..33,而在过程中你去是从0开始,这个肯定出错!!!
小呆之家 2008-06-03
  • 打赏
  • 举报
回复
其实原因很简单:
DELPHI不支持直接返回数组类型;
但我们可以想个办法绕一下子,那就是使用自定义数据类型,函数是支持返回自定义数据类型的.
比如1楼.
imho888 2008-06-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 GDTOPONE 的回复:]
在DELPHI中已有了常用变量的数组类型的声明,如下:

type

TIntegerDynArray = array of Integer;
TCardinalDynArray = array of Cardinal;
TWordDynArray = array of Word;
TSmallIntDynArray = array of SmallInt;
TByteDynArray = array of Byte;
TShortIntDynArray = array of ShortInt;
TInt64DynArray = array of Int64;
TLongWordDynArray = array of LongWo…
[/Quote]
firefox2000 2008-06-03
  • 打赏
  • 举报
回复
Delphi自定义的函数好像不能反回数组的,我一般都是用blazingfire的方法, 自定义一个记录类型,然后在函数中反回值.
GDTOPONE 2008-06-02
  • 打赏
  • 举报
回复
在DELPHI中已有了常用变量的数组类型的声明,如下:

type

TIntegerDynArray = array of Integer;
TCardinalDynArray = array of Cardinal;
TWordDynArray = array of Word;
TSmallIntDynArray = array of SmallInt;
TByteDynArray = array of Byte;
TShortIntDynArray = array of ShortInt;
TInt64DynArray = array of Int64;
TLongWordDynArray = array of LongWord;
TSingleDynArray = array of Single;
TDoubleDynArray = array of Double;

TBooleanDynArray = array of Boolean;
TStringDynArray = array of string;
TWideStringDynArray = array of WideString;


GDTOPONE 2008-06-02
  • 打赏
  • 举报
回复

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, ComCtrls, DB, ADODB;

type
TAgeData = array[0..5] of Integer;
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
ADOQuery1: TADOQuery;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
function lst(s:string):TAgeData;
implementation

{$R *.dfm}
function lst(s:string):TAgeData;
var
sl:TAgeData;
i:integer;
begin
Result:=sl;
for i :=low(Result) to High(Result) do
Result[i]:=strtoint(s)+i;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
vl:TAgeData;
i:integer;
begin
vl:=lst('1');
for i :=low(vl) to High(vl) do
memo1.Lines.Add(inttostr(vl[i]));

end;

end.

blazingfire 2008-06-02
  • 打赏
  • 举报
回复
為什么這樣不行?这...个,不知道!
改一下就可以
type
TMyArr = array[1..33] of integer;
.....
function blpshuzi(DD1,DD2:string;leib:integer):TMyArr;
begin
...

Result[0]:=45;
.
.
.
Result[33]:=545;

end;


16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧