一个关于Stream的问题,不知是我做错还是delphi做错?(100分)

  • 主题发起人 主题发起人 huopen
  • 开始时间 开始时间
H

huopen

Unregistered / Unconfirmed
GUEST, unregistred user!
var a: TStringStream;
Path: Pchar;
tt: string;
begin
tt := '12345678';
a := TStringStream.Create(tt);
getmem(Path, length(tt));
a.Read(path^, length(tt));
showmessage(inttostr(strlen(path)));
showmessage(string(path));
freemem(Path);
a.free;
end;
在D5执行这段代码showmessage(string(path))显示正确,而showmessage(inttostr(strlen(path)))
却是得到11的结果,我发现只要a.Read(path^, 8)就会出现这个问题。
在D6中,在一个按钮下执行,按1,2次得到8,按第3次开始得9。
请问大家知道吗?
 
delphi错!!
 
两处问题:
1。给Pchar申请空间时应多申请一个字节,用来存放结尾的#0
getmem(path,length(tt)+1);
2。getmem后,最好用fillchar清扫一下所申请到的空间:
fillchar(path^,loength(tt)+1,0);
 
这算不算规律?
1-6字符 : 显示:6
7字符: 显示:7
8字符以上:显示:18
。。。 。。。
 
一个过客
说的是对的。
pchar是一个C的字符串
 
接受答案了.
 
后退
顶部