AnsiStringの連結処理でプログラムを強制終了させない

"+"演算子を用いてAnsiStringを連結する際に例外が発生すると、ダイアログでエラーメッセージが表示された後、プログラムは強制終了します。例えば、次のような状況です。
        // GetResultが例外を送出すると、プログラムは強制終了する
        Memo1->Lines->Add(AnsiString("Result: ") + GetResult());
これに対処するには、"+"演算子以外の方法でAnsiStringを連結するようにします。AnsiString::sprintfを用いる(対策1)、文字列各部を変数として確保する(対策2)、といったものが考えられます。
対策1:
        Memo1->Lines->Add(AnsiString().sprintf("Result: %s", GetResult().c_str()));

対策2:
        const AnsiString part1 = "Result: ";
        const AnsiString part2 = GetResult();
        Memo1->Lines->Add(part1 + part2);
なお、この問題は、WideStringの連結処理では起きません。
最終更新: 2008-07-19

戻る