Einzelnen Beitrag anzeigen

Benmik

Registriert seit: 11. Apr 2009
543 Beiträge
 
Delphi 11 Alexandria
 
#1

Erste Bytes einer Datei vergleichen?

  Alt 25. Feb 2017, 20:12
Ich versuche, RAW-Dateien der diversen Kamerahersteller anhand ihrer Signaturen zu identifizieren. Hierbei gibt es die extrem nützliche Seite von Marco Pontobello in Kombination mit der Seite RAW-Samples und auch file-extensions.org.
Zur einfachen Identifizierung von JPG-Dateien anhand der charakteristischen ersten beiden Bytes habe ich folgende Prozedur verwendet:
Delphi-Quellcode:
function JPGHeaderOK(const Dateiname:string):Boolean;
var Datei:File; Buf:TBytes;
begin
  {$I-}
  Try
    Buf := [0,0];
    Try
      AssignFile(Datei,Dateiname);
      Reset(Datei, 1);
      BlockRead(Datei, Buf[0], 2);
      Result := ((Buf[0] = $FF) and (Buf[1] = $D8));
    Except
      Result := False;
    End;
  Finally
    CloseFile(Datei);
    SetLength(Buf,0);
  End;
  {$I+}
end;
Jetzt sind die Signaturen der RAW-Dateien aber deutlich länger, die einer CRW-Datei von Canon lautet zum Beispiel 49 49 1A 00 00 00 48 45 41 50 43 43 44 52 02 00 .
Wie macht man das am besten? Der Einzelvergleich Buf[0]..Buf[15] kann es doch wohl kaum sein.

Geändert von Benmik (25. Feb 2017 um 22:46 Uhr) Grund: Weiter Quelle hinzugefügt
  Mit Zitat antworten Zitat