Меня тоже смутил этот намек. Тогда я понял, в чем проблема. Ваш код:
uses
SysUtils;
procedure TForm1.DoStuff;
begin
SysUtils.DeleteFile('foo');
end;
буквально заменяется на:
uses
SysUtils;
procedure TForm1.DoStuff;
var
Flags, LastError: Cardinal;
begin
Result := Winapi.Windows.DeleteFile(PChar(FileName));
if not Result then
begin
LastError := GetLastError;
Flags := GetFileAttributes(PChar(FileName));
if (Flags <> INVALID_FILE_ATTRIBUTES) and (faSymLink and Flags <> 0) and
(faDirectory and Flags <> 0) then
begin
Result := RemoveDirectory(PChar(FileName));
Exit;
end;
SetLastError(LastError);
end;
end;
Если вы заметите, ваш «новый» код зависит от WinApi.Windows
единицы:
Result := Winapi.Windows.DeleteFile(PChar(FileName));
, который вы не включили в ваше предложение uses
.
Если вы вручную ввели код (скопировал и вставил), код просто не скомпилируется, пока вы не добавите Windows
к вашему uses
.
Вместо этого компилятор не будет делать inline
, потому что:
Встроенная функция «DeleteFile» не была расширена, поскольку модуль «Windows» не указан в списке «ИСПОЛЬЗОВАНИЕ» «