Рішення задач як програму видалити саму себе або як змінити назву виконуваного файлу -

В інтернеті переглядаючи форуми з програмування я натрапляв на питання пов'язані c питанням "Як програму змусити видалити або перейменувати себе під час виконання". У цій статті описується самий елементарний спосіб.

Borland Delphi бажано 7 - вимагає установки
Блокнот (notepad.exe) - стоїть на всіх комп'ютерах з Windows
cmd.exe - стоїть на всіх комп'ютерах з Windows

Навіщо нам потрібен блокнот і cmd.exe запитаєте ви?
Ми для вирішення цього завдання будемо використовувати Пакетний файл, докладніше: У Вікіпедії
Функція для видалення:

function RemoveApp. boolean;

batfile. TextFile; // змінна файлу

try // блок try..except для обробки винятків (помилок)

RemoveApp: = true; // в результат повертається функції ставимо значення: істина

AssignFile (batfile, 'Del.bat'); // присвоюємо файл змінної

ReWrite (batfile); // Відкриваємо для перезапису (якщо існує файл повторно, інакше створиться)

ChDir (ExtractFilePath (ParamStr (0))); // міняємо поточну директорію (з якої працює програма) на директорію в якій знаходиться виконуваний файл

WriteLn (batfile, 'del' + ExtractFileName (ParamStr (0))); // записуємо в файл команду видалення del

WriteLn (batfile, 'del Del.bat'); // пишемо це для самознищення пакетного файлу

CloseFile (batfile); // закриваємо файл

WinExec ( 'Del.bat', SW_SHOW); // запускаємо пакетний файл який був створений програмою

ExitProcess (0); // завершуємо програму

RemoveApp: = false; // якщо відбувається помилка повертаємо брехня

Функція для перейменування:

function RenameApp (newname. string). boolean;

batfile. TextFile; // змінна файлу

try // блок try..except для обробки винятків (помилок)

RenameApp: = true; // в результат повертається функції ставимо значення: істина

AssignFile (batfile, 'Rem.bat'); // присвоюємо файл змінної

ReWrite (batfile); // Відкриваємо для перезапису (якщо існує файл перезапише, інакше створиться)

ChDir (ExtractFilePath (ParamStr (0))); // міняємо поточну директорію (з якої працює програма) на директорію в якій знаходиться виконуваний файл

WriteLn (batfile, 'ren' + ExtractFileName (ParamStr (0)) + '' + newname); // записуємо в файл команду перейменування ren

WriteLn (batfile, 'del Rem.bat'); // пишемо це для самознищення пакетного файлу

CloseFile (batfile); // закриваємо файл

WinExec ( 'Rem.bat', SW_SHOW); // запускаємо пакетний файл який був створений програмою

ExitProcess (0); // завершуємо програму

RenameApp: = false; // якщо відбувається помилка повертаємо брехня

Як бачите нічого складного тут немає. Ці функції не вимагають ніяких додаткових модулів.