У меня есть проект на C ++ Builder6.Есть OpenDialog, где я загружаю изображения в проект.Я бы хотел, чтобы мой проект был безопасным, и поскольку он принимает только изображения .jpg или .bmp, я решил наложить ограничение.Насколько я могу судить, я могу распознать файл .jpg, установив мой потоковый ридер на 4-ю позицию.Если я найду здесь «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 пуст.Но я бы хотел справиться с этим, используя мою собственную систему, а не стандартное исключение.