L longwx Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-09 #1 为什么str(1,Edit1.Text);语法错,而str(1,string1);则可以?Edit1.Text不也是string吗? 另外,在system.pas中怎么找不到procedure str( )源代码?
为什么str(1,Edit1.Text);语法错,而str(1,string1);则可以?Edit1.Text不也是string吗? 另外,在system.pas中怎么找不到procedure str( )源代码?
W wuyi Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-09 #2 1.procedure Str(X [: Width [: Decimals ]] var S);这里S要求是变量. 2.我也没找到.
T tigerking Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-09 #3 Edit1.Text虽然也是String,但它是不能作为一个参数的。
L Liu JZX Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-09 #5 str中的S为变参,需要返回值,故不能用EDIT1.text
Z zhaoyipeng Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-09 #6 Edit1.Text是一个属性,不能作为变参传递
K kokusan Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-09 #7 Edit1的Text属性虽然是一个String,但是Edit1.Text却是一个指针。你可以 令I := SizeOf(Edit1.Text) 不论Edit1.Text为何值,I始终等于4(一个指针占 4个字节)。因此,str(1,Edit1.Text);是错的,同时可能是由于Delphi编译器的 原因,也不能用^去赋值。其它类的类似string属性也发现有相同的例子。
Edit1的Text属性虽然是一个String,但是Edit1.Text却是一个指针。你可以 令I := SizeOf(Edit1.Text) 不论Edit1.Text为何值,I始终等于4(一个指针占 4个字节)。因此,str(1,Edit1.Text);是错的,同时可能是由于Delphi编译器的 原因,也不能用^去赋值。其它类的类似string属性也发现有相同的例子。
A Another_eYes Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-09 #9 edit1.text不应该称为指针, sizeof(edit1.text)取到的实际是个函数入口地址的大小. 不能用^赋值因为它并不是个指向存储文本的内存块的指针. 读取edit1.text时实际是在调用edit类中一个private函数gettext. 给edit1.text赋值时实际上是在调用edit类中一个private的过程 settext.
edit1.text不应该称为指针, sizeof(edit1.text)取到的实际是个函数入口地址的大小. 不能用^赋值因为它并不是个指向存储文本的内存块的指针. 读取edit1.text时实际是在调用edit类中一个private函数gettext. 给edit1.text赋值时实际上是在调用edit类中一个private的过程 settext.
K kokusan Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-09 #10 是我错了,不好意思。不过我发现任一个 s: string; I := SizeOf(s); 的返回值均为4,所以我觉得与是否调用gettext,settext无关,而是由Delphi存储 方式决定的,它可能采用了类似COM的引用计数的方法,s的实际值在没有改变的情 况下在内存中只有一个备份,而对外显露的s其实是指向s的实际值的指针,因此I才 始终等于4。
是我错了,不好意思。不过我发现任一个 s: string; I := SizeOf(s); 的返回值均为4,所以我觉得与是否调用gettext,settext无关,而是由Delphi存储 方式决定的,它可能采用了类似COM的引用计数的方法,s的实际值在没有改变的情 况下在内存中只有一个备份,而对外显露的s其实是指向s的实际值的指针,因此I才 始终等于4。
Y YoYoYo Unregistered / Unconfirmed GUEST, unregistred user! 1999-09-12 #11 procedure Str(X [: Width [: Decimals ]] var S); X is an integer-type or real-type expression. Width and Decimals are integer-type expressions. ~~~S is a string-type variable (!变量)or a zero-based character array variable(!数组变量) if extended syntax is enabled.
procedure Str(X [: Width [: Decimals ]] var S); X is an integer-type or real-type expression. Width and Decimals are integer-type expressions. ~~~S is a string-type variable (!变量)or a zero-based character array variable(!数组变量) if extended syntax is enabled.