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

enyaitl3  于 2023-03-22  发布在  其他
关注(0)|答案(1)|浏览(118)

很抱歉我一直在问这些问题。无论如何,我的问题是我是否正确地将值转换为字符串?(不是unincode字符串)。

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.
kzmpq1sx

kzmpq1sx1#

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

a := PAnsiChar(address);

相关问题