type
TTypeFile = (tfBMP, tfICON, tfCURSOR, tfWAVE, tfMIDI,
tfHUC, tfJPG, tfGIF, tfTIF, tfMO3,
tfPNG, tfPCX, tfUnknown);
const
THeaderFile : array[0..11, 0..6] of Byte = (
{BMP} ($42, $4D, 0, 0, 0, 0, 2),
{ICON} ( 0, 0, 1, 0, 0, 0, 4),
{CURSOR} ( 0, 0, 2, 0, 0, 0, 4),
{WAVE} ($52, $49, $46, $46, 0, 0, 4),
{MIDI} ($4D, $54, $68, $64, 0, 0, 4),
{HUC} ($48, $55, $43, 0, 0, 0, 3),
{JPG} ($FF, $D8, $FF, 0, 0, 0, 3),
{GIF} ($47, $49, $46, $38, 0, 0, 4),
{TIF} ($49, $49, $2A, $00, 0, 0, 4),
{MO3} ($4D, $4F, $33, $04, 0, 0, 4),
{PNG} ($89, $50, $4E, $47, $0D, $0A, 6),
{PCX} ($0A, $05, 0, 0, 0, 0, 2));
function CheckTypeFile(P : Pointer) : TTypeFile;
var
I : Integer;
begin
Result := tfUnknown;
for I := Low(THeaderFile) to High(THeaderFile) do
if CompareMem(P, @THeaderFile[i], THeaderFile[i][High(THeaderFile[0])]) then
begin
Result := TTypeFile(I);
Break;
end;
end;