Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Compilerschalter?
Aya - Di 18.02.03 20:19
Titel: Compilerschalter?
Hi,
kann mir mal wer verraten wie man einen Compilerschalter benutzt???
Au'revoir,
Aya~
AndyB - Di 18.02.03 22:52
Quelltext
1: 2: 3:
| {$Complilerschalter ON} {$Complilerschalter OFF} {$Complilerschalter Wert} |
Bei den verkürzten Namen:
Quelltext
1: 2: 3:
| {$Schalter+} {$Schalter-} {$Schalter Wert} |
Aya - Di 18.02.03 22:54
Hä? :shock:
Raphael O. - Di 18.02.03 22:57
Wollt ich auch gerade sagen... :evil:
könnteste mal erklären was die genau bringen und ein Bsp. geben??
Fiji-Fighter
torstenheinze - Di 18.02.03 22:59
ich dachte sowas wie 'wollt ich auch mal fragen' sollen wir doch net schreiben :shock:
Raphael O. - Di 18.02.03 23:03
So was wie du gerade sollte man auch nicht sagen...
Besserwisser ;) :cry:
Zitat: |
könnteste mal erklären was die genau bringen und ein Bsp. geben?? |
das hier hat aber schon ein sinn...
Fiji-Fighter
torstenheinze - Di 18.02.03 23:05
is ja gut :wink: :)
der wird bestimmt schon ein beispiel oder nähere erläuterungen bringen
Zitat: |
So was wie du gerade sollte man auch nicht sagen...
|
ich hab ja nur auf eine bestimmung hingewiesen :roll:
Fred Ferkel - Di 18.02.03 23:23
seht doch einfach mal in der delphi hilfe unter compiler-direktiven nach
z.b fpr bedingt compilierung
Quelltext
1: 2: 3: 4: 5:
| {$define entwicklung} ... {$ifdef entwicklung} showmessage(meinstringvalue); {$endif} |
AndyB - Di 18.02.03 23:58
Es wurde doch gefragt: wie man einen Compilerschalter benutzt
Und meine Antwort sind verallgemeinerte Beispiele. Für das Wie und Warum sollte man dann doch mal die Delphi Hilfe konsultieren.
Tino - Mi 19.02.03 11:32
Hi,
Compilerschalter kannst du dazu benutzen um dem Compiler beim compilieren mitzuteilen welcher Sourcecode er compilieren soll. Ich benutze in meinem Programm mehrere Compilerschalter um verschiedene Versionen (DEV-, TEST-, BETA-Version) von meinem Programm zu compileren.
So könnte zum Beispiel ein praktischer Einsatz aussehen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure tMainForm.CreateForm (Sender: tObject); Begin {$IFDEF ptDEV} Caption := 'Mein Programm v1.0 DEV'; {$ENDIF}
{$IFDEF ptTEST} Caption := 'Mein Programm v1.0 TEST'; {$ENDIF}
{$IFDEF ptBETA} Caption := 'Mein Programm v1.0 BETA'; {$ENDIF}
{$IFDEF ptPROD} Caption := 'Mein Programm v1.0'; {$ENDIF} End; |
Je nach dem welche Version du jetzt compileren willst setzt du unter Projekt-Obtionen den entsprechenden Compilerschalter und der Delphi-Compiler compilert dann nur den entsprechenden Sourcecode.
Gruß
TINO
Brueggendiek - Mi 19.02.03 11:56
Hallo Aya!
Leider geht das ein Wenig durcheinander in diesem Thread!
Compilerschalter dienen dazu, die in "Projekt", "Optionen", "Compiler" möglichen Einstellungen auch direkt im Source vornehmen zu können.
Es gibt globale Schalter, die gelten für eine ganze Datei, und lokale Schalter, die gelten bis zur nächsten Änderung.
Schalter sind z.B.:
A: Ausrichtung der Variablen bei Records: +: ausrichten, -: alle Records als Packed betrachten
B: Boolean auswerten: +: Boolean-Ausdruck immer komplett auswerten, -: nur auswerten, bis eindeutiges Ergebnis vorliegt
Dann gibt es noch weitere Compiler-Direktiven.
Mit $IFDEF, $IFNDEF, $ELSE, $END kan man z.B. mehrere Versionen in einem Source erstellen.
Quelltext
1: 2: 3:
| {$IFDEF test} ArbeitsVerzeichnis := 'C:\testdaten\testprogramm'; {$ENDIF} |
Wird jetzt in "Projekt", "Optionen", Verzeichnisse/Bedingungen" unter "Bedingungen" der String "test" eingetragen, wird die Zuweisung mitcompiliert, sonst nicht. Dadurch kann man z.B. auf eine Testumgebung umschalten, wenn Entwickung und Einsatz eines Programmes auf demselben Rechner erfolgen sollen - und man sich beim Testen die Daten nicht zerstören will.
Weiteres unter "Liste der Compiler-Direktiven" in der OH!
Die Schalter waren bei früheren Turbo-Pascal-Versionen sehr wichtig, weil es da noch keine Einstellungen im Compiler dafür gab.
Auch heute noch aktuell bei Zugriff auf klassische Dateien (Textfile, typisierte Datei): $I! Dabei gibt es keine Exception-Meldung in der IDE.
Aber wer greift schon mühsam Satz für Satz auf die Festplatte zu, wenn er die Datei doch mit einer "LoadFromFile"-Anweisung blitzschnell und ohne Programmieraufwand (gibbet da eigentlich auch ne Komponente für, bin zu faul, die Zeile zu tippen :?: ) komplett in den Hauptspeicher laden kann - notfalls schreiben wir eben in die Systemvorraussetzungen: mindestens 700GByte RAM :mrgreen:
Gruß
Dietmar Brüggendiek
Raphael O. - Mi 19.02.03 14:22
Das kompilierte Programm wird dadurch dann aber auch net größer, weil nicht alles mit reinkompiliert wird, oder??
Fiji-Fighter
Fred Ferkel - Mi 19.02.03 15:08
genau vor dem compilieren werden alle kommentare "entfernt" genauso wie die dinge die per compilerdirektive nicht mitkompiliert werden sollen...daher klappt auch z.B:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| var x:integer; begin x:=0; {$ifdef IrgendwasNichtDefiniertes} showmessage(x); {$endif} end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!