我在 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 文件是空的。但我想使用我自己的系统来处理它,而不是标准异常。