IDE Window: Codetools Defines Editor/de
│
Deutsch (de) │
English (en) │
français (fr) │
Wichtig
Diese Werte werden nur von den Codetools verwendet, nicht vom Compiler. Um Suchpfade einzurichten verwenden sie die Umgebungseinstellungen, Compilereinstellungen, package editors und den Projektinspektor. Die IDE erzeugt automatisch Knoten für diese Werte.
Dieser Dialog ist hauptsächlich für das Debugging, wenn die Codetools anders als der Compiler analysieren. Oder um Delphi Quellen in der Lazarus IDE einzurichten.
Einleitung
Die Codetools bieten Funktionen, um Pascal Quelltexte zu analysieren - FreePascal, Delphi, Kylix. Um die Pascal Quelltexte zu finden, benötigen sie Suchpfade und um die IFDEFs zu finden, benötigen sie die Compiler flags. Diese Werte sind durch Regeln definiert - die define templates.
Für jedes Verzeichnis verwalten die Codetools eine Reihe von Werten. Das bedeutet, dass jede Unit in einem Verzeichnis die selben Werte teilt (Pfade und flags). Deshalb sollten sie zwei Projekte/Packages nur dann in ein Verzeichnis packen, wenn sie die selben Einstellungen verwenden. Andererseits erlaubt dieses System, eine beliebige Anzahl von verschiedenen Quellen zu selben Zeit zu handhaben. Zum Beispiel können sie Delphi und FreePascal Quelltexte haben. Die Delphi Quelltexte verwenden die Delphi system.pas, während die FPC Quelltexte die FPC system.pp verwenden. Oder sie können zwei verschiedene FPC Versionen haben. Oder verschiedene FPC cross Quellen (zum Beispiel für Linux und Windows). Sie müssen die IDE nicht neu starten oder irgendetwas dafür neu kompilieren. Anmerkung: Der Compiler kann natürlich nur einen Quellentyp handhaben.
Dieser Dialog erlaubt die define templates zu erforschen und zu bearbeiten.
Alle Werte und Variablen können Makros enthalten. Eine Variable, der ein leerer Wert zugewiesen wurde, ist dennoch festgelegt. Das bedeutet, dass 'IFDEF variable' immer noch 'true' ergibt. Um eine Variable zu eliminieren, verwenden sie 'Zurücksetzen'.
Tree - predefined nodes
Free Pascal Compiler
This node provides global definitions, provided by the currently used compiler set in the project's compiler options. They are updated if you change the compiler in the compiler options (e.g. IDE loads a project) or 'Rescan FPC source directory'. they are not automatically updated when you install another FPC while the IDE is running. They are auto generated and can not be changed.
Free Pascal Sources
This node provides definitions for the Free Pascal source directory, defined in the environment options. The nodes are auto created by some fix wired heuristics in the codetools (components/codetools/definetemplates.pas function CreateFPCSrcTemplate) and can not be changed in the dialog. They are updated when the FPC source directory is changed (e.g. in options or on IDE start) or the Target CPU or OS changes or by 'Rescan FPC source directory'. They are not updated, when files are changed on disk while the IDE is running.
Lazarus Sources
This node provides definitions for the Lazarus source directory, defined in the environment options. The nodes are auto created by some fix wired heuristics in the codetools (components/codetools/definetemplates.pas function CreateLazarusSrcTemplate) and can not be changed in the dialog. They are updated when the Lazarus source directory is changed (e.g. in options or on IDE start). They are not updated, when files are changed on disk while the IDE is running.
Packages
The IDE creates on node for each package. At the moment the nodes of the packages LCL, IDEIntf, SynEdit and Codetools are special packages and defined by the 'Lazarus Sources'.
Node types
The codetools parse the nodes from top to bottom. Some nodes like Directory, IF, IFDEF, ... control if their child nodes are parsed or not.
The tree shows two icons for each node. The first is the node type (Block, IF, IFDEF, ...). The second icon shows a 'computer', if the node was auto created and can not be altered.
Block
Dieser Knotentyp existiert nur bei Gruppenknoten.
Verzeichnis
Um nur für ein spezifisches Verzeichnis gültige Knoten zu erzeugen, verwenden sie diesen Knotentyp. Die Kind Knoten werden nur für das in Value spezifizierte Verzeichnis analysiert. Definition und Zurücksetzen Knoten werden Variablen setzen/löschen nur für dieses Verzeichnis, nicht für die Unterverzeichnisse. Um Variablen für Unterverzeichnisse zu setzen/löschen, erzeugen sie einen Kind Knoten vom Typ Verzeichnis oder verwenden Rekursion festlegen, Rekursion zurücknehmen.
Definition
Setzt einen flag/Wert für das aktuelle Verzeichnis. Beispiele:
- Set Name to 'Def1'. Jetzt wird IFDEF Def1 true sein und in einer Quelle wird {$IFDEF Def1} von den Codetools analysiert.
- Set Name to 'Def1' and Value to '123'. Dasselbe wie oben, aber zusätzlich ergibt IF Def1=123 true.
- Set Name to 'Def1' and Value to '$(Def1);bogus'. Dies wird ';bogus' dem Wert von Def1 anfügen.
Rekursion festlegen
Dasselbe wie Definition, aber für das aktuelle Verzeichnis und alle Unterverzeichnisse.
Zurücksetzen
Eliminiert eine Variable aus der aktuellen Definitionsmenge.
Rekursion zurücknehmen
Dasselbe wie Zurücksetzen, aber für das aktuelle Verzeichnis und alle Unterverzeichnisse.
Alles zurücksetzen
Dasselbe wie Rekursion zurücknehmen, aber eliminiert alle Variablen. Hilfreich für Verzeichnisse, die ihre eigene Welt bilden, zum Beispiel die FPC Quelle.
IfDef
Wenn die Variable definiert ist werden die Kind Knoten ausgeführt.
IfNDef
Wenn die Variable nicht definiert ist werden die Kind Knoten ausgeführt.
If
Führt den Ausdruck in Value aus und wenn das Ergebnis '1' ist dann werden die Kind Knoten ausgeführt. Die Syntax ist die selbe wie beim Compiler. Zum Beispiel 'defined(avariable)' gibt '1' zurück, wenn die Variable definiert ist, sonst '0'. Beispiele:
- Set 'Value' to 'defined(linux) and defined(i386)'
- Um auf eine spezifische FPC Version zu prüfen: 'VER2_0 or VER2_2'. Die Variablen werden ersetzt durch ihre Werte. Leere oder nicht definierte Werte ergeben '0'.
- Um die Werte von zwei Variablen zu vergleichen verwenden sie: '$(#TargetOS)'='$(#SrcOS)'. WICHTIG: Wenn sie die Hochkommas vergessen, passiert das Folgende: Zuerst werden die Makros ersetzt, was linux=unix ergibt, welches vorher ersetzt wurde durch die Werte der Variablen: 1=1, was immer true ergibt.
ElseIf
Wenn alle vorherigen If false ergeben, dann wird der ElseIf oder Else Knoten ausgeführt. Das ElseIf ist das selbe wie ein Else If.
Else
Wenn alle vorherigen If oder ElseIf false ergeben, dann wird dieser Knoten ausgeführt.
Menü
Beenden
Speichern und Ende
Speichert die Änderungen und schließt den Dialog.
Beenden ohne Speichern
Verwirft die Änderungen und schließt den Dialog.
Editieren
Knoten nach oben bewegen
Bewegt den gewählten Knoten vor den nächsten upper sibling.
Knoten nach unten bewegen
Bewegt den gewählten Knoten unter den nächsten lower sibling.
Knoten eine Ebene nach oben bewegen
Bewegt den gewählten Knoten to parent node.
Knoten eine Ebene nach unten bewegen
Macht den gewählten Knoten zu einem child of the previous sibling.
Knoten darunter einfügen
Erzeugt einen neuen Knoten und fügt ihn unter dem gewählten Knoten ein.
Knoten als Kind einfügen
Erzeugt einen neuen Knoten und fügt ihn als child des gewählten Knotens ein.
Knoten löschen
Löscht den gewählten Knoten.
Konvertiere Knoten
Ändert den Typ des gewählten Knotens.
Werkzeuge
Vorschau öffnen
Öffnet das CodeTools-Verzeichniswerte Fenster.
Vorlage einfügen
Erzeugt einen neuen Knoten aus den Vorlagen und fügt ihn unter dem gewählten Knoten ein.
Treeview
Wählen sie einen Knoten und betrachten sie die Details unten.
Gewählter Knoten
Name
Beschreibung
Variable
Wert als Text
Zeigt den Wert.
Wert als Dateipfade
Splittet den Wert mit Semikolons und zeigt jeden Pfad auf einer separaten Zeile.