IDE tricks/hu

From Free Pascal wiki

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


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