Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Compiler-Defines ? (https://www.delphipraxis.net/184121-compiler-defines.html)

himitsu 27. Feb 2015 17:09

Delphi-Version: XE7

Compiler-Defines ?
 
Moin moin,

hat zufällig jemand mit XE7 und iOS/Max/Android 'nen Sekündchen Zeit?
Es geht einfach nur im die Verifizierung der DEFINES/Features der Compiler.

So müsste es z.B. irgendwo das BIGENDIAN-Define geben (aber vielleicht kommt das ja auch erst mit Linux, WinRT, Blackberry, Windows Mobile 7, ...)

Laut den wenigen Informationen/Beschreibungen hätte ich gedacht, daß WEAKREF, WEAKINSTREF (Objekte), WEAKINTREF (Interfaces) überall gleich sind.
Aber schon im NextGen-Compiler für Android gibt es erschreckender Weise kein WEAKINTREF. :shock:
Wobei man das WEAKINTREF eigentlich hätte überall einbauen sollen.

Bin ich zu doof, oder gibt es wirklich kein MacOS-Define? (OS X)
MACOS scheint ja bei OS X und iOS definiert zu sein. Oder wie soll man da zwischen Mobil und Desktop unterscheiden können?

Wenn iOS-Sim kein NEXTGEN ist, dann würde mich interessieren, wie man z.B. 0-based-Strings erkennt. Oder soll man da wirklich immer Low(String) auswerten?


Einfach den Code in eine Geräteübergreifende Anwendung einfügen, eine Plattform auswählen,
kompilieren und überall, wo blaue (Halte)Punke erscheinen, hinten 'nen Sternchen/Icks rein.
Alternativ vor jedes Beep ein * und ein * hinter Alles (damit man nicht stundenlang warten muß, bis es mit Linken fertig ist),
dann kompileren und wo es knallt, die * löschen ... wo am Ende kein Stern mehr ist, hinten den Stern eintragen.

Code:
procedure TForm3.FormCreate(Sender: TObject);
begin
                                                // Win32 Win64 Android iOS-Dev iOS-Sim OSX
  {$IFDEF BIGENDIAN}            Beep; {$ENDIF}  //                     -       -       -

  {$IFDEF CONSOLE}              Beep; {$ENDIF}  // ?     ?             -       -       -
  {$IFDEF MSWINDOWS}            Beep; {$ENDIF}  // *     *             -       -       -
  {$IFDEF WIN32}                Beep; {$ENDIF}  // *                   -       -       -
  {$IFDEF WIN64}                Beep; {$ENDIF}  //       *             -       -       -
  {$IFDEF MACOS}                Beep; {$ENDIF}  //                     .       .       .
  {$IFDEF MACOS32}              Beep; {$ENDIF}  //                     .       .       .
  {$IFDEF IOS}                  Beep; {$ENDIF}  //                     .       .       -
  {$IFDEF ANDROID}              Beep; {$ENDIF}  //             *       -       -       -
  {$IFDEF LINUX}                Beep; {$ENDIF}  //                     -       -       -
  {$IFDEF LINUX32}              Beep; {$ENDIF}  //                     -       -       -
  {$IFDEF POSIX}                Beep; {$ENDIF}  //             *       .       .       .
  {$IFDEF POSIX32}              Beep; {$ENDIF}  //             *       .       .       .

  {$IFDEF CPUX86}               Beep; {$ENDIF}  // *                   -       .       .
  {$IFDEF CPUX64}               Beep; {$ENDIF}  //       *             -       -       -
  {$IFDEF CPUARM}               Beep; {$ENDIF}  //             *       .       -       -

  {$IFDEF ASSEMBLER}            Beep; {$ENDIF}  // *     *             -       .       -
  {$IFDEF AUTOREFCOUNT}         Beep; {$ENDIF}  //             *       .       .       -
  {$IFDEF NEXTGEN}              Beep; {$ENDIF}  //             *       .       .       -
  {$IFDEF PC_MAPPED_EXCEPTIONS} Beep; {$ENDIF}  //                     -       .       .
  {$IFDEF UNDERSCOREIMPORTNAME} Beep; {$ENDIF}  // *                   -       .       .
  {$IFDEF WEAKREF}              Beep; {$ENDIF}  //             *       .       .       -
  {$IFDEF WEAKINSTREF}          Beep; {$ENDIF}  //             *       .       .       -
  {$IFDEF WEAKINTREF}           Beep; {$ENDIF}  //                     .       .       -

end;
(ja, das sind keine Delphi-Tags, der dann immer die schönen Leerzeichen geschrottet werden)

Daniel 27. Feb 2015 17:25

AW: Compiler-Defines ?
 
Mac OS:
MACOS, MACOS32, POSIX, POSIX32, CPUX86, ASSEMBLER, PC_MAPPED_EXCEPTIONS, UNDERSCOREIMPORTNAME

iOS-Simulator:
MACOS, MACOS32, IOS, POSIX, POSIX32, CPUX86, ASSEMBLER, AUTOREFCOUNT, NEXTGEN, PC_MAPPED_EXCEPTIONS, UNDERSCOREIMPORTNAME, WEAKREF, WEAKINSTREF

iOS-Device (32bit)
MACOS, MACOS32, IOS, POSIX, POSIX32, CPUARM, AUTOREFCOUNT, NEXTGEN, WEAKREF, WEAKINSTREF

iOS-Device (64bit)*
MACOS, IOS, POSIX, CPUARM, CPUARM64, CPU64BITS, AUTOREFCOUNT, NEXTGEN, WEAKREF, WEAKINSTREF
*... vermutlich

Daniel 27. Feb 2015 17:26

AW: Compiler-Defines ?
 
Zitat:

Zitat von himitsu (Beitrag 1291771)
MACOS scheint ja bei OS X und iOS definiert zu sein. Oder wie soll man da zwischen Mobil und Desktop unterscheiden können?

Du prüfst auf MACOS und/oder IOS und den CPU-Typ. Damit kannst Du zuverlässig Desktop vs. Mobil und Gerät vs. Simulator erkennen.

himitsu 27. Feb 2015 17:41

AW: Compiler-Defines ?
 
Danke :)

