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