Ja ich weiss: du möchtest jetzt wahrscheinlich nicht allzuviel umstellen.
Aber ich lege meinen Code wenn möglich separat für verschiedene Plattformen an, also
Delphi-Quellcode:
Unit MyCode;
// Das hier benutze ich in den Apps
uses
System.Types
{$IFDEF WIN32}
,MyCode.Win32
{$ENDIF WIN32}
{$IFDEF WIN64}
, MyCode.Win64
{$ENDIF WIN64}
{$IFDEF OSX}
, MyCode.OSX
{$ENDIF OSX}
;
Auch bei wenig Code ist das die sauberste Methode, und sollte auch unütze Referenzierungen vermeiden,
wenn es bei Android und iOS mal sparsam zugehen muss.
Ich finde der Mehraufwand lohnt sich schon auf lange Sicht, und alles bleibt gut überschaubar und wartbar.
Hm, vielleicht verstehe ich es nicht richtig, das uses in deiner MyCode
Unit führt nicht dazu, dass die Klassen, Funktion & Co. der MyCode.xx
Unit nach außen sichtbar sind.
Das bekommt nur ein unschönes {$INCLUDE ...} hin oder wie es Delphi macht, ein wildes RegisterXYZ in der initialization Section.
Schicke wäre die gleiche Art wie das
Unit-Gültigkeitsbereichsnamen, nur diesmal für das Suffix, in den Projekteigenschaften für jede Plattform.
Setzt man da z.B. in dem Ziel für "Alle Konfigurationen - 32-Bit-Windows" ein 'win' ein, Sollte Delphi versuchen zuerst die MyCode.win.pas zu verwenden obwohl im Code nur uses MyCode steht, gibt es die nicht dann die MyCode.pas.
Das finde ich sehr elegant.