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 ファイルが空なので、例外が発生する理由がわかりました。しかし、標準の例外ではなく、独自のシステムを使用して処理したいと考えています。