Difference between revisions of "IDE tricks/sk"

From Free Pascal wiki
Jump to navigationJump to search
m (Fixed syntax highlighting)
 
(2 intermediate revisions by 2 users not shown)
Line 5: Line 5:
 
Môžete buď vytvoriť nový súbor a uložiť ho, alebo ho môžete vytvoriť v jednom kroku. Jednoducho vyvolajte otvorenie súboru (Ctrl+O) a vyberte neexistujúci súbor, napr. unit1.pas. IDE sa vás spýta, či súbor vytvoriť.
 
Môžete buď vytvoriť nový súbor a uložiť ho, alebo ho môžete vytvoriť v jednom kroku. Jednoducho vyvolajte otvorenie súboru (Ctrl+O) a vyberte neexistujúci súbor, napr. unit1.pas. IDE sa vás spýta, či súbor vytvoriť.
  
= Customize new unit / form =
+
= Prispôsobenie východzej novej unity / formulára =
  
Since 0.9.27 you can right click on the 'New unit' (New form) speedbutton and set the file type that should be created.
+
Od verzie 0.9.27 môžete pravým tlačidlom kliknúť na 'New unit' / 'New form' v paneli nástrojov a nastaviť typ súboru, aký sa bude vytvárať. Môžete zaregistrovať viacero typov súborov pomocou IDEIntf alebo pomocou balíčka šablón projektov.
You can register more file types via the IDEIntf or the project templates package.
 
  
= IDE macros =
+
= Makrá v IDE =
  
 
[[IDE Macros in paths and filenames]]
 
[[IDE Macros in paths and filenames]]
  
= Getting the compiler command line parameters created by the IDE =
+
= Získanie parametrov kompilera z príkazového riadka =
  
You can copy the parameters from Project -> Compiler Options -> Show Options. Here the paths are relative to the project directory. So in most cases you can copy them without adjusting.
+
Môžete skopírovať paremetre z Project | Compiler Options | Show Options. Cesty sú tu uvedené relatívne k adresáru projektu, preto ich obvykle môže používať bez upravovania.
  
The parameters are also saved to the *.compiled file. For example if your project is called test1.lpi, then a test1.compiled is created. It is a simple text xml file, so you can just copy the options and adjust the paths to compile on another computer. The file is put into the same directory, where the executable is created.
+
Parametre sú tiež uložené v súbore <názov projektu>.compiled v adresári, kde sa vytvára spustiteľný súbor. Je to obyčajný XML súbor, preto ho môžete skopírovať, upraviť cesty a použiť pri kompilovaní na inom počítači.
  
For packages this works the same.
+
Pre balíčky to funguje úplne rovnako.
  
This way, you can compile your (hopefully working and bugfree) code, outside of the lazarus IDE.
+
Takýmto spôsobom môžete kompilovať váš kód mimo Lazarus IDE.
  
= Closing all editor files except one =
+
= Zatvorenie všetkých editovaných súborov okrem jedného =
  
Under gtk (available for linux, mac os x and freebsd) the source editor pages have a close button right to their page name. Press the Ctrl key while clicking on the button, closes all files except the clicked one.
+
Pod gtk (Linux / Mac OS X / FreeBSD) záložky v okne Source Editor majú napravo tlačidlo 'Zatvoriť'. Stlačte Ctrl+kliknite na tlačidlo, a zatvoria sa všetky ostatné záložky.
  
= Component palette =
+
= Paleta komponentov =
  
== Finding a component in the palette ==
+
== Hľadanie komponenty na palete ==
  
You know the component name, or part of it, but you don't know in which page it was? This tool finds it:
+
Pravým tlačidlom kliknite na hocijakú komponentu na palete, otvorí sa vyskakovacie menu. Vyberte 'Find component'. Zadajte názov (aspoň časť) hľadanej komponenty.
Right click on a component in the palette to open the popup menu. Choose 'Find component'. Type part of the name to filter the list.
 
  
== Open the package of a component in the palette ==
+
== Otvorenie balíčka z ktorého pochádza komponenta na palete ==
  
