将零终止的字节的原始缓冲区复制到String

时间:2013-01-23 04:18:44

标签: delphi type-conversion ansi

对不起我一直在问的所有这些问题。不管怎么说,我的问题是 我正确地将值转换为字符串吗?(不是非字符串字符串)。

const
address:dword=$0057B568;
var
a:string;
len,i:dword;
begin
len:=0;
repeat
inc(len);
until ((pbyte(address+len)^=0));//and(pbyte(address+1)^=0));(for unincode)

for I:=0 to len do
a:=a+chr(pbyte(address+I)^);
//stringreplace(a,#0,'',[rfreplaceall,rfignorecase]);
MessageBox(0,pchar(a),'',0);
end.

1 个答案:

答案 0 :(得分:8)

不,这不对。代码关闭了一个字节。首先,它通过忽略第一个字节来假定字符串至少有一个字符长。接下来,它复制一个额外的字节。您的代码可以大大简化:

a := PAnsiChar(address);