Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Jpeg.LoadFromFile(). Bei ungültigen Bildern Fehler abfangen? (https://www.delphipraxis.net/102806-jpeg-loadfromfile-bei-ungueltigen-bildern-fehler-abfangen.html)

formosa 5. Nov 2007 11:30


Jpeg.LoadFromFile(). Bei ungültigen Bildern Fehler abfangen?
 
Hallo zusammen,

Ich bin gerade dabei mir ein kleines Programm zu schreiben, welches Jpeg's verkleinern kann.
Das ganze läuft bis jetzt recht gut.
Nur habe ich mich gestern gefragt was wohl passieren wird wenn ich eine ungültige Datei einlesen will. Also hab ich einfach ein Word Document in Dateiname.jpg umbennant.

Delphi-Quellcode:
var
  jpeg: TJPEGImage;
begin
  jpeg := TJPEGImage.Create;
  try
    jpeg.LoadFromFile(FName);
  finally
    jpeg.Free;
  end;
end;
Damit unterbricht der Compiler die Programmausführung mit der Fehlermeldung "....Jpeg Error Nr #53..." und das fertig compilierte Programm bricht an der Stelle einfach ab.

Was muss ich tun damit ich eine ungültige Datei erkennen kann und das Programm weiterläuft? Das heisst die restlichen Dateien im Ordner einliest?

Vielen Dank schon im voraus.

Chris

arbu man 5. Nov 2007 11:43

Re: Jpeg.LoadFromFile(). Bei ungültigen Bildern Fehler abfan
 
Die Struktur zum Fehler abfangen heißt try except.

Delphi-Quellcode:
 try
  Jpeg.LoadFromFile('...');
 except
   on Eception do begin // Exception Name verändern!
     Showmessage('Da lief was falsch...');
   end;
 end;
mfg, Björn

soulies 5. Nov 2007 13:58

Re: Jpeg.LoadFromFile(). Bei ungültigen Bildern Fehler abfan
 
du könntest auch vor zuweisung auf 'jpeg' auf die entsprechende Kennung von JPG Bildern prüfen ...

nur wenn die korrekte kennung [FFD8] vorhanden ist macht dein programm weiter



cya

formosa 5. Nov 2007 17:00

Re: Jpeg.LoadFromFile(). Bei ungültigen Bildern Fehler abfan
 
So gehts.

Delphi-Quellcode:
try
  Jpeg.LoadFromFile('...');
except
  on EInvalidGraphic do begin
    ShowMessage('Ungueltige Datei');
  end;
  Jpeg.Free;
end;
Auf korrekte Kennung prüfen möchte ich eigentlich nicht, da ich eh die Breiten und Höhen der Jpegs auslese. Wenn dabei auch gleich ungültige Dateien erkennen kann, mach ichs doch im gleichem Gang.

Dank euch beiden,

Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz