IDE tricks/de

From Free Pascal wiki
Jump to navigationJump to search

Deutsch (de) English (en) français (fr) magyar (hu) 日本語 (ja) 한국어 (ko) русский (ru) slovenčina (sk) 中文(中国大陆)‎ (zh_CN)

Erzeugen einer neuen Datei mit 'Datei Öffnen'

Sie können eine neue Datei erzeugen und speichern, oder sie können eine neue Datei erzeugen mit Dateiname und Dateityp in einem Schritt: Gehen sie zu Datei -> Öffnen (Strg+o) und wählen eine nicht existierende Datei. Zum Beispiel: unit1.pas. Die IDE wird sie fragen, ob die Datei erzeugt werden soll.

Den Befehl 'Neue Unit / Neue Form' anpassen

Seit Version 0.9.27 können Sie auf den Knopf 'Neue Unit' (Neue Form) rechts klicken und einstellen, welcher Dateityp erzeugt werden soll. Sie können weitere Dateitypenn über das IDEIntf oder das project templates package registrieren.

IDE Makros

siehe IDE Macros in paths and filenames

Erhalten der von der IDE erzeugten Compiler-Kommandozeilenparameter

Sie können die Parameter kopieren von Projekt -> Compilereinstellungen -> Einstellungen anzeigen. Hier sind die Pfade relativ zum Projektverzeichnis. Daher können sie sie in den meisten Fällen ohne Anpassung kopieren.

Die Parameter sind auch in der *.compiled Datei gespeichert. Zum Beispiel wenn ihr Projekt test1.lpi heißt, dann wird eine test1.compiled erzeugt. Es ist eine einfache XML Textdatei, so dass sie einfach die Einstellungen kopieren können und die Pfade anpassen, um auf einem anderen Computer zu kompilieren. Die Datei wird im selben Verzeichnis wie das executable abgelegt.

Für Packages funktioniert es auf die selbe Weise.

Auf diese Weise können sie ihren (hoffentlich fehlerfreien und funktionierenden) Code kompilieren, außerhalb der Lazarus IDE.

Schließen aller Editorseiten (außer der aktuellen Seite)

Unter GTK (verfügbar für Linux, Mac OS X und FreeBSD) haben die Quelltexteditorseiten einen Schließen-Button rechts von ihrem Seitennamen. Drücken sie die Strg Taste, während sie auf den Button klicken, werden alle Dateien geschlossen ausgenommen der angeklickten.

Komponentenpalette

Finden einer Komponente in der Palette

Sie kennen den Komponentennamen, oder einen Teil davon, aber sie wissen nicht, auf welcher Seite sie ist? Dieses Werkzeug findet sie: Klicken sie rechts auf eine Komponente in der Palette um das Popup-Menü zu öffnen. Wählen sie 'Komponente finden'. Geben sie den Teil des Namens ein, um die Liste zu filtern.

Öffnen des Packages einer Komponente in der Palette

Klicken sie rechts auf die Komponente um das Popup-Menü zu öffnen, dann wählen sie 'Open Package...'.

Finden der source declaration einer Komponente in der Palette

Klicken sie rechts auf die Komponente um das Popup-Menü zu öffnen, dann wählen sie 'Open Unit...'.

Meine Anwendung friert meinen Linux Desktop ein während des Debuggens

X (ihr Desktop) kann einfrieren, wenn eine Anwendung, die grabbed the mouse, durch gdb (den Debugger) gestoppt wird.

Verwendung einer zweiten X Session

Sie können einen zweiten X starten durch:

  X :1 &

mit Strg-Alt-F7 wechseln sie zu to :0 und mit Strg-Alt-F8 wechseln sie zu :1 Danach können sie eine zweite Gnome Session starten durch:

  gnome-session --display=:1 &

Verwendung von VNC

Sie können vncserver/client verwenden durch installing tightvncserver/realvncserver Starten sie den Server mit:

  vncserver :1

