dbedit.text 应该是string 类型吧?答疑者:送出100分!!!!(100分)

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

HAPPYBAB

Unregistered / Unconfirmed
GUEST, unregistred user!
我定义了这样一个函数
function subdatacheck(var editstr:string;var index :integer):boolean;
可是当我调用时,用dbedit.text 传入editstr ,如下所示:
subdatacheck(dbecfxcd.Text,1)
编译时,老是报错:Types of actual and formal var parameters must be identical;
我不明白,难道dbedit.text 不是字符串类型吗?
请各位高手指教,送出100分!!!
 
dbedit.text确定无疑是字符串类型。
你把函数中的var去掉
function subdatacheck(editstr:string;var index :integer):boolean;
 
不行,还是编译不过,同样得出错!
 
DBEdit 的Text属性是TMaskedText类型的。
TMaskedText 的定义是:
type
TMaskedText = type string;
经过这样的定义,在TMaskedText用于赋值目的时,它就转换为String类型。但是在用作
Var与Out参数时,则与String不兼容。
你的程序出错,是因为你的dbecfxcd.Text是 TMaskedText 类型的,在用作
Var与Out参数时,与String不兼容,不能作为Var参数。
而你在函数定义时,把它定义为Var参数了:
var editstr:string;
把editstr前面的Var去掉也许就行了。
 
text是tcaption类,所以在参数中直接用会出错,你先把它付给一个string变量,然后
再传进参数中用
 
我试了:
var s:string;

s:=dbecfxxh.text;
subdatacheck(s,0)

还是不行!
 
呵呵,看走眼了,你这是dbedit的text,应该是象bahl说的,是tmaskedtext类
 
我知道是为什么了!
关键在这一句:var index :integer
由于index前面有个var,所以你不能直接把常量或数字传递给index,如
subdatacheck(edit1.Text,1)
而应该这样:
var
s:integer;
s:=1;
subdatacheck(edit1.Text,s)
 
试了一下,把声明中的var去了就没问题了
 
to:bahl
我也试了,确实是这样
 
多谢三位大侠!!
送分!!!
 
来晚了:(
function subdatacheck(var editstr:string;var index :integer):boolean;
可是当我调用时,用dbedit.text 传入editstr ,如下所示:
subdatacheck(dbecfxcd.Text,1)
两处错误啊
其实最好是
function subdatacheck(const editstr:string;index :integer):boolean;
因为看你的函数名称,不需要返回这两个值。
 
同样谢谢shenloqi,只可惜有点晚了,你的建议很好,希望以后多多合作!
 
后退
顶部