将string 类型的变量的值附给pchar 类型,会出错奇怪的错误(20分)

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

yuejun

Unregistered / Unconfirmed
GUEST, unregistred user!
//S 是STRING 类型, tstr是pchar 类型,
执行下面代码后:
for i := 0 to length(s)-1 do
begin
tstr := s[i+1];
end;
如果S=123456 , 那么最终的tstr = 123456.dll 这是什么原因啊?
 

tstr:=pchar(s);
不就行了么?
何必如此麻烦
 
你是通过什么方法看到tstr=123456.dll的呢?
 
如果一定要用这个方法
要注意:
DELPHI中的STRING是动态分配内存的,所以物理存储机构不一定是连续的
所以不能用s[i+1];
 
for i := 0 to length(s)-1 do
tstr := s[i+1];
tstr[length(s)]:=Chr(0);
 
楼上说的对PCHAR需要一个结束符/0
在DEPHI中的STRING的访问已经将存储的问题考虑在内了,这样用户就不需要考虑实际的存储状态了吧,可能我的理解有误
 
Leechang 朋友是对的, 谢谢大家
 
to leechang 下好意思请教一下
tstr[length(s)]:=Chr(0)

怎样理解?
wuyou9981@hotmail.com
谢谢!
 

Similar threads

I
回复
0
查看
737
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
421
import
I
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部