要在一个过程中传递一个动态二维数组,作参数,应该怎么写? (50分)

  • 主题发起人 主题发起人 lingm
  • 开始时间 开始时间
L

lingm

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure PopClick(var Aqr:TADOQuery;Dts:TDataSource;TabName:string;
Cond:string;*******);
***是动态的,可能是A,或B,或C
 
自己顶[:(]
 
你的二维数组常量是怎么定义的?写出来看看。
 
Jud_name:array[0..4,0..1] of string=
(('Jud_theme' , '判断题' ),
('Jud_Answer' , '答案' ),
('Jud_notes' , '备注' ),
('Jud_person' , '命题人' ),
('Jud_No' , '出现次数'));
这是一个,还有一堆,长度不定,像单选,多选,问答,之类的






 
procedure PopClick(var Aqr:TADOQuery;Dts:TDataSource;TabName:string;
Cond:string;Jud_name:array[0..4,0..1] of string)
 
既然是常量,为什么还要作为函数的参数呢?
它已经是一个全局的常量了嘛,你到处都可以直接用。
干嘛要传入常量,真是搞不懂。
 
楼上没明白我的意思,我的参数是不定长的二维动态数组
这是一个,还有一堆,长度不定,像单选,多选,问答,之类的
Jud_name,***1_name,***2_name,***3_name
 
过程不能直接传递二维数组。可以这样
type
TMyArray = array[0..4,0..1] of string;
var Jud_name:TMyArray;
procedure PopClick(var Aqr:TADOQuery;Dts:TDataSource;TabName:string;
Cond:string;Jud_name:TMyArray)
 
同意yostgxf兄的作法,呵呵[blue][/blue][h1][/h1]
 
用的时候像这样:
PopClick(aqr_Judge,dts_Judge,
'Judgement','',Jud_name);

PopClick(aqr_Judge,dts_Judge,
'**1','',{其他常量,like **1_name,**2_name});
常量长度可能是[0..4,0..1],也可能是[0。。8,0。。1]。。。。。
 
那这样:
type
TMyArray = array of array of string;
使用的时候定义长度
 
干脆用Variant算了。
请看VarArrayCreate!
 
我的全是string,不需要Variant的
其实就是动态数组作参数,到用的时候把要用的常量数组copy过去
不知道可不可以?
 
Variant也可以是动态数组!

这样吧:

type
TMyArray = array of string;
TMyArrayTW=array of TMyArray
var Jud_name:TMyArray;
procedure PopClick(var Aqr:TADOQuery;Dts:TDataSource;TabName:string;
Cond:string;Jud_name:TMyArrayTW)

 
是不是动态二维数组不能作参数阿?
我用一维的,编译就能通过:(
 
procedure PopClick(var Aqr:TADOQuery;Dts:TDataSource;TabName:string;
Cond:string;Jud_name:variant)

用VARIANT不是很好吗?
 
to hnxx2003
Incompatible types: 'Variant' and 'Array'

to lichaogang,
看样子不错,但是我的const Array怎么传递进去呢?
Incompatible types: 'TMyArrayTW' and 'Array'
 
你在传递前就要创建VARIANT数组才行的;
function getvariantarray(const value:integer);variant
var
v:variant;i,j:integer;
begin
v:=vararraycreate([0,value,0,value],variant);
for i:=0 to value-1 do
for j:=0 to value-1 do
v[j,i]:='you value';
result:=v;
end;
 
再回来
要在一个过程中传递一个动态二维数组,作参数,应该怎么写
实在不行,我拆成两个一维数组来做
 
说实话我真的没有明白,const array是什么意思?如果是Const,为什么还要做参数?在过程里直接引用不就是了?
 

Similar threads

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