有谁成功地使用过StrLower这个函数吗?(100分)

  • 主题发起人 guest2000
  • 开始时间
G

guest2000

Unregistered / Unconfirmed
GUEST, unregistred user!
to DreamTiger:
你写的例子运行正常且也有道理
不过不要拘泥于DELPHI帮助中的原例呀。虽然我也象小雨哥一样搞不清const数据是怎么被
保护起来的,当初看了strLower的代码时也能马上发现它改写const数据确实不正常,但问题
是我当时试了这样写也照样错,这个怎么解释?
var
S: PChar;
begin
S:= 'A fUnNy StRiNg';
Canvas.TextOut(5, 10, string(MyStrLower(S)) + ' ' + string(StrUpper(S)));

end;
 
D

DreamTiger

Unregistered / Unconfirmed
GUEST, unregistred user!
呵呵,我想你们没有搞清楚PChar的赋值方式。
S:= 'A fUnNy StRiNg';
这句话的含义是:
把一个字符串常量'A fUnNy StRiNg'的地址赋给S。
这里这个字符串常量不是动态分配给S的,而是在程序
启动的时候在堆栈中预先分配好的,所以说是个字符串
常量。这个常量的定义跟你定义S为变量还是常量没有
关系。

小雨哥的问题也在这里。
s1:='asdmfnbSDAKFHASDKJFxc,mvnkdj';
后,s1指向的也是堆栈中一个字符串常量的地址,
当然也不能修改。
 
G

guest2000

Unregistered / Unconfirmed
GUEST, unregistred user!
DreamTiger的说法看来很有道理,各位还有何高见^-^
 
J

jsxjd

Unregistered / Unconfirmed
GUEST, unregistred user!
同样的代码,D6 为什么能通过!!!!!!!
 
G

guest2000

Unregistered / Unconfirmed
GUEST, unregistred user!
你是说哪段代码D6能通过
贴出来?
 

小雨哥

Unregistered / Unconfirmed
GUEST, unregistred user!
TO:DreamTiger
按您的意思我从新改了一下测试代码,以便让 Delphi 更明确地告诉我发生了什么,
得到的结果是:Constant object cannot be passed as var parameter 。呵呵,没错。
 
G

guest2000

Unregistered / Unconfirmed
GUEST, unregistred user!
OK,看来还是DreamTiger说的对[:D]
 

Similar threads

I
回复
0
查看
629
import
I
I
回复
0
查看
578
import
I
I
回复
0
查看
1K
import
I
I
回复
0
查看
3K
import
I
顶部