Difference between revisions of "IDE tricks/hu"

From Lazarus wiki
Jump to navigationJump to search
m
m (Fixed syntax highlighting; deleted category included in page template)
 
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
{{IDE tricks}}
 
{{IDE tricks}}
 +
 +
 +
= IDE trükkök =
 +
 +
 +
__TOC__
  
 
= Új fájl létrehozása Fájl megnyitásával =
 
= Új fájl létrehozása Fájl megnyitásával =
  
Létrehozhatsz új fájlt és elmentheted, vagy létrehozhatsz egy új fájl fájlnévvel és típussal egy lépésben is: egyszerűen nyiss meg egy fájlt (CTRL + o) és válassz ki egy nem létező fájlt. Például: unit1.pas. Az IDE rá fog kérdezni, hogy létrehozza-e.
+
<div style="text-align: justify;">
 +
Létrehozhatsz új fájlt és elmentheted, vagy létrehozhatsz egy új fájl fájlnévvel és típussal egy lépésben is: egyszerűen nyiss meg egy fájlt ({{keypress|CTRL}} + {{keypress|O}}) és válassz ki egy nem létező fájlt. Például: unit1.pas. Az IDE rá fog kérdezni, hogy létrehozza-e.
 +
</div>
  
 
= Új unit / form testreszabása =
 
= Új unit / form testreszabása =
  
 +
<div style="text-align: justify;">
 
A 0.9.27-es verziótól kezdve jobb gombbal klikkelve az 'Új unit' (Új form) gyorsgombra, beállíthatod a létrehozandó fájl típusát.
 
A 0.9.27-es verziótól kezdve jobb gombbal klikkelve az 'Új unit' (Új form) gyorsgombra, beállíthatod a létrehozandó fájl típusát.
 
Regisztrálhatsz további fájltípusokat az IDEIntf-en vagy a projekt sablonok csomagon keresztül.
 
Regisztrálhatsz további fájltípusokat az IDEIntf-en vagy a projekt sablonok csomagon keresztül.
 +
</div>
  
 
= IDE makrók =
 
= IDE makrók =
  
[[IDE Macros in paths and filenames]]
+
[[IDE Macros in paths and filenames|IDE makrók az elérési utakban és fájlnevekben]]
  
 
= IDE direktívák =
 
= IDE direktívák =
  
[[IDE directives]]
+
[[IDE directives|IDE direktívák]]
  
 
= Az IDE által létrehozott fordítói parancssori paraméterek megszerzése =
 
= Az IDE által létrehozott fordítói parancssori paraméterek megszerzése =
  
Kimásolhatod a paramétereket a Projekt -> Fordító beállításai -> Beállítások megjelenítése ablakból. Itt a projekt könyvtárhoz képest relatív elérési utak vannak megadva. Tehát a legtöbb esetben módosítás nélkül felhasználhatod őket.
+
<div style="text-align: justify;">
 +
Kimásolhatod a paramétereket a Projekt -> Fordító beállításai ... menü Beállítások megjelenítése gombra klikkelve megnyíló ablakból. Itt a projekt könyvtárhoz képest relatív elérési utak vannak megadva. Tehát a legtöbb esetben módosítás nélkül felhasználhatod őket.
  
 
A paraméterek a *.compiled fájlban is megtalálhatók. Például, ha a projekted neve test1.lpi, akkor a test1.compiled is létrejön. Ez egy egyszerű XML fájl, tehát egyszerűen kimásolhatod az opciókat, és beállíthatod az elérési utakat, hogy egy másik számítógépen is le tudd fordítani a projektedet. A fájl ugyanabba a könyvtárba kerül, ahol a futtatható fájl létrejön.
 
A paraméterek a *.compiled fájlban is megtalálhatók. Például, ha a projekted neve test1.lpi, akkor a test1.compiled is létrejön. Ez egy egyszerű XML fájl, tehát egyszerűen kimásolhatod az opciókat, és beállíthatod az elérési utakat, hogy egy másik számítógépen is le tudd fordítani a projektedet. A fájl ugyanabba a könyvtárba kerül, ahol a futtatható fájl létrejön.
Line 27: Line 38:
  
 
Ezzel a módszerrel lefordíthatod a - remélhetőleg működő és hibamentes - kódodat, a Lazarus IDE-n kívül is.
 
Ezzel a módszerrel lefordíthatod a - remélhetőleg működő és hibamentes - kódodat, a Lazarus IDE-n kívül is.
 +
</div>
  
 
= Minden szerkesztett fájl bezárása egy kivételével =
 
= Minden szerkesztett fájl bezárása egy kivételével =
  
 +
<div style="text-align: justify;">
 
GTK alatt (elérhető Linux-on, Mac OS X-en és FreeBSD-n), a forráskód szerkesztő lapfülein bezáró gombok is megjelennek. Ha a bezáró gombra klikkelsz a CTRL lenyomásával egy időben, akkor minden szerkesztett fájl be lesz zárva, kivéve amelyikre klikkeltél.
 
GTK alatt (elérhető Linux-on, Mac OS X-en és FreeBSD-n), a forráskód szerkesztő lapfülein bezáró gombok is megjelennek. Ha a bezáró gombra klikkelsz a CTRL lenyomásával egy időben, akkor minden szerkesztett fájl be lesz zárva, kivéve amelyikre klikkeltél.
 +
</div>
  
 
= Komponens paletta =
 
= Komponens paletta =
Line 36: Line 50:
 
== Komponens megkeresése a palettában ==
 
== Komponens megkeresése a palettában ==
  
 +
<div style="text-align: justify;">
 
Tudod a komponens nevét, vagy egy részét, de nem tudod, melyik lapon található? Ez az eszköz segít: klikkelj a jobb egérgombbal az egyik komponensre a palettában, hogy a felugró menüt megjelenítsd. Válaszd ki a 'Komponens megkeresése' menüpontot. Írd be a komponens nevének részletét, hogy szűrd a listát.
 
Tudod a komponens nevét, vagy egy részét, de nem tudod, melyik lapon található? Ez az eszköz segít: klikkelj a jobb egérgombbal az egyik komponensre a palettában, hogy a felugró menüt megjelenítsd. Válaszd ki a 'Komponens megkeresése' menüpontot. Írd be a komponens nevének részletét, hogy szűrd a listát.
 +
</div>
  
 
== A palettában lévő komponens csomagjának megnyitása ==
 
== A palettában lévő komponens csomagjának megnyitása ==
Line 60: Line 76:
 
== VNC használata ==
 
== VNC használata ==
  
 +
<div style="text-align: justify;">
 
A VNC szerver/kliens használható a tightvncserver/realvncserver telepítésével.
 
A VNC szerver/kliens használható a tightvncserver/realvncserver telepítésével.
 
Indítsd el a szervert így:
 
Indítsd el a szervert így:
Line 65: Line 82:
  
 
Ha minden igaz, egy munkamenet is el fog indulni. Csatlakozhatsz a VNC szerverhez a vncviewer-rel.
 
Ha minden igaz, egy munkamenet is el fog indulni. Csatlakozhatsz a VNC szerverhez a vncviewer-rel.
 +
</div>
  
 
== Alkalmazás hibakeresése a második szerveren ==
 
== Alkalmazás hibakeresése a második szerveren ==
  
 +
<div style="text-align: justify;">
 
Lazarus-ban, a projekted futtatási paraméterei között pipáld be a "Megjelenítő használatá"-t és írd be:
 
Lazarus-ban, a projekted futtatási paraméterei között pipáld be a "Megjelenítő használatá"-t és írd be:
 
   :1
 
   :1
  
 
Így az alkalmazásod a második szerveren fog futni, tehát amikor a hibakereső fut, csak a második szerver fog lefagyni, de ez nem fog befolyásolni téged, mivel az elsőn megy a hibakeresés.
 
Így az alkalmazásod a második szerveren fog futni, tehát amikor a hibakereső fut, csak a második szerver fog lefagyni, de ez nem fog befolyásolni téged, mivel az elsőn megy a hibakeresés.
 +
</div>
  
 
= Az IDE gyors fordítása =
 
= Az IDE gyors fordítása =
  
 +
<div style="text-align: justify;">
 
A Lazarus-szal való dolgozás során sokszor előfordul, hogy újra kell építeni az IDE-t. Ha a következő trükköket használod és van elég memóriád egy újabb CPU-val, akkor lehetőséged van pár másodperc alatt újrafordítani az IDE-t.
 
