关于字符串(0)

  • 主题发起人 yfoxyfox
  • 开始时间
Y

yfoxyfox

Unregistered / Unconfirmed
GUEST, unregistred user!
for (i=1;i<=length(str);i++)showmessage(string(@str));为什么不能正常显示?
 
W

wql

Unregistered / Unconfirmed
GUEST, unregistred user!
showmessage(string(@str));是C语言的格式,应该这样 showmessage(string(str));
 
Y

yfoxyfox

Unregistered / Unconfirmed
GUEST, unregistred user!
str是单个字符,可以正常运行@str是从第i个字符开始的字符串?运行时@str[1]是正常显示的,后面就报错了
 
A

autumn

Unregistered / Unconfirmed
GUEST, unregistred user!

地质灾害

Unregistered / Unconfirmed
GUEST, unregistred user!
string前面8个字节是引用计数和长度。所以你showmessage(string(@str[1]))是正常的。后面的报错是因为把一部分字符串的内容当作引用计数和长度了。showmessage(str)不报错是因为构造了一个新的只包含一个字符的string。
 
Y

yfoxyfox

Unregistered / Unconfirmed
GUEST, unregistred user!
明白了。我看到一本书上说 pos(subStr,string(@Sourcestring))这样的代码可能会发生致命错误,它会修改Sourcestring字符串?不理解。
 

地质灾害

Unregistered / Unconfirmed
GUEST, unregistred user!
反汇编看看是如何编译pos(subStr,string(@Sourcestring))的就知道了。书上说什么不可尽信 自己试过才知道。
 
W

wql

Unregistered / Unconfirmed
GUEST, unregistred user!
原来你要显示后面所有的,呵呵,简单啊:str:=str+#0#0
// 必须加for (i=1;i<=length(str);i++) showmessage(string(PChar(@str)));
 

Similar threads

顶部