c ++ - Sådan håndteres JPEG # 41 fejl

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et projekt i C ++ Builder6. Der er en OpenDialog, hvor jeg uploader billeder til projektet. Jeg synes, at mit projekt er sikkert, og fordi det kun accepterer .jpg eller .bmp billeder, besluttede jeg at begrænse. Så vidt jeg er bekymret kan jeg genkende en .jpg-fil ved at indstille min strømlæser til 4. position. Hvis jeg finder 'JFIF' her, vil det være .jpeg-fil. Og så videre.
Her er min kode


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;
}


Men desværre opstiller denne kode en undtagelse om JPEG-fejl nr. 41, når jeg lægger her en tekstfil med omdøbt udvidelse.


Indtast billedbeskrivelse her


Så min idé virker ikke. Hele spørgsmålet er:
Kan jeg få mit program til at returnere mine fejlmeddelelser uden at bruge prøvefangstmetode?





Forresten forstår jeg, hvorfor undtagelsen opstår, fordi min jpeg-fil er tom. Men jeg vil gerne håndtere det ved hjælp af mit eget system, ikke standard undtagelsen.

Bedste reference