A Lazarus-szal való dolgozás során sokszor előfordul, hogy újra kell építeni az IDE-t. Ha a következő trükköket használod és van elég memóriád egy újabb CPU-val, akkor lehetőséged van pár másodperc alatt újrafordítani az IDE-t.
 
* Tedd a Lazarus forrásait egy gyors merevlemezre. Ne egy lassú hálózati fájlrendszerre.
 
* Tedd a Lazarus forrásait egy gyors merevlemezre. Ne egy lassú hálózati fájlrendszerre.
Line 80: Line 101:
 
* Állítsd be a USESVN2REVISIONINC=0-t, hogy átlépd a revision.inc frissítésést.
 
* Állítsd be a USESVN2REVISIONINC=0-t, hogy átlépd a revision.inc frissítésést.
 
* Fordíts csak részeket. Ha a csomagkezelő újrafordul, akkor minden csomag újrafordul vele. Ha az IDEIntf újrafordul, akkor minden telepített tervezés idejű csomag is újrafordul.
 
* Fordíts csak részeket. Ha a csomagkezelő újrafordul, akkor minden csomag újrafordul vele. Ha az IDEIntf újrafordul, akkor minden telepített tervezés idejű csomag is újrafordul.
 +
</div>
  
 
= IDE vagy LCL alkalmazás DebugLn-jei =
 
= IDE vagy LCL alkalmazás DebugLn-jei =
  
 +
<div style="text-align: justify;">
 
Az IDE sok hasznos tippet kiír a DebugLn-en keresztül. Windows alatt elmentheted őket a Lazarus ''--debug-log=filename.txt'' parancssori paraméterével. Linux/BSD/Mac OS X/Solaris alatt: egyszerűen indítsd a Lazarus-t egy terminálból.
 
Az IDE sok hasznos tippet kiír a DebugLn-en keresztül. Windows alatt elmentheted őket a Lazarus ''--debug-log=filename.txt'' parancssori paraméterével. Linux/BSD/Mac OS X/Solaris alatt: egyszerűen indítsd a Lazarus-t egy terminálból.
 
Ez egy általános LCL lehetőség.
 
Ez egy általános LCL lehetőség.
 +
</div>
  
 
= Egy IDE ablak forrás fájljának megkeresése =
 
= Egy IDE ablak forrás fájljának megkeresése =
  
 
* Nyisd meg az IDE ablakot.
 
* Nyisd meg az IDE ablakot.
* Nyomd meg a Ctrl+Shift+F1-et a súgó szerkesztő megnyitásához.
+
* Nyomd meg a {{keypress|CTRL}} + {{keypress|Shift}} + {{keypress|F1}} billentyűkombinációt a súgó szerkesztő megnyitásához.
 
* Jegyezd meg az ablak osztályának nevét. Zárd be az ablakot.
 
* Jegyezd meg az ablak osztályának nevét. Zárd be az ablakot.
 
* Használd az [[IDE Window: Find in files|Find In Files]]-t, hogy megtaláld az osztály forrás fájlját.
 
* Használd az [[IDE Window: Find in files|Find In Files]]-t, hogy megtaláld az osztály forrás fájlját.
Line 95: Line 119:
 
= Objektum Felügyelő: Események: Keretek: Ugrás az öröklött esemény forrására =
 
= Objektum Felügyelő: Események: Keretek: Ugrás az öröklött esemény forrására =
  
 +
<div style="text-align: justify;">
 
Az Objektum Felügyelő megjeleníti az öröklött események eseményeit ''Osztálynév.Metódusnév''-ként. Dupla kattintásra egy új esemény jön létre. Ctrl+Klikk az esemény legördülő menüjén közvetlenül az öröklött metódusra ugrik, anélkül, hogy új eseményt hozna létre.
 
Az Objektum Felügyelő megjeleníti az öröklött események eseményeit ''Osztálynév.Metódusnév''-ként. Dupla kattintásra egy új esemény jön létre. Ctrl+Klikk az esemény legördülő menüjén közvetlenül az öröklött metódusra ugrik, anélkül, hogy új eseményt hozna létre.
 +
