自建过程与调用问题! (100分)

  • 主题发起人 主题发起人 自我教育
  • 开始时间 开始时间

自我教育

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure dataset(var TableName:WideString;var CodeNumber,CodeName,Phoneticize:String);
begin
begin
TdmCodeManage.adotCode.TableName:=TableName;
TdmCodeManage.adotCode.Active:=True;
TfrmCodeManage.dbgCodeList.Columns[0].Title.Caption:=CodeNumber;
TfrmCodeManage.dbgCodeList.Columns[1].Title.Caption:=CodeName;
TfrmCodeManage.dbgCodeList.Columns[2].Title.Caption:=Phoneticize;
end;

end;
procedure TTfrmCodeManage.cbBasicCodeSelect(Sender: TObject);
begin
Case cbBasicCode.ItemIndex of
0:begin
//数据库设置
dataset('EnterpriseCode_TABlE','a','b','c');
end;

错误提示:type of actual and formal var paramers must be indentical

如何解决!谢了
 
'EnterpriseCode_TABlE'你把它转换成WideString;
用变量来保存这些值,retry!
 
procedure dataset(const TableName:WideString;const CodeNumber,CodeName,Phoneticize:String);
问题可能出在const上去掉试一试
 
这个没有错误,但是声明为动态变量,就有错误了
 
你的Dataset中的是TableName形参,要返回值的.
所以你在调用之前要定义一个变量
var tepTableName:Widestring;
begin
tepTableName :='EnterpriseCode_TABlE';
dataset(tepTableName,'a','b','c');
end;
你的Dataset中的tablename根本就没必要返回值,把var 去掉更好.
procedure dataset(TableName:WideString;var CodeNumber,CodeName,Phoneticize:String);


 
还漏了:
Dataset中的其它参数也就没必要返回值,把var 都去掉.
procedure dataset(TableName:WideString; CodeNumber,CodeName,Phoneticize:String);

 
如果函数/过程定义中的是var, 那么调用时一定要传一个变量,不能用常量.
所以,你要么改过程定义(去掉var),要么改调用(定义3个变量,然后将'a','b','c'分别赋值给变量再用变量作为参数去调用
 
poy请明示!还是不明白啊!谢谢!
var不是声明变量吗?为什么要返回值呢
 
function demo(var aa:int):int
begin
//运算中aa值有改变,假如变为aa:=aa+2
end;
则在主程序中将变量i:=3传给demo时——demo(i),会使i 的值发生改变,使i:=5,所以使用
var时,要传一个变量实参。所以不需要实参改变时最好用const定义。
可以找以前的课本看看值形参和变量形参的区别,基本的东东。
 
多人接受答案了。
 
后退
顶部