C++ Builder XE4 で AssertErrorProc を勉強しています。次のようにデルファイコードを見つけました。
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);
}
コードのコンパイル中に 2 つのエラーを受け取りました。
Format() ステートメントで (E2188)
AssertErrorHandler の割り当て時 (E2235、E2268)
コードを変更する必要がある情報をいただければ幸いです。