0

C++ Builder6 のプロジェクトがあります。プロジェクトに画像をアップロードする OpenDialog があります。プロジェクトを安全にしたいのですが、.jpg または .bmp 画像しか受け付けないため、制限を設けることにしました。私に関する限り、ストリーム リーダーを 4 番目の位置に設定すると、.jpg ファイルを認識できます。ここに「JFIF」があれば.jpegファイルです。等々。これが私のコードです

if(OpenDialog1->Execute()) 
{
    TFileStream *stream = new TFileStream(OpenDialog1->FileName, fmOpenRead);
    if(stream != NULL) 
    {
        if(stream->Size < 10) 
        {
            delete stream;
            return;
        }
        char str[10];
        stream->Read(str, 10);
        if(AnsiString(str + 6).SetLength(4)=="JFIF")
        {
            ShowMessage("It's jpeg");
        }
        else if ( AnsiString(str).SetLength(2)=="BM") {
            ShowMessage("It's bmp");
        }
        else
        {
            ShowMessage("It can not be downloaded");
            return;
        }
    }
    delete stream;
}

しかし、残念ながら、拡張子の名前を変更したテキスト ファイルをここに置くと、そのコードは JPEG エラー #41 に関する例外を発生させます。

ここに画像の説明を入力

だから私の考えはうまくいきません。全体の問題は、try-catch メソッドを使用せずに、プログラムにエラー メッセージを返させることはできますか?


ちなみに、jpeg ファイルが空なので、例外が発生する理由がわかりました。しかし、標準の例外ではなく、独自のシステムを使用して処理したいと考えています。

4

0 に答える 0