В случае с RenameFile нужно обрабать результат функции
Код:
if not RenameFile('ddraw.dll','wdraw.dll') then
begin
ShowMessage('Произошла ошибка при переименовании файла' + IntToStr(GetLastError));
exit;
end;
Работа с реестром зависит от версии Delphi. В DelphiXE начиная со 2й есть свойства LastError, LastErrorMsg, которые позволяют проверить, что за ошибка произошла. А до этого не помню, может быть никак нельзя было проверить.
Другими словами код как-то так выглядит
Код:
if not Registry.OpenKey('Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers', True) then
begin
ShowMessage('Не удалось открыть раздел реестра' + IntToStr(Registry.GetLastError));
exit;
end;
Методы WriteString и DeleteValue выбрасывают эксепшионы
Код:
try
if AddDel = True then Registry.WriteString(ExtractFilePath(ParamStr(0))+'Revenant.exe', Param);
if AddDel = False then Registry.DeleteValue(ExtractFilePath(ParamStr(0))+'Revenant.exe');
except
on E: ERegistryException do
begin
ShowMessage('При изменении реестра произошла ошибка:' +e.message);
exit;
end;
end;
Ваше опасение, что какая-то из операций начнет выполнятся до того, как предыдущая завершит выполнение, безпочвенно. Операции выполняются строго последовательно.