home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 8
/
CDASC08.ISO
/
NEWS
/
554
/
JUILLET
/
FINDBOOL.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-10-07
|
2KB
|
78 lines
{─ Fido Pascal Conference ────────────────────────────────────────────── PASCAL ─
Msg : 405 of 417
From : Rob Perelman 1:202/1308.0 06 Jul 93 07:39
To : All
Subj : Modifying EXE code
────────────────────────────────────────────────────────────────────────────────}
{Here is FINDBOOL - explained in previous message (FindBool.Txt}
Program FindBool;
Uses Crt, Utils;
Type AOC=Array[0..65534] of Byte;
Var F1, F2: File;
P1, P2: ^AOC;
ReadIn1, ReadIn2, Size: Word;
Location: LongInt;
RegProg: Text;
RegLoc: Boolean;
Procedure Error(Mssg: String);
Begin
Writeln(Mssg);
Halt(1);
End;
Begin
If ParamCount<>2 then Error('Invalid # of Parameters');
Assign(F1, ParamStr(1));
Assign(F2, ParamStr(2));
{$I-} Reset(F1, 1); Reset(F2, 1); {$I+}
If IOResult<>0 then Error('Error Opening Files');
If FileSize(F1)<>FileSize(F2) then Begin
Close(F1);
Close(F2);
Error('Files are not the same!!');
End;
Assign(RegProg, 'REGISTER.PAS');
If MaxAvail div 2>SizeOf(AOC) then Size:=SizeOf(AOC) Else Size:=MaxAvail div
GetMem(P1, Size);
GetMem(P2, Size);
Location:=0;
RegLoc:=False;
Repeat
BlockRead(F1, P1^, Size, ReadIn1);
BlockRead(F2, P2^, Size, ReadIn2);
For Location:=Location to Location+ReadIn1-1 do If Not RegLoc then
If P1^[Location]<>P2^[Location] then Begin
Rewrite(RegProg);
Writeln(RegProg, 'Program Register;');
Writeln(RegProg);
Writeln(RegProg, 'Const Toggle: Array[False..True] of Byte=(27, 0);');
Writeln(RegProg, ' RegLoc=',Location,';');
RegLoc:=True;
End;
Until (ReadIn1=0) or RegLoc;
If RegLoc then Begin
Writeln(RegProg);
Writeln(RegProg, 'Var F: File of Byte;');
Writeln(RegProg, ' Current: Byte;');
Writeln(RegProg);
Writeln(RegProg, 'Begin');
Writeln(RegProg, ' Assign(F, ParamStr(1));');
Writeln(RegProg, ' Reset(F);');
Writeln(RegProg, ' Seek(F, RegLoc);');
Writeln(RegProg, ' Read(F, Current);');
Writeln(RegProg, ' Seek(F, RegLoc);');
Writeln(RegProg, ' Write(F, Toggle[Boolean(Current)]);');
Writeln(RegProg, ' Close(F);');
Writeln(RegProg, 'End.');
Close(RegProg);
Writeln('Differences Found And REGISTER.PAS Made!!');
End Else Writeln('No Differences Found!!');
FreeMem(P1, Size);
FreeMem(P2, Size);
Close(F1);
Close(F2);
End.