Right click on the component to open the popup menu, then choose open package.
+
Pravým tlačidlom kliknite na komponentu a vyberte 'Open package'
  
== Find the source declaration of a component in the palette ==
+
== Nájdenie dekláracie komponenty na palete ==
  
Right click on the component to open the popup menu, then choose open unit.
+
Pravým tlačidlom kliknite na komponentu a vyberte 'Open unit'
  
= My application freeze my linux desktop while debugging =
+
= Moja aplikácia spôsobí zatuhnutie mojej linuxovej pracovnej plochy =
  
X (your desktop) can freeze, when an application that grabbed the mouse is stopped by gdb (the debugger).
+
X (vaša pracovná plocha) môže zatuhnúť, ak aplikácia, ktorá sprácováva nejakú udalosť myši bola zastavená debugerom gdb.
  
== Using a second X session ==
+
== Použitie druhej relácie X ==
  
You can start a second X by:
+
Druhé X môžete zapnúť príkazom:
 
   X :1 &
 
   X :1 &
with Ctrl-Alt-F7 you switch to :0 and with Ctrl-Alt-F8 you switch to :1
+
potom pomocou Ctrl-Alt-F7 sa prepnete do :0 a Ctrl-Alt-F8 do :1
after that you can start a second gnome session by:
+
Potom ako zapnete druhé X, môžete zapnúť aj druhú reláciu napr. gnome, pomocou:
 
   gnome-session --display=:1 &
 
   gnome-session --display=:1 &
  
== Using VNC ==
+
== Použitie VNC ==
  
You can use vncserver/client by installing
+
Môžete použiť vncserver/client nainštalovaním tightvncserver/realvncserver.
tightvncserver/realvncserver
+
Server zapnete príkazom:
Start the server with:
 
 
   vncserver :1
 
   vncserver :1
  
AFAIK, a session is also started. You can connect to the vncserver with vncviewer.
+
Potom sa na neho môžete pripojiť pomocou vncviewer.
  
== Debug the application on the second server ==
+
== Debugujte aplikácia na druhom servri ==
In lazarus, in the run parameters for your project, check "use display" and enter
+
V Lazarovi, v 'Run Parameters' nastavte 'use display' na:
 
   :1
 
   :1
  
Now your application will run on the second server, so when it is
+
Teraz vaša aplikácia pobeží na druhom servri, takže keď ju budete debugovať, zatuhne len druhý server (čo ale nie je problém, lebo vy pracujete na prvom).
being debugged, only the second server will freeze (but that won't
 
affect you since you are debugging on the first).
 
  
= Compiling the IDE fast =
+
= Ako kompilovať IDE rýchlejšie =
  
Working on Lazarus itself needs rebuilding the IDE many times. If you use the following tricks and have enough memory and a recent cpu, you should be able to recompile the IDE in a few seconds.
+
Práce na samotnom Lazarovi obvykle vyžadujú prekompilovávanie IDE veľmi často. Pokiaľ použijete nasledovné triky, máte dostatok pamäte a výkonný procesor, mali by ste byť schopný rekomplivať IDE za pár sekúnd.
* Put the Lazarus sources on a fast harddisk. Not on a slow network filesystem.
+
* Umiestnite zdrojové kódy Lazara na rýchly harddisk, nie na pomalý sieťový filesystém.
* Install only needed packages.
+
* Nainštalujte len potrebné balíčky.
* Set USESVN2REVISIONINC=0 to skip the update of the revision.inc.
+
* Nastavte USESVN2REVISIONINC=0, aby sa nevykonávala aktualizácia revision.inc.
* Compile only parts. If the packager registration is recompiled, then all installed packages are recompiled too. If the IDEIntf is recompiled, then all installed design-time packages are recompiled.
+
* Kompilujte po častiach. Ak prekompilujete registráciu balíčkov, všetky preinštalované balíčky sa prekompilujú tiež. Ak prekompilujete IDEIntf, všetky nainštalované designové balíčky sa prekompilujú.
  
