AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FMX - Falsches Unit Format / $IFDEF

Ein Thema von Int3g3r · begonnen am 25. Aug 2020 · letzter Beitrag vom 26. Aug 2020
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#6

AW: FMX - Falsches Unit Format / $IFDEF

  Alt 25. Aug 2020, 20:03
Ja, es gibt ein paar vordefinierte Compiler-DEFINEs und -Konstanten.
http://docwiki.embarcadero.com/RADSt...ation_(Delphi)
Aber man kann auch selbst Welche definieren.
DEBUG ist z.B. kein Define des Compilers, sondern kommt aus den Projektoptionen. Das findest in den "Bedingungen" (im Deutschen) des Debug-Profiles.
Und kanns auch global im Projekt Eingene dort einfügen, zusätzlich zu den DEFINE und UNDEF im Code.


Die Conditional-Statements haben ein paar Vorzeile, gegen über den einfachen IFDEF und IFNDEF ... erstmal übersieht man einfach das N , in der Mitte, gegenüber einem alleinstehenden NOT. Und man kann nicht jeweils nur "ein" DEFINE prüfen.

Vor allem das ELSE-IF und auch NOT, AND oder OR können genutzt werden.
Da kann man "echte" Konstanten (keine typisierten Konstanten), Typen und ein paar Compiler-Funktionen verwenden. Defined, Declared, SizeOf


z.B. {$IF not Declared(irgendwas)} für Ersatzcode einer Konstante, Funktion oder Typ.
oder {$IF CompilerVersion < 30.0} anstatt {$IFDEF VER290} und jeden einzelnen Vorfahren zu prüfen.

Stell dir mal vor du müsstest das nur nur mit mehrfach verschachtelten IFDEF/IFNDEF bauen. (Original-Code aus'm Delphi)
Delphi-Quellcode:
{$IFNDEF PC_MAPPED_EXCEPTIONS}
  {$IF defined(ANDROID)}
    {$DEFINE ZCX_BASED_EXCEPTIONS}
  {$ELSEIF defined(MACOS)}
    {$IF defined(CPUARM32)}
      {$DEFINE SJLJ_BASED_EXCEPTIONS}
    {$ELSEIF defined(CPUARM64)}
      {$DEFINE ZCX_BASED_EXCEPTIONS_MACOS}
    {$ELSEIF defined(CPUX64)}
      {$DEFINE ZCX_BASED_EXCEPTIONS_MACOS}
    {$ENDIF}
  {$ELSEIF defined(MSWINDOWS)}
    {$IFDEF EXTERNALLINKER}
      {$DEFINE ZCX_BASED_EXCEPTIONS}
    {$ELSE}
      {$IF defined(CPUX86)}
        {$DEFINE STACK_BASED_EXCEPTIONS}
      {$ELSEIF defined(CPUX64)}
        {$DEFINE TABLE_BASED_EXCEPTIONS}
      {$ELSE}
        {$MESSAGE ERROR 'Unknown platform'}
      {$ENDIF}
    {$ENDIF !EXTERNALLINKER}
  {$ELSEIF defined(LINUX)}
    {$IFDEF EXTERNALLINKER}
      {$DEFINE ZCX_BASED_EXCEPTIONS}
    {$ELSE}
      {$DEFINE PC_MAPPED_EXCEPTIONS}
    {$ENDIF}
  {$ELSE}
    {$MESSAGE ERROR 'Unknown platform'}
  {$ENDIF}
{$ENDIF !PC_MAPPED_EXCEPTIONS}
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (25. Aug 2020 um 20:17 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz