Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Eigene Compilerschalter ein-/ausschalten


MisterBum83 - Mi 22.12.10 13:03
Titel: Eigene Compilerschalter ein-/ausschalten
Hallo zusammen,

besteht die Möglichkeit, eigen definierte Compilerschalter z.B. {$DEFINE testschalter}, die in einer INC-Datei vorhanden sind, im Quellcode über {$testschalter ON} bzw. {$testschalter OFF} ein- bzw. auszuschalten?

Wenn ich dies so mache meckert der Compiler immer mit:

Quelltext
1:
Ungültige Compileranweisung: 'testschalter'                    


Geht dies überhaupt mit eigenen C-Schaltern?

Gruß und Dank
MisterBum


jaenicke - Mi 22.12.10 13:15

Das ist kein Schalter was du da definierst. Du definierst, ob die Direktive definiert ist oder nicht. Und mit {$undef testschalter} kannst du die Definition auch wieder löschen.


MisterBum83 - Mi 22.12.10 13:20

D.h. ich kann den "testschalter" so garnicht zur Laufzeit ein-/ausschalten?
Wie könnte ich es denn machen?

Gruß und Dank
MisterBum


jaenicke - Mi 22.12.10 13:28

Na, wie ich es geschrieben habe: Definieren oder die Definition wieder entfernen. Wo ist das Problem? :nixweiss:


Flamefire - Mi 22.12.10 13:29

einen COMPILERschalter zur LAUFZEIT schalten?
Fällt dir was auf?


MisterBum83 - Mi 22.12.10 13:33

user profile iconFlamefire hat folgendes geschrieben Zum zitierten Posting springen:
einen COMPILERschalter zur LAUFZEIT schalten?
Fällt dir was auf?


OK, es geht nicht.
Aber was bedeuten dann diese Anweisungen:
{$testschalter ON} bzw. {$testschalter OFF}

Wo müsste ich diesen testschalter anlegen oder deklarieren, damit ich ein- bzw. ausschalten kann?


Narses - Mi 22.12.10 13:50

Moin!

Compiler-Schalter sind Dinge, die hart im Compiler verdrahtet sind, sowas kann man nicht selbst "nachbauen". Du kannst aber eigene Symbole definieren und die Existenz dann abfragen und darauf reagieren, z.B. so:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
{$DEFINE DEBUG_BUILD}

{$IFDEF DEBUG_BUILD}
  SomeValue := 1// zum Testen 1 nehmen
{$ELSE}
  SomeValue := 2// das soll dann in der Produktiv-Version genutzt werden
{$ENDIF}
Wenn du dann irgendwann ein Release-Build machst, dann schreibst du beim Define stattdessen:

Delphi-Quelltext
1:
{$DEFINE RELEASE_BUILD}                    
Dann wird das Symbol nicht mehr gefunden. :idea:

cu
Narses


Delete - Mi 22.12.10 20:57

Oder man setzt einfach einen Punkt davor und deaktiviert so den Compilerschalter.