Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Prüfen ob es sich um ein Bild handelt


schlumsch - Di 15.12.09 22:02
Titel: Prüfen ob es sich um ein Bild handelt
Hallo,

ich möchte die Files aus einem Dir prüfen ob es sich um ein Bild handelt und dann damit "etwas" machen. Nun kann ich mir mit extractfileext die Endung holen und daraufhin entscheiden ... soweit klar... aber da gibt es doch sicher auch eine andere Lösung oder?

Meine Idee ist die folgende:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Function isPicture(filename:String):boolean;
begin
 try
 formdirectoryselect.image1.Picture.LoadFromFile(filename);
 result := true;
 except
 result := false;
 end;
end;


Alledings habe ich da das Problem, dass mein Programm leider dennoch unterbrochen wird und "abstürzt". Habe ich da was beim Exceptionhandling falsch gemacht?

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.


Xentar - Di 15.12.09 23:14

Starte das Programm mal ohne Delphi..


Narses - Di 15.12.09 23:30

Moin!

user profile iconschlumsch hat folgendes geschrieben Zum zitierten Posting springen:
aber da gibt es doch sicher auch eine andere Lösung oder?

Meine Idee ist die folgende:
Du willst nicht wirklich die Datei laden, um zu prüfen, ob das ein Bild ist, oder?! :shock: Das dürfte der Performance-Killer schlechthin sein. :!:

Sicher ist die Methode die Dateierweiterung zu analysieren nicht 100%ig, aber auf jeden Fall um krasse Längen schneller! :nixweiss:

cu
Narses


schlumsch - Mi 16.12.09 00:07

Hmm echt? Und ich war schon stolz auf meine Idee mit dem Image *g* :)


elundril - Mi 16.12.09 02:41

Haben nicht so ziemlich alle Grafikformate einen Header den man auslesen könnte? Der wäre dann ja denk ich nicht so groß und man könnte ihn ja auch bequem auslesen.

lg elundril


jaenicke - Mi 16.12.09 02:56

user profile iconschlumsch hat folgendes geschrieben Zum zitierten Posting springen:
Hmm echt? Und ich war schon stolz auf meine Idee mit dem Image *g* :)
Nur dass da auch nur an Hand der Dateierweiterung geprüft wird um welches Format es sich handelt. Und wenn diese zu keinem passt oder das Bild nicht entsprechend der Erweiterung geladen werden konnte, gibt es eine Exception.

Insofern kannst du auf diese Weise niemals ein Bild in einer falschen Erweiterung erkennen. Du kannst so maximal feststellen, wenn eine Datei mit einer bekannten Bild-Dateierweiterung nicht entsprechend geladen wird...

Und da Delphi nur sehr wenige Formate kennt, wirst du also nur sehr wenige der Bildformate so erkennen können. Von den genannten Performanceproblemen einmal ganz abgesehen, das wurde ja schon gesagt.


schlumsch - Mi 16.12.09 11:03

Hmkay dann entscheide ich einfach aufgrund der Dateiendung... gibt zwar ne größere if-scghleife aber was solls. Dank euch jedenfalls, lg


Tastaro - Mi 16.12.09 11:10

user profile iconschlumsch hat folgendes geschrieben Zum zitierten Posting springen:
Hmkay dann entscheide ich einfach aufgrund der Dateiendung... gibt zwar ne größere if-scghleife aber was solls. Dank euch jedenfalls, lg


Es gibt keine If-Schleifen!!!!111einseinself
Das sind If-Anweisungen.

Beste Grüße


schlumsch - Mi 16.12.09 11:34

schön das du dich darüber aufregen kannst


elundril - Mi 16.12.09 11:47

find ich auch. und wenn du als Programmierer/Informatiker ernst genommen werden willst, solltest du solche Details beachten. Man kommt bei Kollegen sonst nicht soooo seriös rüber wie man vielleicht hofft/will.

lg elundril


schlumsch - Mi 16.12.09 12:13

Ja passt schon... in der eifer des Gefechtes hab ich das so fix hingekliert, mir ist schon klar das es sich bei if um keine schleife handelt