[Back to ARCHIVES SWAG index] [Back to Main SWAG index] [Original]

    {
     > Your approach (as all similar ones I have seen so Far) has a major
     > drawback: you can't use PKLITE, TinYPROG, LZEXE afterwards to
     > squeeze them down in size, as the offsets of the Program change.
     > Has anyone come up With a another approach circumventing this?

    Yes, you can store it at the end of the .EXE File ( after the
    code ) With the following routine :
    }

    Function CodeLenOnDisk( FName : String ) : LongInt;
    Var ImageInfo : Record
                      ExeID     : Array[ 0..1 ] of Char;
                      Remainder : Word;
                      Size : Word
                    end;
        F        : File;
    begin
      Assign( F, FName );
      Reset( F, 1 );
      if Ioresult <> 0 then Exit;
      BlockRead( F, ImageInfo, Sizeof( ImageInfo ));
      if ImageInfo.ExeID <> 'MZ' then Exit;
      CodeLenOnDisk := LongInt( ImageInfo.size-1 )*512 + ImageInfo.Remainder;
    end;

    {
    With this one, you can determine the end of the code in your .EXE File,
    and then Write other data there, Drawback : This Dosen't work in network
    environments or With shared .EXE Files. I'd recommend an external passWord
    File, and there storing a hash of the passWord.
    }

[Back to ARCHIVES SWAG index] [Back to Main SWAG index] [Original]