我正在研究 C++ Builder XE4 上的 AssertErrorProc。我发现delphi代码如下。
procedure AssertErrorHandler(
const iMsg, iFilename: String;
const iLineNo: Integer;
const iAddress: Pointer);
var
Err: String;
begin
Err :=
Format(
'%s (%s line %d @ %x)',
[iMsg, iFilename, iLineNo, Integer(iAddress)]);
ShowMessage(Err);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
AssertErrorProc = AssertErrorHandler;
Assert(false);
end;
我希望将上述内容转换为 C++ 代码,如下所示。
void __fastcall TForm1::AssertErrorHandler(const String iMsg,
const String iFilename, const int iLineNo,
const void* iAddress)
{
String Err;
Err = Format(L"%s (%s line %d @ %x)",
[iMsg, iFilename, iLineNo, Integer(iAddress)]); // E2188
ShowMessage(Err);
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
AssertErrorProc = AssertErrorHandler; // E2235, E2268
Assert(false);
}
我在编译代码时收到了两个错误。
在 Format() 语句 (E2188)
在分配 AssertErrorHandler (E2235, E2268)
我很感激我应该修改代码的任何信息。