Contributor: STEVE ROGERS             

{
STEVE ROGERS

> Also, does anyone know how PKware wrote the ZIP2EXE Program? I'm also
>writing an encryption Program, and I thought a 'self-decrypting' File
>would be neat, so I had some ideas on how to do it. Could you just
>append the encrypted data to the end of a short 'stub' Program, which
>just seeks in how ever many Bytes and  reads from there? Or would I
>have to somehow assign all the data to a few Typed Constants?

Just so happens I have been dealing With the same problem. I have
written a Procedure to show the "True" size of an EXE File. Knowing this
you can easily get to your "data area" by seeking past the "True" size.

( Acknowledgements to Andy McFarland and Ray Duncan )
}

Function exesize(fname : String) : LongInt;
Type
  t_size = Record
    mz : Array [1..2] of Char;
    remainder,
    pages : Word;
  end;

Var
  f  : File of t_size;
  sz : t_size;

begin
  assign(f,fname);
  {$i-}
  reset(f);
  {$i+}   { io checking should be off }
  if (ioresult <> 0) then
    exesize:= 0
  else
  begin
    read(f,sz);
    close(f);
    With sz do
      exesize := remainder + (pred(pages) * 512);
  end;
end;


{
This thing reads the header of an EXE File and gets the info there. I
was amazed when I ran this on a bunch of progs and found how many have
data appended. Hope it helps. :)
}