VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 740|回复: 2

请教以函数方式给数组赋值的写法?

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-25 23:20:02 | 显示全部楼层 |阅读模式
Type
   CurrList = record
      iID : Integer;
      cCode : String;
      cField1 : String;
      cField2 : String;

Var
   Curr500 : Array Of CurrList;      

function LoadComboBox(ObjCurr:array of CurrList;ado:TAdoQuery):Boolean;
var
   iCount : integer;
begin
   iCount := 0;
   ado.First;
   While Not ado.Eof Do
   Begin
      iCount := iCount+1;
      ObjCurr[iCount-1].iID := ado.FieldByName('iID').AsInteger;
      ObjCurr[iCount-1].cField1 := ado.FieldByName('cField1').AsString;
      ado.Next;
   End;
end;

//初始化操作
SetLength(Curr500,ado.RecordCount);
LoadComboBox(Curr500,ado);

//调用时发现Curr500为空?  
Edit1.text := Curr500[iIndex].cField1;

//多谢
回复

使用道具 举报

0

主题

34

帖子

21.00

积分

新手上路

Rank: 1

积分
21.00
发表于 2020-2-15 22:00:01 | 显示全部楼层
用引用参数。如下:(注意多了个var)

function LoadComboBox( var ObjCurr:array of CurrList;ado:TAdoQuery):Boolean;
....
回复

使用道具 举报

0

主题

34

帖子

21.00

积分

新手上路

Rank: 1

积分
21.00
发表于 2020-2-15 23:45:01 | 显示全部楼层
测试通过:

Type
   CurrList = record
      iID : Integer;
      cCode : String;
      cField1 : String;
      cField2 : String;
end;

function LoadComboBox(var ObjCurr:array of CurrList):Boolean;
var
   iCount:integer;
begin
   for iCount := 1 to 11 Do
   Begin
      ObjCurr[iCount-1].iID := iCount;
      ObjCurr[iCount-1].cField1 := IntToStr(iCount);
   End;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Curr500 : Array[1..11] Of CurrList;
begin
  LoadComboBox(Curr500);
  Edit1.text := Curr500[1].cField1;
end;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表