内存补丁
以下是VC代码。我转换成DELPHI 出了错误,请大家分析下。VC代码运行正确。DELPHI编译是正确的,但运行出错。
struct delphi_string
{
DWORD len;
char text[256];
};
void AddChatString(LPCTSTR string, COLORREF b=0xffffff, COLORREF f=0)
{
DWORD p=0x00479AE0;
delphi_string d;
ZeroMemory(&d,sizeof(d));
d.len=strlen(string);
strcpy(d.text,string);
DWORD t=(DWORD)d.text;
__asm
{
push eax
push edx
push ecx
push f
mov ecx, b
mov edx, [t]
mov eax, 004F7D8Ch
mov eax, [eax]
call p
pop ecx
pop edx
pop eax
}
}
////////////DELPHI
Tdelphi_string = packed record
len : DWORD;
text : string[255];
end;
procedure AddChatString(sstring:PAnsiChar; b:DWORD;f:DWORD);
const
p=$00479AE0;
var
d:Tdelphi_string;
t:DWORD;
begin
ZeroMemory(@d,sizeof(d));
d.len:=strlen(sstring);
d.text:=sstring;
t:=dword(@d.text);
asm
push eax
push edx
push ecx
push f
mov ecx, b
mov edx, t
mov eax, [$004F7D8C]
mov eax, [eax]
call [p]
pop ecx
pop edx
pop eax
end;
end;