动态数组如何传入函数或者过程?(40分)

  • 主题发起人 主题发起人 wei0916
  • 开始时间 开始时间
W

wei0916

Unregistered / Unconfirmed
GUEST, unregistred user!
有一公共变量为动态数组VAR BUFF:ARRAY OF CHAR;
下面定义大小:
SETLENGTH(BUFF,4096);
接下来要将其传入到一个过程或者函数中,将数据写入到BUFF.但编译报错,不支持动态数组的传入;
Procedure Tform1.Writebuff( Var Buf : array of char;Start:Integer;Str : String);
Var I ,K: Integer;
P:Pchar;
begin
k := 0;
For I := Start to Length(Str) -5 do
begin
Buf := Str[K + 1];
k := k + 1;
end;
end;

如何解决以上问题呢.
 
先定义array of char类型,然后传类型进去。
type
MyArr=array of char;

Procedure Writebuff( Var Buf : MyArr;Start:Integer;Str : String);
Var I ,K: Integer;
P:Pchar;
begin
k := 0;
SETLENGTH(BUF,4096);
For I := Start to Length(Str) -5 do
begin
Buf := Str[K + 1];
k := k + 1;
end;
end;
 
能否用指针的形式来实现改变BUFF的内容呢
 
使用olevariant进行传递,在接受的函数中,重新定义一下数组即可
 
或者定义一个全局的数据类型,这个数据类型就是数组的数据类型,在传入参数时,使用这个数据类型也行。
 
最好不要定义全局数据类型,因为我这个WRITETOBUFF是单独运行的.
 
建議用Variant類型
 
既然是全局变量就不需要传参了,拿来用就完了。
for i := Low(Buf) to High(Buf) do
Buf := ....;
如果不是全局传参可以定义类型,或者Buf : array of char;
var Buf : array of char; -->> 不需要var
 
后退
顶部