使用较新版本的 Delphi 时汇编代码中出现内存错误

inn6fuwd  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(176)

有人能告诉我为什么这段代码在 Delphi 7中可以工作,但在10.4版本中却有内存错误吗?

procedure ChatPrintf(ChatPrintMSG: PChar);
var
  ChatPrint: Cardinal;

  procedure ChatPrintASM(ChatPrintMSG: PChar); assembler;
  asm
    lea edx, [ChatPrintMSG]
    push edx
    call [ChatPrint]
    pop edx
  end;
begin
  ChatPrint := $009E0C30;
  ChatPrintASM(ChatPrintMSG);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  ChatPrintf('it: works');
end;
xfb7svmp

xfb7svmp1#

正如Andreas所提到的,默认的字符串类型已经改变了。最简单的方法是用pansichar替换pchar
新的定义是

procedure ChatPrintASM(ChatPrintMSG: PAnsiChar);

相关问题