</div>
  
 
= Események (Metódus tulajdonságok) az Objektum Felügyelőben =
 
= Események (Metódus tulajdonságok) az Objektum Felügyelőben =
  
 +
<div style="text-align: justify;">
 
Az események (Metódus tulajdonságok) különleges tulajdonságok, mert értékként egy kódra (függvényre) mutató pointer-t kérnek, ami nem létezik tervezés közben. Ez az, amiért a Lazarus ugyanazt a trükköt alkalmazza, mint a Delphi: Minden metódus értékének típusa konvertálható ("type cast"-elhető) TMethod-ra, ami tartalmazza a ''Data'' (az objektum vagy osztály pointer) és a ''Code'' (a cím pointer) mezőket. Alap esetben, egyik sem nil (null pointer). Az IDE beállítja a Data-t egy különleges kulcs értékre a belső kereső táblája alapján, és a Code-ot nil-re. Ez azt jelenti:
 
Az események (Metódus tulajdonságok) különleges tulajdonságok, mert értékként egy kódra (függvényre) mutató pointer-t kérnek, ami nem létezik tervezés közben. Ez az, amiért a Lazarus ugyanazt a trükköt alkalmazza, mint a Delphi: Minden metódus értékének típusa konvertálható ("type cast"-elhető) TMethod-ra, ami tartalmazza a ''Data'' (az objektum vagy osztály pointer) és a ''Code'' (a cím pointer) mezőket. Alap esetben, egyik sem nil (null pointer). Az IDE beállítja a Data-t egy különleges kulcs értékre a belső kereső táblája alapján, és a Code-ot nil-re. Ez azt jelenti:
  
Line 106: Line 133:
  
 
Ne használd:
 
Ne használd:
<Delphi>
+
<syntaxhighlight lang=pascal>
 
if OnMyEvent <> nil then OnMyEvent(...); // hibás, mert ellenőrzi a Data-t is
 
if OnMyEvent <> nil then OnMyEvent(...); // hibás, mert ellenőrzi a Data-t is
</Delphi>
+
</syntaxhighlight>
  
 
Mivel ez így ellenőrzi a Data-t és a Code-ot is, és egy hamis metódusra fog ugrani, magyarán ugrás lesz nil-re. Ez kivételt fog generálni, szóval nem okoz különösebb gondot, de az IDE hibaüzenetet fog küldeni, és a program futása leáll.
 
Mivel ez így ellenőrzi a Data-t és a Code-ot is, és egy hamis metódusra fog ugrani, magyarán ugrás lesz nil-re. Ez kivételt fog generálni, szóval nem okoz különösebb gondot, de az IDE hibaüzenetet fog küldeni, és a program futása leáll.
 
Helyette használd inkább az Assigned függvényt:
 
Helyette használd inkább az Assigned függvényt:
<Delphi>
+
<syntaxhighlight lang=pascal>
 
if Assigned(OnMyEvent) then OnMyEvent(...); // helyes, mert csak a Code-ot ellenőrzi
 
if Assigned(OnMyEvent) then OnMyEvent(...); // helyes, mert csak a Code-ot ellenőrzi
</Delphi>
+
</syntaxhighlight>
  
 
Ne használd:
 
Ne használd:
<Delphi>
+
<syntaxhighlight lang=pascal>
 
if OnMyEvent = NewValue then Exit; // hibás, mert csak a Code-ot ellenőrzi
 
if OnMyEvent = NewValue then Exit; // hibás, mert csak a Code-ot ellenőrzi
</Delphi>
+
</syntaxhighlight>
  
 
Mivel ez így csak a Code-ot ellenőrzi, használd inkább ezt:
 
Mivel ez így csak a Code-ot ellenőrzi, használd inkább ezt:
<Delphi>
+
<syntaxhighlight lang=pascal>
 
if CompareMem(@FOnMyEvent, @NewValue, SizeOf(TMethod)) then Exit; // helyes, mert a Data-t és a Code-ot is ellenőrzi
 
if CompareMem(@FOnMyEvent, @NewValue, SizeOf(TMethod)) then Exit; // helyes, mert a Data-t és a Code-ot is ellenőrzi
</Delphi>
+
</syntaxhighlight>
 +
</div>

Latest revision as of 07:58, 17 February 2020

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


