Announcement

Collapse
No announcement yet.

Compilerdirektiven

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Compilerdirektiven

    Ich habe eine Compilerdirektive in einer Unit definiert. Innerhalb der Unit wird ein Objekt erzeugt aus einer zweiten Unit. In der zweiten Unit wird auf die Compilerdirektive reagiert. Soweit die Theorie in der Praxis funktioniert das mal wieder nicht. Auf die Compilerdirektive wird nur reagiert wenn ich sie unter den Projektoptionen angebe. Wo ist das problem und wie kann man es lösen?

    <pre>
    unit unit1

    uses unit2;

    procedure tobj1.aufruf();
    var obj2: tobj2;
    begin
    {define VERCHECK}
    obj2:=tObj2.Create;
    obj2.aufruf;
    {undef VERCHECK}
    end;

    unit unit2

    procedure tobj2.aufruf();
    begin
    {ifndef VERCHECK}
    //Do something
    ***
    {else}
    //do something else
    {endif}
    end;

  • #2
    Hallo,

    versuche mal {$DEFINE ....}

    mfg Stepha

    Comment


    • #3
      Hi

      Alle Compilerdirektiven müssen mit $ anfangen:

      <pre>

      {$DEFINE name}
      {$IFDEF name}
      {$ELSE}
      {$ENDIF}

      </pre>

      Zudem ist es günstig alle Compilerbefehle/direktiven in einer einzigen *.INC Datei zu verlagern. Diese *.INC Datei wird mit

      <pre>

      uses xyz;

      {$L Name.INC}

      interface

      </pre>

      am besten in die Units eingebunden. Solche *.INC Dateien, also Includes, benötigen keinen Interface/Implementation Teil, sind also reine Textfiles.

      Hier z.B. die Datei "VER.INC"

      <pre>

      {$A+,B-,E-,F-,G+,H+,I-,J+,K-,N+,P+,Q-,R-,S-,T-,V+,W-,X+,Y-}

      {$DEFINE 486GE} // Assembler Core only for >= 486 CPU
      {$DEFINE UseASM} // use Assembler optimated core
      {.$DEFINE DEC_Part_II} // Part II is included
      {.$DEFINE DEC_Part_III} // Part III is included

      {.$DEFINE DEC_Short} // Short Registration of DEC Classes
      {.$DEFINE DEC_Mini} // Minimal Registration of DEC Classes
      {.$DEFINE DEC_Manual} // Manual Registration of DEC Classes
      {.$DEFINE DEC_Compress} // Borlands ZLIB Support in TCompress_ZLIB

      {$IFDEF VER80} { Delphi 1.0 }
      {$DEFINE VER_D1}
      {$DEFINE VER_D1H}
      {$ENDIF}

      {$IFDEF VER90} { Delphi 2.0 }
      {$DEFINE VER_D2}
      {$DEFINE VER_D2H}
      {$DEFINE VER_D1H}
      {$ENDIF}

      {$IFDEF VER100} {Borland Delphi 3.0 }
      {$DEFINE VER_D3}
      {$DEFINE VER_D3H}
      {$DEFINE VER_D2H}
      {$DEFINE VER_D1H}
      {$ENDIF}

      {$IFDEF VER120} {Borland Delphi 4.0 }
      {$DEFINE VER_D4}
      {$DEFINE VER_D4H}
      {$DEFINE VER_D3H}
      {$DEFINE VER_D2H}
      {$DEFINE VER_D1H}
      {$ENDIF}

      {$IFDEF VER93} { Borland C++Builder 1.0 }
      {$DEFINE VER_BCB1}
      {$DEFINE VER_BCB1H}
      {$ENDIF}

      {$IFDEF VER110} { Borland C++Builder 3.0 }
      {$DEFINE VER_BCB3}
      {$DEFINE VER_BCB3H}
      {$ENDIF}

      {$IFNDEF VER80} { Delphi 1.0 }
      {$IFNDEF VER90} { Delphi 2.0 }
      {$IFNDEF VER93} { C++Builder 1.0 }
      {$DEFINE VER_D3H} { Delphi 3.0 or higher }
      {$IFNDEF VER100}
      {$DEFINE VER_BCB3H} { C++Builder 3.0 or higher }
      {$IFNDEF VER110}
      {$DEFINE VER_D4H} { Delphi 4.0 or higher }
      {$ENDIF}
      {$ENDIF}
      {$ENDIF}
      {$ENDIF}
      {$ENDIF}

      </pre>

      Gruß Hage

      Comment

      Working...
      X