unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,jpeg, DXDraws;

type
TIMHeader = record
Face:array[1..5] of char;
fps:byte;
Pictures:integer;
width,height:integer;
end;
  TForm1 = class(TForm)
    Timer: TTimer;
    DDraw: TDXDraw;
    il: TDXImageList;
    procedure TimerTimer(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
schet:integer=1;
fs:tfilestream;
f:TImHeader;
implementation

{$R *.dfm}

procedure TForm1.TimerTimer(Sender: TObject);
var
size:int64;
memo:tmemorystream;
jpg:TjpegImage;
begin
if schet>f.Pictures then
begin
timer.Enabled:=false;
fs.Free;
close;
exit; end else
inc(schet);
memo:=tmemorystream.Create;
fs.Read(size,sizeof(size));
memo.CopyFrom(fs,size);
jpg:=tjpegimage.create;
memo.Position:=0;
jpg.LoadFromStream(memo);
il.items.Items[0].Picture.Assign(jpg);
il.Items.Items[0].Restore;
jpg.Free;
ddraw.Surface.Fill(0);
il.Items.Items[0].draw(ddraw.Surface,0,0,0);
memo.Free;
ddraw.flip;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
if paramstr(1)<>'' then
begin
fs:=tfilestream.Create(paramstr(1),fmOpenRead);
fs.Read(f,sizeof(f));
timer.Interval:=1000 div f.fps;
if (f.width>640) or (f.height>480) then
begin
form1.Width := f.width;
form1.Height := F.height;
form1.BorderStyle:=bsNone;end else
begin
form1.Width:=f.width;
form1.Height:=f.height;
end;
il.Items.MakeColorTable;
ddraw.ColorTable:=il.Items.ColorTable;
ddraw.DefColorTable:=il.Items.ColorTable;
ddraw.Cursor:=crnone;
timer.Enabled:=true;
il.Items.Add;
end
else
begin
showmessage('Missing file!');
close;
end;
end;

end.
