- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
...
var
fileName :string; // имя файла
mes :string; // текст мессаги
capt :string; // заголовок мессаги
f :thandle;
fils :integer;
BytesRead :D WORD;
c :byte;
begin
writeln('enter filename:'); // просим ввести имя файла
readln(fileName); // в fileName заносим имя файла
if not fileexists(fileName) then // если он несуществует
begin
writeln('file not found :( '); // виводит предупреждение
readln;
exit; // закриваем прогу
end;
writeln(''); // просим ввесли текст мессаги
writeln('enter message text (max 10):'); // максмальна длина 10 символов(так как в Project1.exe для нее зарезирвировано 10 байт) потому что длина HelloWorld=10
readln(mes);
writeln(''); // просим ввести заголовок мессаги
writeln('enter message caption (max 10):'); // опять максимальная длина 10 символов
readln(capt);
f:=fileopen(fileName,fmOpenReadWrite); // откриваем fileName
fils:=Windows.GetFileSize(f,nil); // получаем размер
writeln('size = '+inttostr(fils)+'b'); // виводим размер
// патчим байти для мессаги
// $2848,$2849,$284A,$284B,$284C,$284D,$284E,$284F,$2850,$2851
c:=ord(char(pchar(mes[1]))); // патчим первий байт
SetFilePointer(f, $2848, nil, 0);
WriteFile(f, c, SizeOf(c), BytesRead, nil);
c:=ord(char(pchar(mes[2]))); // патчим второй (2) байт
SetFilePointer(f, $2849, nil, 0);
WriteFile(f, c, SizeOf(c), BytesRead, nil);
c:=ord(char(pchar(mes[3]))); // патчим 3 байт
SetFilePointer(f, $284A, nil, 0);
WriteFile(f, c, SizeOf(c), BytesRead, nil);
c:=ord(char(pchar(mes[4]))); // патчим 4 байт;
SetFilePointer(f, $284B, nil, 0);
WriteFile(f, c, SizeOf(c), BytesRead, nil);
c:=ord(char(pchar(mes[5]))); // патчим 5 байт
SetFilePointer(f, $284C, nil, 0);
WriteFile(f, c, SizeOf(c), BytesRead, nil);
c:=ord(char(pchar(mes[6]))); // патчим 6 байт
SetFilePointer(f, $284D, nil, 0);
WriteFile(f, c, SizeOf(c), BytesRead, nil);
c:=ord(char(pchar(mes[7]))); // патчим 7 байт
SetFilePointer(f, $284E, nil, 0);
WriteFile(f, c, SizeOf(c), BytesRead, nil);
c:=ord(char(pchar(mes[8]))); // патчим 8 байт
SetFilePointer(f, $284F, nil, 0);
WriteFile(f, c, SizeOf(c), BytesRead, nil);
c:=ord(char(pchar(mes[9]))); // патчим 9 байт
SetFilePointer(f, $2850, nil, 0);
WriteFile(f, c, SizeOf(c), BytesRead, nil);
c:=ord(char(pchar(mes[10]))); // патчим 10 байт
SetFilePointer(f, $2851, nil, 0);
WriteFile(f, c, SizeOf(c), BytesRead, nil);
// патчим байти для заголовка мессаги
// адреса с $283C до $2845
c:=ord(char(pchar(capt[1]))); // патчим первий байт
SetFilePointer(f, $283C, nil, 0);
WriteFile(f, c, SizeOf(c), BytesRead, nil);
c:=ord(char(pchar(capt[2]))); // патчим второй байт
SetFilePointer(f, $283D, nil, 0);
WriteFile(f, c, SizeOf(c), BytesRead, nil);
c:=ord(char(pchar(capt[3]))); // третий символ и так дальше
SetFilePointer(f, $283E, nil, 0);
WriteFile(f, c, SizeOf(c), BytesRead, nil);
c:=ord(char(pchar(capt[4])));
SetFilePointer(f, $283F, nil, 0);
WriteFile(f, c, SizeOf(c), BytesRead, nil);
c:=ord(char(pchar(capt[5])));
SetFilePointer(f, $2840, nil, 0);
WriteFile(f, c, SizeOf(c), BytesRead, nil);
...