这种定义为什么能编译通过(100分)

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

lbjsea

Unregistered / Unconfirmed
GUEST, unregistred user!
请问大虾:
定义这样一个函数 Procedure xxx(var Buf1);
buf1没有说明任何类型,却能通过,请问是为什么?
如何把它转换为String类型呢?
 
在Delphi帮助中查找:
untyped parameters,

procedure TForm1.aa(var bb);
begin
ShowMessage(String(bb));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
abb: String;
begin
abb := 'aa';
aa(abb);
end;
 
非常感谢您给出的方案,客户在string(bb)会有错误出现呀!
 
那你传入的参数是什么?
如果不是String类型当然可能出错了。比如如果传入整型,立马就甭叉。
如果你参数未知,不放使用Variant类型,不要用untype类型。
 
procedure TForm1.aa(var bb: Variant);
begin
ShowMessage(VarToStr(bb));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
abb: Variant;
begin
abb := 12;
aa(abb);
end;
 
在一个组件的事件中,它定义了如次的方法,为了程序需要,
我必须要在事件中对程序进行处理,不能由其它函数调用(aa(bbb))来实现.
 
不能外部函数来调用,
 
那你是否知道会有什么类型的参数传入?
如果知道,直接强制类型转换就可以了,否则,似乎就不好办了。。。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
913
SUNSTONE的Delphi笔记
S
X
回复
0
查看
498
xalion
X
D
回复
0
查看
839
DelphiTeacher的专栏
D
后退
顶部