1

对不起,我一直在问所有这些问题。无论如何,我的问题是我是否正确地将值转换为字符串?(不是 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.
4

1 回答 1

8

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

a := PAnsiChar(address);
于 2013-01-23T04:31:13.420 回答