Contributor: JON JASIUNAS 
{
JON JASIUNAS>Is it possible to store variables in actual .EXE file of a TP program, inste>of making an external config file for it? Thanks.
Sure. Make them typed constants, then modify the .EXE whenever you want
to store a change.
}
type
 tOwnerName = string[30];
 tRegCode = String[12];
const
 OwnerName : tOwnerName = '';
 RegCode : tRegCode = '';
begin
 WriteLn('The current owner is : ', OwnerName);
 WriteLn('The current registration code is : ', RegCode);
 WriteLn;
 Write('Enter the new owner name: ');
 ReadLn(OwnerName);
 Write('Enter the new registration code: ');
 ReadLn(RegCode);
 If Write2Exe(OwnerName, SizeOf(OwnerName))  0 then
 WriteLn('Owner name not updated!');
 If Write2Exe(RegCode, SizeOf(RegCode))  0 then
 WriteLn('Registration code not updated!');
end.
{ Here's my self mod unit: }
{*****************************
 * EXEMOD.PAS v1.0 *
 * *
 * General purose .EXE *
 * self-modifying routines *
 *****************************
1992-93 HyperDrive Software
Released into the public domain.}
{$S-,R-,D-,I-}
{$IFOPT O+}
 {$F+}
{$ENDIF}
unit ExeMod;
interface
var
 ExeName : String;
function Write2Exe(var Data2Write; DataSize : Word) : Integer;
implementation
function Write2Exe(var Data2Write; DataSize : Word): Integer;
const
 PrefixSize = 256;
var
 ExeFile : File;
 HeaderSize : Word;
 IoError : Integer;
begin
 Assign(ExeFile, ExeName);
 Reset(ExeFile, 1);
 IoError := IOResult;
 If IoError = 0 then
 {-Seek position of header size in EXE File }
 begin
 Seek(ExeFile, 8);
 IoError := IOResult;
 end; { If }
 If IoError = 0 then
 {-Read header size in EXE File }
 begin
 BlockRead(ExeFile, HeaderSize, Sizeof(HeaderSize));
 IoError := IOResult;
 end;
 If IoError = 0 then
 {-Seek position of Data in EXE File }
 begin
 Seek(ExeFile, LongInt(16) * (HeaderSize + Seg(Data2Write) - PrefixSeg) +
 IoError := IOResult;
 end;
 If IoError = 0 then
 {-Write new Data to EXE File }
 begin
 BlockWrite(ExeFile, Data2Write, DataSize);
 IoError := IOResult;
 end;
 Close(ExeFile);
 Write2Exe := IoError;
end;
begin
 ExeName := ParamStr(0);
end.
 

AltStyle によって変換されたページ (->オリジナル) /