= DebugLn of the IDE or a LCL application =
+
= Debugovanie IDE pomocou DebugLn =
  
The IDE writes many useful hints via debugln. Under windows you can get them by starting lazarus with the command line parameter ''--debug-log=filename.txt''. Under Linux/BSD/Mac OS X/Solaris: Just start lazarus in a terminal.
+
IDE zapisuje veľké množstvo použiteľných informácii pomocou DebugLn. Viac [[http://wiki.lazarus.freepascal.org/Lazarus_Faq/sk#Ako_sa_dostanem_k_debug_v.C3.BDstupu.3F|tu]]
This is a general LCL feature.
 
  
= Finding the source file of an IDE window =
+
= Vyhľadanie zdrojového kódu IDE okna =
  
* Open the IDE window.
+
* Otvorte IDE okno.
* Press Ctrl+Shift+F1 to open the help editor.
+
* Stlačte Ctrl+Shift+F1, otvorí sa editor nápovedy.
* Remember the window classname. Close the window.
+
* Zapamätajte si názov triedy okna. Zatvorte okno.
* Use [[IDE Window: Find in files|Find In Files]] to find the source file of the class.
+
* Použite [[IDE Window: Find in files|Find In Files]] na nájdenie zdrojového súboru triedy.
  
= Object Inspector: Events: Frames: Jump to the source of an inherited event =
+
= Object Inspector: Events: Frames: Skok na zdrojový kód odvodenej udalosti =
  
The Object Inspector shows the events of inherited events as ''ClassName.MethodName''. Double clicking will create a new event. Ctrl+Mouse click on the combobox will jump directly to the inherited method body, without creating a new method.
+
V okne Object Inspector sa zobrazujú udalosti odvodených udalostí ako ''ClassName.MethodName''. Dvojitým kliknutím vytvoríte novú udalosť. Ctrl+kliknutím skočíte rovno do tela odvodenej metódy, bez vytvorenia novej metódy.
  
= Events (Method properties) in the Object Inspector =
+
= Udalosti (Events) v okne Object Inspector =
  
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:
+
Udalosti ("vlastnosti majúce ako hodnotu metódu") sú špeciálne vlastnosti, lebo potrebujú ako hodnotu smerník na adresu kódu, ktorý neexistuje počas designu. Preto Lazarus používa rovnaký trik ako Delphi: Každá metóda sa dá pretypovať do TMethod, ktorá obsahuje ''Data'' (smerník na objekt alebo triedu) a ''Code'' (smerník na adresu kódu). Normálne sú obidva nil. IDE nastaví Data na špeciálny kľúč v internej lookup tabuľke a nastaví Code na nil. To znamená
  
*At runtime when the program loads the .lfm file the real method (Data+Code) is used
+
*Počas behu programu, keď sa načítava .lfm súbor, sa použije skutočná (Data+Code) metóda.
*At designtime a method value can either be a real method (Data<>nil and Code<>nil) or a fake method (Data<>nil,Code=nil)
+
*Počas deignu, hodnota môže byť buď reálna metóda (Data<>nil and Code<>nil), alebo vymyslená (fake) metóda (Data<>nil and Code=nil)
*The compiler has for Delphi compatibility some specials about comparing method values.
+
*Z dôvodu kompatibility s Delphi má kompiler niekoľko špecialít:
  
Do not use:
+
Nepoužívajte:
<Delphi>
+
<syntaxhighlight lang=pascal>
if OnMyEvent<>nil then OnMyEvent(...); // wrong, because it checks Data too
+
if OnMyEvent<>nil then OnMyEvent(...); // zle, lebo kontroluje tiež Data
</Delphi>
+
</syntaxhighlight>
  
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:
+
Pretože tento spôsob kontroluje aj Code aj Data, pokúsi sa vykonať vymyslenú (fake) metódu, skočí do nil a nastane výnimka. Namiesto toho používajte funkciu Assign:
<Delphi>
 
if Assigned(OnMyEvent) then OnMyEvent(...); // correct, checking only Code
 
</Delphi>
 
  
Do not use:
+
<syntaxhighlight lang=pascal>
<Delphi>
+
if Assigned(OnMyEvent) then OnMyEvent(...); // správne, kontroluje len Code
if OnMyEvent=NewValue then exit; // wrong, because it compares only Code
+
</syntaxhighlight>
</Delphi>
 
  
Because this only compares the Code. Use instead
+
Nepoužívajte:
<Delphi>
+
<syntaxhighlight lang=pascal>
if CompareMem(@FOnMyEvent,@NewValue,SizeOf(TMethod)) then exit; // correct, checking both Data and Code
+
if OnMyEvent=NewValue then exit; // zle, lebo kontroluje len Code
</Delphi>
+
</syntaxhighlight>
 +
 
 +
Namiesto toho používajte
 +
<syntaxhighlight lang=pascal>
 +
if CompareMem(@FOnMyEvent,@NewValue,SizeOf(TMethod)) then exit; // správne, kontroluje aj Code aj Data
 +
</syntaxhighlight>

Latest revision as of 07:59, 17 February 2020

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

Vytvorenie nového súboru pomocou Open File

Môžete buď vytvoriť nový súbor a uložiť ho, alebo ho môžete vytvoriť v jednom kroku. Jednoducho vyvolajte otvorenie súboru (Ctrl+O) a vyberte neexistujúci súbor, napr. unit1.pas. IDE sa vás spýta, či súbor vytvoriť.

Prispôsobenie východzej novej unity / formulára

Od verzie 0.9.27 môžete pravým tlačidlom kliknúť na 'New unit' / 'New form' v paneli nástrojov a nastaviť typ súboru, aký sa bude vytvárať. Môžete zaregistrovať viacero typov súborov pomocou IDEIntf alebo pomocou balíčka šablón projektov.

Makrá v IDE

IDE Macros in paths and filenames

Získanie parametrov kompilera z príkazového riadka

Môžete skopírovať paremetre z Project | Compiler Options | Show Options. Cesty sú tu uvedené relatívne k adresáru projektu, preto ich obvykle môže používať bez upravovania.

Parametre sú tiež uložené v súbore <názov projektu>.compiled v adresári, kde sa vytvára spustiteľný súbor. Je to obyčajný XML súbor, preto ho môžete skopírovať, upraviť cesty a použiť pri kompilovaní na inom počítači.

Pre balíčky to funguje úplne rovnako.

Takýmto spôsobom môžete kompilovať váš kód mimo Lazarus IDE.

Zatvorenie všetkých editovaných súborov okrem jedného

Pod gtk (Linux / Mac OS X / FreeBSD) záložky v okne Source Editor majú napravo tlačidlo 'Zatvoriť'. Stlačte Ctrl+kliknite na tlačidlo, a zatvoria sa všetky ostatné záložky.

Paleta komponentov

Hľadanie komponenty na palete

Pravým tlačidlom kliknite na hocijakú komponentu na palete, otvorí sa vyskakovacie menu. Vyberte 'Find component'. Zadajte názov (aspoň časť) hľadanej komponenty.

Otvorenie balíčka z ktorého pochádza komponenta na palete

Pravým tlačidlom kliknite na komponentu a vyberte 'Open package'

Nájdenie dekláracie komponenty na palete

Pravým tlačidlom kliknite na komponentu a vyberte 'Open unit'

Moja aplikácia spôsobí zatuhnutie mojej linuxovej pracovnej plochy

X (vaša pracovná plocha) môže zatuhnúť, ak aplikácia, ktorá sprácováva nejakú udalosť myši bola zastavená debugerom gdb.

Použitie druhej relácie X

Druhé X môžete zapnúť príkazom:

  X :1 &

potom pomocou Ctrl-Alt-F7 sa prepnete do :0 a Ctrl-Alt-F8 do :1 Potom ako zapnete druhé X, môžete zapnúť aj druhú reláciu napr. gnome, pomocou:

  gnome-session --display=:1 &

Použitie VNC

Môžete použiť vncserver/client nainštalovaním tightvncserver/realvncserver. Server zapnete príkazom:

  vncserver :1

Potom sa na neho môžete pripojiť pomocou vncviewer.

Debugujte aplikácia na druhom servri

V Lazarovi, v 'Run Parameters' nastavte 'use display' na:

 :1

Teraz vaša aplikácia pobeží na druhom servri, takže keď ju budete debugovať, zatuhne len druhý server (čo ale nie je problém, lebo vy pracujete na prvom).

Ako kompilovať IDE rýchlejšie

Práce na samotnom Lazarovi obvykle vyžadujú prekompilovávanie IDE veľmi často. Pokiaľ použijete nasledovné triky, máte dostatok pamäte a výkonný procesor, mali by ste byť schopný rekomplivať IDE za pár sekúnd.

  • Umiestnite zdrojové kódy Lazara na rýchly harddisk, nie na pomalý sieťový filesystém.
  • Nainštalujte len potrebné balíčky.
  • Nastavte USESVN2REVISIONINC=0, aby sa nevykonávala aktualizácia revision.inc.
  • Kompilujte po častiach. Ak prekompilujete registráciu balíčkov, všetky preinštalované balíčky sa prekompilujú tiež. Ak prekompilujete IDEIntf, všetky nainštalované designové balíčky sa prekompilujú.

Debugovanie IDE pomocou DebugLn

IDE zapisuje veľké množstvo použiteľných informácii pomocou DebugLn. Viac [[1]]

Vyhľadanie zdrojového kódu IDE okna

  • Otvorte IDE okno.
  • Stlačte Ctrl+Shift+F1, otvorí sa editor nápovedy.
  • Zapamätajte si názov triedy okna. Zatvorte okno.
  • Použite Find In Files na nájdenie zdrojového súboru triedy.

Object Inspector: Events: Frames: Skok na zdrojový kód odvodenej udalosti

V okne Object Inspector sa zobrazujú udalosti odvodených udalostí ako ClassName.MethodName. Dvojitým kliknutím vytvoríte novú udalosť. Ctrl+kliknutím skočíte rovno do tela odvodenej metódy, bez vytvorenia novej metódy.

Udalosti (Events) v okne Object Inspector

Udalosti ("vlastnosti majúce ako hodnotu metódu") sú špeciálne vlastnosti, lebo potrebujú ako hodnotu smerník na adresu kódu, ktorý neexistuje počas designu. Preto Lazarus používa rovnaký trik ako Delphi: Každá metóda sa dá pretypovať do TMethod, ktorá obsahuje Data (smerník na objekt alebo triedu) a Code (smerník na adresu kódu). Normálne sú obidva nil. IDE nastaví Data na špeciálny kľúč v internej lookup tabuľke a nastaví Code na nil. To znamená

  • Počas behu programu, keď sa načítava .lfm súbor, sa použije skutočná (Data+Code) metóda.
  • Počas deignu, hodnota môže byť buď reálna metóda (Data<>nil and Code<>nil), alebo vymyslená (fake) metóda (Data<>nil and Code=nil)
  • Z dôvodu kompatibility s Delphi má kompiler niekoľko špecialít:

Nepoužívajte:

if OnMyEvent<>nil then OnMyEvent(...); // zle, lebo kontroluje tiež Data

Pretože tento spôsob kontroluje aj Code aj Data, pokúsi sa vykonať vymyslenú (fake) metódu, skočí do nil a nastane výnimka. Namiesto toho používajte funkciu Assign:

if Assigned(OnMyEvent) then OnMyEvent(...); // správne, kontroluje len Code

Nepoužívajte:

if OnMyEvent=NewValue then exit; // zle, lebo kontroluje len Code

Namiesto toho používajte

if CompareMem(@FOnMyEvent,@NewValue,SizeOf(TMethod)) then exit; // správne, kontroluje aj Code aj Data