Registriert seit: 11. Apr 2009
557 Beiträge
Delphi 12 Athens
|
AW: Erste Bytes einer Datei vergleichen?
25. Feb 2017, 22:36
Tja, hätte man darauf nicht selbst kommen können? Ehrlich gesagt, auf die Konstruktion mit PAnsiChar(@BufCRW[0])
vermutlich nicht, obwohl sie mir geläufig ist. Also dann:
Delphi-Quellcode:
function IstRAWFormat(const Dateiname:string):Boolean;
var Datei:File; Buf:array [0..19] of Byte; BufCRW,BufARW,BufCR2:TBytes;
begin
{$I-}
Try
Try
AssignFile(Datei,Dateiname);
Reset(Datei, 1);
BlockRead(Datei, Buf[0], 20);
Except
exit(False);
End;
BufCRW := [$49,$49,$1A,$00,$00,$00,$48,$45,$41,$50,$43,$43,$44,$52,$02,$00];
BufCR2 := [$49,$49,$2A,$00,$10,$00,$00,$00,$43,$52];
BufARW := [$49,$49,$2A,$00];
Result := CompareMem(PAnsiChar(@BufCRW[0]),PAnsiChar(@Buf[0]),Length(BufCRW))
or CompareMem(PAnsiChar(@BufCR2[0]),PAnsiChar(@Buf[0]),Length(BufCR2))
or CompareMem(PAnsiChar(@BufARW[0]),PAnsiChar(@Buf[0]),Length(BufARW));
Finally
CloseFile(Datei);
SetLength(BufCRW,0);
SetLength(BufCR2,0);
SetLength(BufARW,0);
End;
{$I+}
end;
Übrigens, ist das SetLength(BufCRW,0);
eigentlich nötig? (Auch das habe ich ziemlich oft gelesen, ich glaube daher, nicht).
|