Delphi-Quellcode:
{$ID Defined(MACOS) and not Defined(IOS)} = OSX
{$ID Defined(MACOS) and Defined(IOS)} = iOS
{$ID Defined(MACOS) and Defined(IOS) and not Defined(CPUARM)} = iOS Simulator
...
Gut, hätte ja sein können, das ginge einfacher.
Das CPU war irgendwie aus meinem Blickwinkel und sonst sehen OSX und iOSSim ja gleich aus. :oops:


Aber meine Vermutung bestätigt sich dann, denn WEAKINTREF gibt es wirklich nirgendwo, obwohl es das angeblich gibt. :cry:
Wenn man hier jetzt auf die OH gehört hätte und treudoof überall nur WEAKREF prüft, der fällt schmerzhaft hin, da der Compiler auch nix sagt, wenn er das [Weak] einfach so ignoriert.

Daniel 27. Feb 2015 17:50

AW: Compiler-Defines ?
 
Kann es sein, dass Du Dich verschrieben hast?
Dat Dingen heisst "WEAKINTFREF" und ist bei mir durchaus definiert (Nextgen-Compiler & iOS-Simulator)

Daniel 27. Feb 2015 18:01

AW: Compiler-Defines ?
 
Die WEAK-Defines funktionieren allesamt wie beschrieben:
http://docwiki.embarcadero.com/RADSt...ation_(Delphi)

himitsu 27. Feb 2015 18:10

AW: Compiler-Defines ?
 
Jupp, den Link kenn ich, aber da steht es ohne F :stupid:
Zitat:

WEAKINTREF not defined not defined not defined DEFINED DEFINED DEFINED
[edit]
Mit F geht es nun auch im Android. :)
(fehlen nur noch die Nicht-NextGens)

Daniel 27. Feb 2015 18:12

AW: Compiler-Defines ?
 
Ach, ein "F" mehr oder weniger. Vermutlich wird es sich um eine verlustbehaftete Datenkompression im Wiki handeln. ;-)

//edit: Ich sage denen mal bescheid. ;-)

himitsu 27. Feb 2015 18:23

AW: Compiler-Defines ?
 
Bei iOSDev und iOSSim ist dann auch das WEAKINTFREF definiert? (auch wenn iOSDev wohl kein NextGen ist)

Daniel 27. Feb 2015 18:27

AW: Compiler-Defines ?
 
"WEAKINTFREF" ist für iOS-Geräte und den iOS-Simulator definiert.
Es ist ja ein Nextgen-Compiler (kann man ja mit "IFDEF NEXTGEN" prüfen, welches für beide definiert ist).


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz