Für das ReNamer Programm brauchte ich die EXIF-Informationen. Einige schon im Internet vorhandene Quellcodes probiert. Die waren jedoch teilweise fehlerhaft, liefen nicht mit mit dem BCB oder auch nur schlecht zu bedienen. Alos eine eigene Klasse entworfen.
Die EXIF-Daten sind in Form von nummerischen Key/Value - Paaren in den Dateien verankert. Es sind also folgende Schritte notwendig:
Die Klasse übernimmt die Punkte 1-3.
GExif |
||
| public: | __fastcall GExif(String file); | Konstruktor - Der Parameter enthält den kompletten Pfad der Datei, deren EXIF-Daten gelesen werden sollen |
| bool isError; | Zeigt an, ob ein Fehler aufgetreten ist | |
| String __fastcall GetLastError(); | Gibt den Fehler als String zurück | |
| TStringList* __fastcall GetListWithNames(); | Gibt eine Key=Value Stringlist mit den gefunden Daten zurück. Dabei ist der Keywert durch ein Text ersetzt worden | |
| TStringList* __fastcall GetListWithTags(); | Gibt eine Key=Value Stringlist mit den gefunden Daten zurück. Dabei ist der Keywert erhalten geblieben | |
| String __fastcall GetValueByTag(int Key); | Gibt von einem beliebigen Key den Textwert zurück | |
Es wäre kein Problem gewesen, auch die Änderung von EXIF-Daten einzubauen. Jeoch hat die GDI+ Klasse Image von Microsoft so einen kleinen entscheidenen Nachteil:

Ich finde das ein ziemlich starkes Stück, solch einen Designfehler einzubauen und das Problem auf die Entwickler abzuwälzen. Sicherlich gibt es Lösungen dafür, doch als ich da gelesen hatte, ist mir die Lust vergangen.....
Download |
|
| GEXIF nur die Klasse | 6 Kb |
| GEXIF und DemoKlasse mit Demoprojekt | 743 KB |