AFAIK wird auch eine Session gestartet. Sie können zum vncserver verbinden mit vncviewer.

Debuggen der Anwendung auf dem zweiten Server

In Lazarus, in den Startparametern für ihr Projekt, prüfen sie "use display" und geben ein

 :1

Jetzt wird ihre Anwendung auf dem zweiten Server laufen. So kann während des Debuggens nur der zweite Server einfrieren (aber das wird sie nicht beeinflussen, seit sie auf dem ersten debuggen).

Schnelle Kompilierung der IDE

Das Arbeiten an Lazarus selbst erfordert häufig ein Neuerstellen der IDE. Wenn sie die folgenden Tricks anwenden, genug Arbeitsspeicher und eine aktuelle CPU haben, sollten sie in der Lage sein, die IDE in einigen Sekunden zu rekompilieren.

  • Legen sie die Lazarus Quellen auf einer schnellen Festplatte ab, nicht in einem langsamen Netzwerk-Dateisystem.
  • Installieren sie nur die benötigten Packages.
  • Setzen sie USESVN2REVISIONINC=0 um das Aktualisieren von revision.inc zu überspringen.
  • Kompilieren sie nur Teile. Wenn die packager registration rekompiliert ist, dann sind auch alle installierten Packages rekompiliert. Wenn IDEIntf rekompiliert ist, dann sind alle installierten Entwicklungszeit-Packages rekompiliert.

DebugLn der IDE oder einer LCL Anwendung

Die IDE gibt viele hilfreiche Hinweise mittels debugln aus. Unter Windows können sie diese erhalten, indem sie Lazarus mit dem Kommandozeilenparameter --debug-log=filename.txt starten. Unter Linux/BSD/Mac OS X/Solaris: Starten sie Lazarus einfach in einem Terminal. Dies ist ein normales LCL Feature.

Finden der Quelldatei eines IDE Fensters

  • Öffnen sie das IDE Fenster.
  • Drücken sie Strg+Shift+F1 um den Hilfeeditor zu öffnen.
  • Merken sie sich den Fenster-Klassennamen. Schliessen sie das Fenster.
  • Verwenden sie In Dateien suchen um die Quelldatei der Klasse zu finden.

Objektinspektor: Ereignisse: Frames: Jump to the source of an inherited event

The Object Inspector shows the events of inherited events as ClassName.MethodName. Double clicking will create a new event. Strg+Mouse click on the combobox will jump directly to the inherited method body, without creating a new method.

Ereignisse (Method properties) im Objektinspektor

Events (Method properties) are special properties, because they need as value a code address pointer, which does not exist at design time. That's why Lazarus uses the same trick as the Delphi IDE: Every method value can be type casted to TMethod, which contains Data (the object or class pointer) and the Code (the address pointer). Normally both are not nil. The IDE sets Data to a special key value for its internal lookup table and sets Code to nil. This means:

  • At runtime when the program loads the .lfm file the real method (Data+Code) is used
  • At designtime a method value can either be a real method (Data<>nil and Code<>nil) or a fake method (Data<>nil,Code=nil)
  • The compiler has for Delphi compatibility some specials about comparing method values.

Verwenden sie nicht: <Delphi> if OnMyEvent<>nil then OnMyEvent(...); // wrong, because it checks Data too </Delphi>

Because this checks both Data and Code and will execute the fake method, resulting in a jump to nil. This will only raise an exception, so it does not do much harm, but the IDE will show the user an error dialog. Use instead the Assigned function: <Delphi> if Assigned(OnMyEvent) then OnMyEvent(...); // correct, checking only Code </Delphi>

Verwenden sie nicht: <Delphi> if OnMyEvent=NewValue then exit; // wrong, because it compares only Code </Delphi>

Because this only compares the Code. Use instead <Delphi> if CompareMem(@FOnMyEvent,@NewValue,SizeOf(TMethod)) then exit; // correct, checking both Data and Code </Delphi>