Einzelnen Beitrag anzeigen

Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Prüfen, ob Datei ein PNG ist

  Alt 27. Aug 2006, 14:48
Zitat von xaromz:
ist die Prüfung der ersten drei Zeichen nicht ein bisschen wenig? Das kann auch in einer Textdatei stehen.
Abgesehen davon steht in PNGs am Anfang erst $89, bevor "PNG" kommt. Zumindest das könnte man checken.
Besser wäre es aber, den gesamten Header zu lesen und aud Plausibilität zu prüfen,.
Jo man könnte ohne Probleme genauer Prüfen:

Delphi-Quellcode:
function IsPNG(const AFileName: String): Boolean;
var
  FileHandle: Integer;
  Buf: Int64;
begin
  FileHandle := FileOpen(AFileName, fmOpenRead);
  FileSeek(FileHandle, 0, 0);
  FileRead(FileHandle, Buf, 8);
  FileClose(FileHandle);
  Result := (Buf = $0A1A0A0D474E5089);
end;
Achtung! Ich hab die Funktion nicht getestet, da ich grad kein PNG sowie Delphi zur Hand habe.
Sollte aber eigentlich funktionieren

Die Wahrscheinlichkeit, dass die ersten 8 Byte zufällig identisch sind sind schon sehr gering. Und dazu kommt ja auch noch die Prüfung der Dateiendung.

EDIT:
Ich hatte doch noch 'n Feher drin. So funktioniert sie aber.
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat