初级问题:为什么我把例如:EDIT1.text作为VAR参数传给过程或函数时,提示“不能将常量型对象作为VAR参数”?(30分)

  • 主题发起人 主题发起人 demonP
  • 开始时间 开始时间
D

demonP

Unregistered / Unconfirmed
GUEST, unregistred user!
我想,text肯定不是它所说的常量对象吧,我可以修改它的,难道是EDIT1?似乎是
所有PUBLISHED的对象都有这个现象,但我好象没发现OP有这样的规定啊!
 
指针的原因
 
能否说得稍微详细一点?谢谢
 
建议你先定义个变量
然后用这个变量做参数
 
edit1.text 只能做为值传递,好像它的地址是随机的,你可以先赋值给一个变量,
用变量处理完毕后,再赋值给edit1.text
 
问题应该是这样的,text是一个属性,属性对应的是一个方法,也就是一个函数的入口地址,当使用读方法时
函数的结果在栈中返回,也就是这个地址是不确定的,甚至可能在寄存器中,编译器无法为一个不确定的地址生成
你要的代码
 
同意楼上,
Text是用property定义的,不是一个指,是由函数返回值的。
 
同意楼上,变量的地址是在编译时由编译程序决定的,对于一个属性来说,无法直接做为一个
变量传递。
 
一句话,属性不可以作为变参传递
 
做值参是可以的。
 
谢谢NoSwing和其他的朋友,我想我明白了,简单的说是因为函数的返回值不能出现在
等号左边(也就是左值),它是一个常量,可以这么理解吧?因为很明显,调用完后栈会
清除,返回值自然也就无效了。

还有,既然各位高手提到了一些编译方面的内容,我想顺便请教一下,对于形如:
proc1(proc2(...),v1,v2...) 的调用,在调用过程中栈的情况是怎么样的呢?
我想首先是应该调用PROC2,紧接着调用PROC1,我想知道的是PROC2的返回值是不是
有个什么临时的变量储存着呢?应该不能只靠栈来存储,因为PROC1一调用,栈的内容就
会改变了。

对不起,问了这么多问题,却只有30分,XIXI ,大富翁怎么没有EXPERTEXCHANGE的调整
分数的功能。
 
对不起,分数有限,只能给NOSWING大侠了,其他的朋友只能说声谢谢了,
还请以后多多指教
 
谢了!
你上面的问题说的也有道理。
不过Proc2调用后直接将结果,压入栈中,proc1 直接使用,应该是最合理的。这次不要分数了,给别人吧。
 
后退
顶部