动态数组(100分)

  • 主题发起人 主题发起人 hlwbn
  • 开始时间 开始时间
H

hlwbn

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure abc(var s:array of integer);
这里如果我在过程里设置 setLength(s,长度),编译时会出现“imcompatible type”
的错误,这个是怎么回事?
我要这么用的话,怎么解决呀?
 
是类型不匹配
 
把 procedure abc(var s:array of integer);里的 var 去掉看看
 
去掉也不行
 
兄弟这是个形参啊!你的实参长度定义了么 匹配么
 
procedure abc(var s:array of integer);
好象不能直接传,要重新定义类型,Tproc = array of integer;
procedure abc(var s:Tproc);
setLength(s,长度)本身没问题
 
const PacketLen:=1024;
type
TPacket=array[1..PacketLen] of char ;

procedure abc(APackets:array of TPacket;)

这样用有什么问题请指正
 
TPacket=array[1..PacketLen] of char ;//本身是个一维数组
procedure abc(APackets:array of TPacket;);//这回让你弄成二维了,而且还不能这么传参数,写的还是错的
 
改怎样传参数?
 
const PacketLen:=1024;
type
TPacket=array[1..PacketLen] of char ;

procedure abc(APackets:TPacket;)
 
setLength(s,长度),
还是出错
 
已经定义 PacketLen:=1024,就不要再 setLength 了。
 
这样试试:
TIntegerDynArray Declare in Types Unit;
procedure abc(S :TIntegerDynArray);
 
type
TA =Array of integer;
//……………………
procedure abc(var s:ta);
 
foxphone2003,正确
 
定义一个最大的max值.array [0..max] of integer
 
procedure TForm1.Button1Click(Sender: TObject);
type
arr = array of string;
procedure reset(var bbb:arr);
var
ii:integer;
begin
setlength(bbb,5);
bbb[3]:='333';
bbb[4]:='444';
for ii:=0 to high(bbb) do
Memo1.Lines.Add(bbb[ii]);
end;
var
aaa:arr;
begin
setlength(aaa,3);
aaa[0]:='000';
aaa[1]:='111';
aaa[2]:='222';
reset(aaa);
end;
 

Similar threads

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