有一字符串Buf,ASCII码为#147,#0,#213,#121,#0,copy(Buf,1,4),只返回#147,不明白? (100分)

  • 主题发起人 主题发起人 lzhp
  • 开始时间 开始时间
L

lzhp

Unregistered / Unconfirmed
GUEST, unregistred user!
问题同上,请教,如何取回4个,最好有具体语句
 
S : String;
begin
SetLength(S, 4);
Move(Buf[1], S[1], 4);
 
#0是字符串结束符
 
buf:= 147#0#213#121#0
因為#0是結束符號,所以隻返回#147
 
只能用Buf直接内存操作,
大凡含#0的都不能用字符串,系统定义的,
不用多想了。
 
#0不能作为串字符,谁说的,不要乱讲!

S : String;
begin
SetLength(S, 4);
S:=#0#0#0#0;
Move(Buf[1], S[1], 4);的内容就是#147,#0,#213,#121,只是显示出来的为#147耳!

 
wql说得没错,Delphi的字符串并不以#0作为结束
Copy函数也不会理睬中间出现的#0字符,你已经取到了4位

所以说Copy得到的结果是对的,只是显示的时候显示不出来而已

下面的代码是最好的说明
var
s: String;
l1, l2: Integer;
begin
s := 'abcde'#0'12345';
l1 := Length(s);
s := Copy(s, 1, Length(s));
l2 := Length(s);
ShowMessage(IntToStr(l1) + ':' + IntToStr(l2));
//实际显示的内容为 "11:11"
end;
 
谢谢!学学!
 
多人接受答案了。
 
后退
顶部