IDE trükkök

Új fájl létrehozása Fájl megnyitásával

Létrehozhatsz új fájlt és elmentheted, vagy létrehozhatsz egy új fájl fájlnévvel és típussal egy lépésben is: egyszerűen nyiss meg egy fájlt (CTRL + O) és válassz ki egy nem létező fájlt. Például: unit1.pas. Az IDE rá fog kérdezni, hogy létrehozza-e.

Új unit / form testreszabása

A 0.9.27-es verziótól kezdve jobb gombbal klikkelve az 'Új unit' (Új form) gyorsgombra, beállíthatod a létrehozandó fájl típusát. Regisztrálhatsz további fájltípusokat az IDEIntf-en vagy a projekt sablonok csomagon keresztül.

IDE makrók

IDE makrók az elérési utakban és fájlnevekben

IDE direktívák

IDE direktívák

Az IDE által létrehozott fordítói parancssori paraméterek megszerzése

Kimásolhatod a paramétereket a Projekt -> Fordító beállításai ... menü Beállítások megjelenítése gombra klikkelve megnyíló ablakból. Itt a projekt könyvtárhoz képest relatív elérési utak vannak megadva. Tehát a legtöbb esetben módosítás nélkül felhasználhatod őket.

A paraméterek a *.compiled fájlban is megtalálhatók. Például, ha a projekted neve test1.lpi, akkor a test1.compiled is létrejön. Ez egy egyszerű XML fájl, tehát egyszerűen kimásolhatod az opciókat, és beállíthatod az elérési utakat, hogy egy másik számítógépen is le tudd fordítani a projektedet. A fájl ugyanabba a könyvtárba kerül, ahol a futtatható fájl létrejön.

Csomagok esetén is ugyanez az eljárás használható.

Ezzel a módszerrel lefordíthatod a - remélhetőleg működő és hibamentes - kódodat, a Lazarus IDE-n kívül is.

Minden szerkesztett fájl bezárása egy kivételével

GTK alatt (elérhető Linux-on, Mac OS X-en és FreeBSD-n), a forráskód szerkesztő lapfülein bezáró gombok is megjelennek. Ha a bezáró gombra klikkelsz a CTRL lenyomásával egy időben, akkor minden szerkesztett fájl be lesz zárva, kivéve amelyikre klikkeltél.

Komponens paletta

Komponens megkeresése a palettában

Tudod a komponens nevét, vagy egy részét, de nem tudod, melyik lapon található? Ez az eszköz segít: klikkelj a jobb egérgombbal az egyik komponensre a palettában, hogy a felugró menüt megjelenítsd. Válaszd ki a 'Komponens megkeresése' menüpontot. Írd be a komponens nevének részletét, hogy szűrd a listát.

A palettában lévő komponens csomagjának megnyitása

Jobb klikk a komponensen a felugró menü megnyitásához, majd válaszd ki a Csomag megnyitását.

A palettában lévő komponens forrásának megnyitása

Jobb klikk a komponensen a felugró menü megnyitásához, majd válaszd ki a Unit megnyitását.

Az alkalmazásom lefagyasztja a Linux asztalomat hibakeresés közben

Az X (az asztalod) lefagyhat, amikor a gdb (a hibakereső) leállítja az alkalmazást, amelyikben az egér van.

Második X munkamenet használata

Egy második X-et elindíthatsz így:

  X :1 &

Ctrl-Alt-F7-tel átváltasz :0-ra és Ctrl-Alt-F8-cal :1-re ezután elindíthatsz egy második gnome munkamenetet így:

  gnome-session --display=:1 &

VNC használata

A VNC szerver/kliens használható a tightvncserver/realvncserver telepítésével. Indítsd el a szervert így:

  vncserver :1

Ha minden igaz, egy munkamenet is el fog indulni. Csatlakozhatsz a VNC szerverhez a vncviewer-rel.

Alkalmazás hibakeresése a második szerveren

Lazarus-ban, a projekted futtatási paraméterei között pipáld be a "Megjelenítő használatá"-t és írd be:

 :1

Így az alkalmazásod a második szerveren fog futni, tehát amikor a hibakereső fut, csak a második szerver fog lefagyni, de ez nem fog befolyásolni téged, mivel az elsőn megy a hibakeresés.

