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

いいえ、正しくありません。コードは1バイトずれています。まず、最初のバイトを無視して、文字列が少なくとも1文字の長さであると想定します。次に、余分な1バイトをコピーします。コードを大幅に簡略化できます。

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