const
OriginalByte:
array
[
0
..
55
]
of
Byte
= (
$64
,
$69
,
$6E
,
$67
,
$20
,
$6D
,
$65
,
$20
,
$68
,
$69
,
$73
,
$00
,
$00
,
$00
,
$00
,
$27
,
$00
,
$00
,
$28
,
$00
,
$00
,
$00
,
$21
,
$00
,
$00
,
$00
,
$63
,
$6F
,
$6D
,
$70
,
$75
,
$74
,
$65
,
$72
,
$2E
,
$00
,
$00
,
$00
,
$00
,
$00
,
$00
,
$00
,
$00
,
$00
,
$00
,
$00
,
$00
,
$00
,
$27
,
$00
,
$00
,
$28
,
$00
,
$00
,
$00
,
$00
);
BytetoWrite:
array
[
0
..
55
]
of
Byte
= (
$63
,
$68
,
$6F
,
$67
,
$20
,
$6D
,
$65
,
$20
,
$68
,
$69
,
$73
,
$00
,
$00
,
$00
,
$00
,
$27
,
$00
,
$00
,
$28
,
$00
,
$00
,
$00
,
$21
,
$00
,
$00
,
$00
,
$63
,
$6F
,
$6D
,
$70
,
$75
,
$74
,
$65
,
$72
,
$2E
,
$00
,
$00
,
$00
,
$00
,
$00
,
$00
,
$00
,
$00
,
$00
,
$00
,
$00
,
$00
,
$00
,
$27
,
$00
,
$00
,
$28
,
$00
,
$00
,
$00
,
$06
);
procedure
DoMyPatch(
const
FileName:
String
);
var
i:
Int64
;
FileName:
string
;
input: TFileStream;
FileByteArray, ExtractedByteArray: Tbytes;
begin
input := TFileStream
.
Create(FileName, fmOpenReadWrite);
try
input
.
Position :=
0
;
SetLength(FileByteArray, input
.
size);
input
.
Read(FileByteArray[
0
], Length(FileByteArray));
for
i := Low(FileByteArray)
to
High(FileByteArray)
do
begin
ExtractedByteArray := Copy(FileByteArray, i, Length(OriginalByte));
if
CompareMem(@FileByteArray[i], @OriginalByte[
0
], Length(OriginalByte)) =
True
then
begin
input
.
Seek(i, SoFromBeginning);
input
.
Write
(BytetoWrite[
0
], Length(BytetoWrite));
end
;
end
;
finally
FreeAndNil(input);
end
;
end
;