Az IDE gyors fordítása

A Lazarus-szal való dolgozás során sokszor előfordul, hogy újra kell építeni az IDE-t. Ha a következő trükköket használod és van elég memóriád egy újabb CPU-val, akkor lehetőséged van pár másodperc alatt újrafordítani az IDE-t.

  • Tedd a Lazarus forrásait egy gyors merevlemezre. Ne egy lassú hálózati fájlrendszerre.
  • Telepítsd csak a szükséges csomagokat.
  • Állítsd be a USESVN2REVISIONINC=0-t, hogy átlépd a revision.inc frissítésést.
  • Fordíts csak részeket. Ha a csomagkezelő újrafordul, akkor minden csomag újrafordul vele. Ha az IDEIntf újrafordul, akkor minden telepített tervezés idejű csomag is újrafordul.

IDE vagy LCL alkalmazás DebugLn-jei

Az IDE sok hasznos tippet kiír a DebugLn-en keresztül. Windows alatt elmentheted őket a Lazarus --debug-log=filename.txt parancssori paraméterével. Linux/BSD/Mac OS X/Solaris alatt: egyszerűen indítsd a Lazarus-t egy terminálból. Ez egy általános LCL lehetőség.

Egy IDE ablak forrás fájljának megkeresése

  • Nyisd meg az IDE ablakot.
  • Nyomd meg a CTRL + Shift + F1 billentyűkombinációt a súgó szerkesztő megnyitásához.
  • Jegyezd meg az ablak osztályának nevét. Zárd be az ablakot.
  • Használd az Find In Files-t, hogy megtaláld az osztály forrás fájlját.

Objektum Felügyelő: Események: Keretek: Ugrás az öröklött esemény forrására

Az Objektum Felügyelő megjeleníti az öröklött események eseményeit Osztálynév.Metódusnév-ként. Dupla kattintásra egy új esemény jön létre. Ctrl+Klikk az esemény legördülő menüjén közvetlenül az öröklött metódusra ugrik, anélkül, hogy új eseményt hozna létre.

Események (Metódus tulajdonságok) az Objektum Felügyelőben

Az események (Metódus tulajdonságok) különleges tulajdonságok, mert értékként egy kódra (függvényre) mutató pointer-t kérnek, ami nem létezik tervezés közben. Ez az, amiért a Lazarus ugyanazt a trükköt alkalmazza, mint a Delphi: Minden metódus értékének típusa konvertálható ("type cast"-elhető) TMethod-ra, ami tartalmazza a Data (az objektum vagy osztály pointer) és a Code (a cím pointer) mezőket. Alap esetben, egyik sem nil (null pointer). Az IDE beállítja a Data-t egy különleges kulcs értékre a belső kereső táblája alapján, és a Code-ot nil-re. Ez azt jelenti:

  • Futás időben, amikor a program betölti az .lfm fájlt, a valós metódus (Data+Code) van használatban.
  • Tervezési időben a egy metódus értéke lehet egy valós metódus (Data <> nil és Code <> nil) vagy egy hamis metódus (Data <> nil, Code = nil).
  • A fordító - Delphi kompatibilitási okokból - használ néhány különlegességet a metódus értékek összehasonlításához.

Ne használd:

if OnMyEvent <> nil then OnMyEvent(...); // hibás, mert ellenőrzi a Data-t is

Mivel ez így ellenőrzi a Data-t és a Code-ot is, és egy hamis metódusra fog ugrani, magyarán ugrás lesz nil-re. Ez kivételt fog generálni, szóval nem okoz különösebb gondot, de az IDE hibaüzenetet fog küldeni, és a program futása leáll. Helyette használd inkább az Assigned függvényt:

if Assigned(OnMyEvent) then OnMyEvent(...); // helyes, mert csak a Code-ot ellenőrzi

Ne használd:

if OnMyEvent = NewValue then Exit; // hibás, mert csak a Code-ot ellenőrzi

Mivel ez így csak a Code-ot ellenőrzi, használd inkább ezt:

if CompareMem(@FOnMyEvent, @NewValue, SizeOf(TMethod)) then Exit; // helyes, mert a Data-t és a Code-ot is ellenőrzi