Der Compiler ist 100% deterministisch und hat immer Recht.
Der Compiler trifft auf eine Methode oder
Unit mit der Direktive
platform
und gibt die entsprechende Warnung aus. Die IFDEF-Verschachtelung davor kann er nicht beurteilen.
Delphi-Quellcode:
program Project1;
procedure stuff(); platform;
begin
// empty
end;
begin
{$If Defined(MSWINDOWS)}
stuff();
{$EndIf}
end.
Das hier reicht schon für eine Warnung.
Ebenso ist es auch bei deinem
System.SysUtils.FileGetAttr(..)
:
Delphi-Quellcode:
{ FileGetAttr returns the file attributes of the file given by FileName. The
attributes can be examined by AND-ing with the faXXXX constants defined
above. A return value of -1 indicates that an error occurred. If the
specified file is a symlink then the function is performed on the target file.
If FollowLink is false then the symlink file is used. }
function FileGetAttr(const FileName: string; FollowLink: Boolean = True): Integer; platform;
Analog ist es auch bei den anderen
deprecated
-Warnungen: Der Compiler hat Recht. Die Delphi Runtime verwendet trotzdem munter weiterhin Funktionen die sie selbst als veraltet und "Bitte nicht mehr benutzen" markiert.
Kann man nichts machen ¯\_(ツ)_/¯
Zitat:
Nur wie verwende ich nun TCharHelper?
Das ist ein Helfer. Sagen dir class helper / record helper etwas?