IDE Window: Codetools Defines Editor/de

From Lazarus wiki

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.