Sign in Join
Wiki copytemporary

Lazarus Faq/hu: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11Lazarus GY.I.K.
22
33folyamatban...
44
55## Általános
66
77### Mi a Lazarus?
88
99A Lazarus egy kereszt-platformos integrált fejlesztői környezet (IDE), melynek segítségével grafikus felületű (GUI) és parancssoros Object [[Pascal]] programok készíthetők, és amely a futtatható állományok elkészítéséhez a Free Pascal fordítót használja. Jelmondata *írd meg egyszer, fordítsd le bárhol*: a program forráskódja lefordítható egy másik operációs rendszeren futó Lazarus-szal (vagy keresztfordítóval) és az így létrehozott állomány futtatható lesz azon a rendszeren.
1010
1111Részletekért lásd: [[Overview of Free Pascal and Lazarus/hu|A Lazarus és a Free Pascal áttekintése]]
1212
1313### Miért olyan nagyok a létrehozott binárisok?
1414
1515A binárisok azért nagyok, mert hibakeresési információkat is tartalmaznak, amelyekre a gdb (GNU Debugger) használatakor van szükség.
1616
1717A fordítónak van egy kapcsolója amellyel el lehet távolítani a hibakeresési információkat a futtatható állományból (-Xs), de egy hiba miatt (a 2.0.2 és korábbi változatokban) ez nem működik megfelelően. A hiba már javítva van a fordító 2.0.4 és későbbi változataiban.
1818
1919Használhatod a 'strip' nevű programot a hibakeresési szimbólumok eltávolításához a futtatható állományból. Ez a lazarus könyvtárában található (például: lazarus\fpc\bin\i386-win32\\).
2020
2121Csak írd a parancssorba: "strip --strip-all \<a_futtatható_fájl_neve_útvonallal\>".
2222
2323Ha még kisebbre akarod a programod méretét, kipróbálhatod az [UPX](http://upx.sourceforge.net/) programot. Az UPX egy nagyon jó tömörítő kifejezetten futtatható állományok tömörítéséhez. Nem foglal feleslegesen memóriát a helyben történő kitömörítés alatt. Nagyon gyorsan tömöríti ki az állományokat (~10 MB/másodperc egy Pentium 133 gépen).
2424
2525Az UPX hazsnálatához írd a parancssorba: "upx \<a_futtatható_fájl_neve_útvonallal\>".
2626
2727Miután mindkét parancs (strip és upx) is lefutott, egy Lazarus-szal készített egyszerű GUI alkalmazás mérete kb. ennyi lesz:
2828
2929- ~ 700kb Linux-on
3030- ~ 420kb Windows-on
3131
3232Részletesebb választ az UPX használatának esetleges hátrányairól is, itt olvashatsz: [[Size Matters]] *(angolul)*.
3333
3434Fontos megjegyezni, hogy a lazarus 'hello world' példaprogram már eleve tartalmaz nagyon sok fontos összetevőt. Tartalmazza:
3535
3636- XML kezelő függvénytár
3737- Képkezelő függvénytár png, xpm, bmp és ico fájlokhoz
3838- Majdnem minden widget-et a LCL-ből (Lazarus Component Library)
3939- Az teljes Free Pascal Runtime Library-t
4040
4141Ezért nagyon nagy, de már majdnem mindent tartalmaz amire egy a valódi világnak készülő és komoly alkalmazásnak szüksége lehet.
4242
4343A Lazarus által készített futtatható állományok nagy mérettel kezdődnek, de csak lassan nőnek, köszönhetően a Free Pascal fordítónak és a módnak ahogy a lazarus ablakok működik. Egy c++ projekt (csak példa, de más nyelvekre / eszközökre is igaz) kis mérettel kezdődneka 'hello world' esetében, de méretük gyorsan a sokszorosára nő amikor egy szükséged van összetevőkre egy komoly alkalmazás írásához.
4444
4545![](/wiki-images/7/7f/Lazarus_vs_cpp_hu.png)
4646
4747**Gyors útmutató a Lazarus/FPC alkalmazások méretének csökkentéséhez** *(tesztelve a Lazarus 0.9.26 változatával)*
4848
4949- 1\. "Project\|Project Options\|Compiler Options\|Code\|Smart Linkable (-CX)" -\> Bejelölve
5050- 2\. "Project\|Project Options\|Compiler Options\|Linking\|Debugging\|" minden törölve kivéve a "Strip Symbols From Executable (-Xs)" -\> Bejelölve
5151- 3\. "Project\|Project Options\|Compiler Options\|Linking\|Link Style\|Link Smart (-XX)" -\> Bejelölve
5252
5353A legfontosabb elem a 2. Egy egyszerű alkalmazás esetén a futtatható állomány mérete 1-3 MB körül lesz 15-20 MB helyett. Ezen a ponton megpróbálhatod ezt: "Project\|Project Options\|Compiler Options\|Code\|Optimizations\|smaller rather than faster" -\> Bejelölve (Figyelem: ez csökkentheti a tejesítményt)
5454
5555- 4\. (Esetleg) Futtasd az "UPX \<te_futtatható_programod\>" parancsot a bináris állomány tömörítéséhez a -2 vagy -3 paraméterrel (Figyelem: mint fentebb olvashattad, az UPX használatának lehetnek hátrányai).
5656
5757**Méretek változása egy üres alkalmazás esetén, beállítások és operációs rendszerek függvényében**
5858
5959A tesztekhez változatok: Lazarus 0.9.29 és FPC 2.4 (Windows-on FPC 2.2.4). Az *Optimized compiler* a fentebbi tanácsok alkalmazását jelenti *UPX használata nélkül*. A *Default Lazarus* pedig azt ahogy telepítve lett a csomagból/telepítővel. Az *LCL without debug informations* jelentése, hogy a Lazarus IDE és LCL hibakeresési információk nélküli (-g-) újraépítése után.
6060
6161   
6262
6363Default Lazarus
6464
6565   
6666
6767LCL without debug informations
6868
6969Ubuntu 64 bits / Lazarus 64 bits
7070
7171Default application
7272
7373   
7474
757513,4  Mb
7676
7777   
7878
79797,5 Mb / 8
8080
8181Optimized compiler
8282
8383   
8484
85854,4 Mb
8686
8787   
8888
89892,70 Mb (0.29svn FPC2.4 2,5)
9090
9191   
9292
9393Ubuntu 32 bits / Lazarus 32 bits
9494
9595Default application
9696
9797   
9898
999919,6  Mb
100100
101101   
102102
1031035,7 Mb
104104
105105Optimized compiler
106106
107107   
108108
1091092,9 Mb
110110
111111   
112112
1131131,6 Mb
114114
115115   
116116
117117Windows XP 32 bits / Lazarus 32 bits
118118
119119Default application
120120
121121   
122122
12312311,8 Mb
124124
125125   
126126
1271272,14 Mb
128128
129129Optimized compiler
130130
131131   
132132
1331331,62 Mb
134134
135135   
136136
1371371,50 Mb
138138
139139   
140140
141141Windows Seven 64 bits / Lazarus 64 bits
142142
143143Default application
144144
145145   
146146
14714712,3  Mb
148148
149149   
150150
1511513,20 Mb
152152
153153Optimized compiler
154154
155155   
156156
1571572,14 Mb
158158
159159   
160160
1611612,16 Mb
162162
163163### Hiba: 'Fatal: Circular unit reference between a and b'
164164
165165Ez egy gyakori dolog, ami az új felhasználókkal történhet, amikor két form-ot készít, melyekből egymás tulajdonságait akarja elérni. A fenti hiba az interface részben a uses használatakor keletkezik, ezért a hivatkozást át kell tenni az implementation részbe. Példa:
166166
167167Ez hibát okoz:
168168
169-` unit a;`\
170-` `\
171-` interface`\
172-` `\
173-` uses b;`\
174-` `\
175-` implementation`\
176-` `\
177-` end.`\
178-` ...`\
179-` unit b;`\
180-` `\
181-` interface`\
182-` `\
183-` uses a;`\
184-` `\
185-` implementation`\
186-` `\
187-` end.`
169+``` pascal
170+ unit a;
171+
172+ interface
173+
174+ uses b;
175+
176+ implementation
177+
178+ end.
179+ ...
180+ unit b;
181+
182+ interface
183+
184+ uses a;
185+
186+ implementation
187+
188+ end.
189+```
188190
189191Ez viszont nem:
190192
191-` unit a;`\
192-` `\
193-` interface`\
194-` `\
195-` implementation`\
196-` `\
197-` uses b;`\
198-` `\
199-` end.`\
200-` ...`\
201-` unit b;`\
202-` `\
203-` interface`\
204-` `\
205-` implementation`\
206-` `\
207-` uses a;`\
208-` `\
209-` end.`
193+``` pascal
194+ unit a;
195+
196+ interface
197+
198+ implementation
199+
200+ uses b;
201+
202+ end.
203+ ...
204+ unit b;
205+
206+ interface
207+
208+ implementation
209+
210+ uses a;
211+
212+ end.
213+```
210214
211215### Miért lassú az alkalmazások építése Windows-on?
212216
213217Ez a hiba javítva lett az FPC 2.2 és a Lazarus 0.9.24 változataiban. Frissítsd a Lazarus-t. Régebbi változatokkal kapcsolatban olvasd el a következő szöveget.
214218
215219Általánosságban elmondható, hogy a fordítási idő Windows-on több időt vesz igénybe, mint más rendszereken, mert a GNU Linker, amit a Free Pascal használ lassú ezen a rendszeren. Ez a jelenség csak a Windows-on áll fenn, és csak a régebbi gép (1Ghz alatt) valamint kevés memória (128MB vagy kevesebb) esetén zavaró.
216220
217221Ezen kívül, ha az LCL-t a "smartlink" kapcsolóval használod akkor az összefűzés sokkal lassabb lesz. Egy leírás erről itt található: [[File size and smartlinking]] *(angolul - kidolgozás alatt)*
218222
219223Egy belső összefűző (linker) lett kifejlesztve, de csak a Free Pascal 2.2 változatától kezdve lesz elérhető (természetesen az SVN-ből is elérhető). Látványosan lecsökkenti az összefűzés idejét.
220224
221225**Megjegyzés**: A 2.1.1 változat Windows-on egy olyan belső összefűzőt használ amely már egy kicsit gyorsabb. Az ezzel újrafordított Lazarus kb. 280MB-ot foglal el.
222226
223227### Melyikre van szükségem: ppc386.cfg vagy fpc.cfg?
224228
225229Csak az fpc.cfg kell neked. Így a fordító tudja hogy hol vannak a függvénytárak.
226230
227231### Hogyan fordítsam a lazarus-t?
228232
229233Valahogy így:
230234
231-`$ cd lazarus`\
232-`$ make clean all`
235+```text
236+$ cd lazarus
237+$ make clean all
238+```
233239
234240### Hogyan fordíthatok más projekteket, amik az LCL-en az alapulnak?
235241
236242Ha nem használhatod az IDE-t a fordításhoz, használd a 'lazbuild' programot. Ez egy parancssoros változata az IDE-nek, lazarus projektek és csomagok építéséhez. Ha az LCL alkalmazást az IDE és a lazbuild nélkül akarod elkészíteni, add következő sorokat az *fpc.cfg* fájlhoz:
237243
238-`  # searchpath for other toolkits (Linux)`\
239-`  -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/{Készleted}`
244+```text
245+ # searchpath for other toolkits (Linux)
246+ -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/{Készleted}
247+```
240248
241-`  # searchpath for other toolkits (Windows)`\
242-` -Fu/{LazarusKönyvtárad}/components/units/{Készleted}`
249+```text
250+ # searchpath for other toolkits (Windows)
251+ -Fu/{LazarusKönyvtárad}/components/units/{Készleted}
252+```
243253
244254
245255Ahol {a Készleted} a következők lehetnek: *gtk2*, *gnome*, *qt* vagy *win32*. Ez után futtasd ezt a parancsot:
246256
247257
248258ppc386 projekted.pp
249259
250260**Megjegyzés:** Ne felejtsd el telepíteni a fejlesztői csomagokat az adott készlethez, különben egy ehhez hasonló üzenetet kaphatsz: '[[Linker message: cannot find -l/hu|Linker message: cannot find -l]]'.
251261
252262### Melyik FPC változatra van szükség?
253263
254264A Lazarus 0.9.28 legalább az FPC 2.4 változatát igényli.
255265
256266### Nem tudom fordítani a Lazarus-t
257267
2582681. Ellenőrizd, hogy a fordító megfelő változatát használod
2592692. Ellenőrizd, hogy a függvénytárak (fpc) ugyanehhez a változathoz valók
2602703. Ellenőrizd, hogy a fordító telepítési útvonalának nevében vannak-e szóközök. Ne legyenek!
2612714. Ellenőrizd, hogy van-e fpc.cfg fájl és nincs régi ppc386.cfg
2622725. Nézd át az operációs rendszerrel összefüggő GY.I.K.-t
263273
264274### Amikor egy projektet fordítok, hibaüzenetet kapok
265275
266276#### "Cannot find Unit interfaces". Hogyan oldjam meg?
267277
268278Ez azt jelenti hogy a fordító nem találja az 'interfaces.ppu' fájlt **vagy** azt jelenti, hogy talált, de hibás vagy érvénytelen (régi).
269279
270280Ez a unit megtalálható a "{LazarusDir}\lcl\units\\{TargetCPU}-{TargetOS}\\{LCLWidgetSet}\interfaces.ppu" útvonalon. Például: "/home/username/lazarus/lcl/units/i386-linux/gtk/interfaces.ppu".
271281
272282Ellenőrizd, hogy csak ott van. Ha több változatod is van interfaces.ppu fájlból, akkor valószínűleg rosszak a beállításaid (például hozzáadtál egy LCL könyvtárat a keresési útvonalhoz). Töröld az interfaces.ppu minden példányát, kivéve egyet a fenti könyvtárban.
273283
274284Ha más ablakelem-készletet (widgetset) választottál mint amivel a Lazarus készült, le kell fordítanod az LCL-t is ehhez az ablakelem-készletet.
275285
276286Ha ott van, de mégis ezt a hibaüzenetet kapod akkor eltérő fordítót/rtl-t használsz a projekted fordításához, mint amivel a Lazarus IDE készült. A következők egyikét teheted:
277287
278288- Építsd újra az LCL-t (vagy az egész Lazarus-t) az "Environmnent Options" között kiválasztott fordítóval. Ezt megteheted a "Tools\|Build Lazarus" menüponttal. Előtte nézd át a vonatkozó beállításokat a "Tools\|Configure Build Lazarus" menüpontra kattintva.
279289- Változtasd meg a kiválasztott fordítót az "Environment Options" között arra amelyikkel a Lazarus-t fordítottad. Figyelmesen nézd meg az "Environment Options" között, hogy a megfelelő útvonal van-e beállítva a "Lazarus Directory" és az "FPC sources directory" mezőben. Ellenőrizd, hogy csak egy változata legyen a fordító beállításait tartalmazó fpc.cfg fájlnak - ennek helye a /etc/ könyvtár Linux/Unix rendszereken vagy Windows esetén az a könyvtár ahol az FPC fordító található. Próbáld futtatni az "fpc -vt bogus" parancsot hogy ellenőrizhesd melyik fpc.cfg van használatban a rendszereden. Felesleges példányok maradhatnak amikor újabb változattal frissíted a fordítót; ezek a felhasználói könyvtáradban vagy abban a könyvtárban lehetnek amelyben az új fordítót építetted. TÖRÖLD EZEKET!
280290- Esetleg megváltoztathatod a projekt számára kiválasztott ablakelem-készletet. Egy példa: az "objectinspector" ami a Lazarus része alapértelmezés szerint gtk-ra van beállítva. Ennek fordítása biztosan előidézi a "Can't find unit interfaces" üzenetet Windows-on. Az ablakelemek átállítása "default(Win32)"-re megoldja a problémát: "Project\|Project Options\|Compiler Options...\|LCL Widget Type (various)".
281291
282292### Amikor egy delphi projektet akarok fordítani Lazarus-szal, hibaüzenetet kapok
283293
284294#### at the line :{\$R *.DFM} Hogyan oldhatom meg ezt a problémát?
285295
286296A Lazarus (vagy inkább a Linux) nem ismeri az adatforrásokat (resources), abban a formában ahogy a Delphi/Win32 használja. Ezért a Lazarus egy másik módot alkalmaz amely nagyjából egyenértékű vele. Használhatod a Delphi ablakelrendezéseket (.dfm fájlokat) a következő lépésekkel:
287297
288298- Szükséged van a .dfm fájlok szöveges változatára. A D5 és újabb változatok ilyet készítenek alapértelmezés szerint. Ha régebbi fájljaid vannak: `Alt`+`F12` hogy szövegként lásd aztán másolás/beillesztés. Ha szöveges .dfm fájlod van, csak másold egy .lfm fájlba.
289299- Készíts egy fájlt a lazres programmal (a lazarus/tools könyvtárban található): lazres formod.lrs formod.lfm
290300- Add a következő sorokat a "initialization" részhez:
291301
292-`     initialization`\
293-`     {$I formod.lrs}`
302+```text
303+ initialization
304+ {$I formod.lrs}
305+```
294306
295307Tartsd észben, hogy még nem minden tulajdonságot (property) támogat a Lazarus, amik a .dfm fájlokban előfordulhatnak, ezért esetleg összeomolhat.
296308
297309Szerk: Az FPC 2.4.0 óta, a Delphi stílusú adatforrások is támogatottak, így már semmit sem kell megváltoztatnod. Megjegyzés: még mindig ajánlott a Lazarus Delphi project converter használata, mivel előfordulhatnak nem támogatott tulajdonságok.
298310
299311#### 'Identifier not found LazarusResources'.
300312
301313Amikor a Lazarus létrehoz egy form-ot, hozzáad néhány unitot a unitod uses részéhez. Azonban Delphi unitok Lazarus unittá átalakításakor ez ez nem történik meg. Ezért neked kell hozzáadnod az LResources unitot a form unitjának uses részéhez.
302314
303315### Amikor egy objektum eseménykezelőjét hívom, pl. egy gomb az onclick()-jét akkor a következő hibaüzenetet kapom: 'ERROR unit not found: stdCtrls'
304316
305317Ellenőrizd a "Project\|Project Inspector"-ban, hogy a projekted az 'LCL' csomagokon alapul és hogy telepítetted az FPC forráskódjait.
306318
307319A Lazarus a fejlesztőkörnyezet (IDE) és az LCL vizuális komponensek együttese. Minden egyéb, mint az IO, a Database, az FCL és az RTL az FPC által van biztosítva. Az IDE igényli az összes forráskód útvonalát.
308320
309321Az FPC forráskódjainak útvonala beállítható a menüből indulva: "Environment\|Environment Options\|Files\|FPC source directory"
310322
311323### Hogyan építhetek be egy kis fájlt a futtatható állományba, hogy ne legyen külön fájl? Hogyan építhetek be erőforrást?
312324
313325Például:
314326
315-`/lazarus/path/tools/lazres sound.lrs sound1.wav sound2.wav ...`
327+```text
328+/lazarus/path/tools/lazres sound.lrs sound1.wav sound2.wav ...
329+```
316330
317331Létrehozza a sound.lrs fájlt a sound1.wav és sound2.wav fájlokat felhasználva.
318332
319333Ezután illeszd a kódodba a form .lrs *után*:
320334
321-`...`\
322-`initialization`\
323-`{$i unit1.lrs} // ez a fő erőforrás fájl (első)`\
324-`{$i sound.lrs} // felhasználó által meghatározott erőforrás fájl`\
335+``` pascal
336+...
337+initialization
338+{$i unit1.lrs} // ez a fő erőforrás fájl (első)
339+{$i sound.lrs} // felhasználó által meghatározott erőforrás fájl
325340
326-`end.`
341+end.
342+```
327343
328344A programodban így használhatod:
329345
330-`Sound1AsString:=LazarusResources.Find('sound1').Value;`
346+``` pascal
347+Sound1AsString:=LazarusResources.Find('sound1').Value;
348+```
331349
332350### Mit jelentenek a különböző fájltípusok amiket a Lazarus használ?
333351
334352A [[Lazarus Tutorial|Lazarus Tutorial#The Lazarus files]] cikk részletesen, példákkal írja le a fájltipus kiterjesztéseket. Ez egy összefoglaló lista:
335353
336354`*.lpi`
337355Lazarus Project Információ fájl (XML formátum; tartalmazza a projekt egyedi beállításait)
338356
339357`*.lpr`
340358Lazarus Program fájl; a főprogram Pascal forráskódját tartalmazza
341359
342360`*.lfm`
343361Lazarus Form fájl; információkat tartalmaz egy form összes eleméről (egyedi, a Lazarus által használt szöveges formátum; a műveletek Pascal forráskóddal megírva a megfelelő `*.pas` fájlban találhatók)
344362
345363`*.pas` vagy `*.pp`
346364Pascal forráskódú Unit (tipikusan egy form-hoz tartozik amelynek adatai a megfelelő `*.lfm` fájlban találhatók)
347365
348366`*.lrs`
349367Lazarus Resource fájl (erőforrás, ez egy generált fájl; nem szabad összetéveszteni a Windows erőforrás fájlokkal).
350368
351369Ilyen fájlokat a lazres (a Lazarus/Tools könyvtárban található) eszközzel lehet létrehozni a parancssorból indítva: lazres fajlom.lrs fajlom.lfm
352370
353371`*.ppu`
354372Lefordított unit
355373
356374`*.lpk`
357375Lazarus csomag (package) információ fájl. (XML formátum; a csomag egyedi beállításait tartalmazza)
358376
359377### Amikor egy szövegfájlt deklarálok így: *var mytext: text;* , Hibaüzenetet kapok: "Unit1.pas(32,15) Error: Error in type definition". Hogyan javíthatom?
360378
361379A TControl osztály (class) rendelkezik egy [[doc:lcl/controls/tcontrol.text.html|Text]] nevű tulajdonsággal (property). Egy form-hoz tartozó eljárásban (method) ennek elérhetősége elsőbbséget élvez a System unitban található [[doc:rtl/system/text.html|Text]] típushoz képest. Használhatod a [[doc:rtl/system/textfile.html|TextFile]] típust, ami egy álnév a Text típus számára, vagy a típus megadásakor a típusnév elé írhatod a unit nevét.
362380
363-`var`\
364-`  MyTextFile: TextFile;`\
365-`  MyText: System.Text;`
381+``` pascal
382+var
383+ MyTextFile: TextFile;
384+ MyText: System.Text;
385+```
366386
367387Hasonló jelenség előfordulhat a szöveges fájl azonosítók kiosztásakor és a fájlok bezárásakor is. A TForm rendelkezik *assign* és [[doc:lcl/forms/tcustomform.close.html|Close]] eljárással (method) is. Használhatod az [[doc:rtl/objpas/assignfile.html|AssignFile]] és [[doc:rtl/objpas/closefile.html|CloseFile]] eljárásokat vagy beszúrhatod a *System* unit nevét.
368388
369389### Hibaüzenetet kapok amikor a Printer.BeginDoc-ot használom
370390
371391A Printers unitot hozzá kell adnod a uses részhez.
372392
373393A Printer4Lazarus csomagot hozzá kell adnod a projekted függősdégeihez (requirement) az IDE menüjéből indulva: "Project\|Project Inspector\|Add\|New Requirement\|Package Name:"
374394
375395Ha a Printer4Lazarus csomag nincs a legördülő listában amikor megnyitod akkor telepíteni kell. A csomag része a Lazarus telepítésnek és megtalálható ebben a könyvtárban: "\[lazarus installed directory\]\components\printers"
376396
377397Ha az alapértelmezett telepítési könyvtárat használtad akkor a \[lazarus installed directory\] útvonala:
378398
379399- Windows: c:\lazarus
380400- Linux: /usr/lib/lazarus
381401
382402Ugyanez a megoldás alkalmazható ha a Printer.Printers-re hivatkozáskor kivétel (exception) keletkezik.
383403
384404### Miért egyenlő a TForm.ClientWidth/ClientHeight és a TForm.Width/Height
385405
386406A TForm.Width/Height nem tartalmazza a keretet, mivel nem volt lehetséges lekérdezni a keret méretét minden rendszeren. Megbízható módszer nélkül az LCL rendellenesen mozgathatná vagy a végtelenségig átméretezhetné az ablakokat a képernyőn.
387407
388408Azonban ha lesz megbízható eljárás egy ablak és kerete méretének, illetve helyzetének lekérdezésére minden rendszeren, akkor ez meg fog változni. A régebbi LCL form-okkal való kompatibilitás megtartása érdekében, az új változathoz néhány további eljárás (method) is hozzá lesz adva.
389409
390410## Hibakereső (Debugger)
391411
392412### Hogyan láthatom a hibakeresés kimenetét?
393413
394414Az LCL tartalmaz két eljárást az LCLProc unitban a hibakereső kimenetre történő íráshoz. Ezek a következők:
395415
396416- **DebugLn:** úgy működik mint a WriteLn, de csak string paramétert fogad el.
397417- **DbgOut:** úgy működik mint a Write, de csak string paramétert fogad el.
398418
399419Normális körülmények között a kimenet az stdout-ra kerül. Ha az stdout zárt (például amikor az alkalmazás {\$AppType Gui} vagy a -WG opciókkal lett lefordítva Windows-on), nem lesz írás a kimenetre.
400420
401421A hibakeresés kimenete fájlba is írható. Az LCLProc unit az initialization részében ellenőrzi a Lazarus.exe parancssori paramétereit a '--debug-log=\<file\>' kapcsolót keresve. Ha megtalálja akkor a további hibakeresési kimenetek a \<file\>-ba lesznek írva.
402422
403423Ha nincs megadva a '--debug-log' parancssori paraméter, akkor egy xxx_debuglog nevű környezeti változó létezését ellenőrzi az operációs rendszerben, melyben az xxx a programfájl neve kiterjesztés nélkül. A Lazarus számára ez lazarus_debuglog. Ha egy ilyen környezeti változó létezik, akkor az így megadott fájlt fogja használni a hibakeresési kimenetre írt adatok mentéséhez. Például: ha ezt teszed:
404424
405-`set lazarus_debuglog=c:\lazarus\debug.txt`
425+```text
426+set lazarus_debuglog=c:\lazarus\debug.txt
427+```
406428
407429a hibakeresési kimenet a c:\lazarus\debug.txt fájlba lesz írva.
408430
409431Minden alkalmazás amely használja az lclproc unitot, használhatja ezt a lehetőséget.
410432
411433Lazarus hibakeresés
412434A leghasználhatóbb módszer Windows-on a konzolt használata kimenetként, ehhez add az {\$APPTYPE console} direktívát a lazarus.pp-hez, aztán építsd újra a Lazarus-t.
413435
414436### Hogyan figyelhetem a tulajdonságokat? (property)
415437
416438A legutóbbi fejlesztői (2.5.1) vagy a 2.4-es változatot kell használnod.
417439
418440Ha az alkalmazást a -gw (dwarf debug info) használatával fordítod, akkor figyelheted a tulajdonságokat.
419441
420442Megjegyzendő hogy ez csak olyan a tulajdonságokra igaz amelyek közvetlenül változókat takarnak (a "read" deklaráció az osztály egy tagjára mutat és nem egy funkcióra).
421443
422444Ha a tulajdonság egy művelet végeredményét adja vissza akkor nagyon veszélyes azok kiértékelése/figyelése. Szükséges lehet a művelet végrehajtása, és ez néha változók értékének megváltoztatását eredményezheti. Egyszerűbben fogalmazva megváltozhat az alkalmazásod állapota a hibakeresőben, és a további kódfuttatás, hibakeresés vagy figyelés érvénytelen eredményt adhat.
423445
424446A lehetőség az eljárások visszatérési értékének figyelésére (a fentebbi kockázatok mellett), és e miatt kódok hívása a Debugger-ből még nincs kidolgozva.
425447
426448### Miért nem mutatja a hibakereső az egyes Változókat/Struktúrákat ("no such symbol"/"incomplete type")
427449
428450A következő hibakeresési problémák esetén:\
429451\- tulajdonságok (property-k)\
430452\- array of ... (dinamikus tömbök)\
431453\- változók beágyazott eljárásokban\
432454\- "no such symbol in context"\
433455\- "incomplete type"\
434456olvasd el ezt a cikket: [[GDB Debugger Tips]] *(angol)*
435457
436458### Hogyan használható a hibakereső, csomagokban található FCL komponenseken Lazarus-szal
437459
438460Az FCL komponensek és osztályok alapértelmezetten hibakeresési információk nélkül lettek lefordítva és ezért a gdb nem tudja elérni az metódusokat és a tulajdonságokat. A komponensek csomagjait újra kell építeni a "-gl" kapcsolóval.
439461
440462A következő példa feltételezi hogy egy Linux összeállítás használatát a /usr/local/ telepítési útvonallal és azt hogy az fcl-db adatbázis kezelő csomag az aminek tartalmaznia kell a hibakeresési információkat. A példában az fcl-db szerepel, de értelem szerűen bármely más csomaggal is működik.
441463
442464Mielőtt elkezded, meg kell keresned az FPC beállításait tartalmazó fájlt: /etc/fpc.cfg. Nézd át a tartalmát és keresd meg az FPC telepítési útvonalát. Keress az fpc.cfg fájlban egy sort aminek az elején -Fu található:
443465
444-`-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/*`
466+```text
467+-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/*
468+```
445469
446470A Make szkriptek által lefordított unitok az INSTALL_PATH/lib/fpc/\$fpcversion/units/\$fpctarget/ könyvtárba kerülnek, ezért biztosnak kell lenned abban hogy a telepítési útvonal a /usr/local, és ezt kell megadni INSTALL_PREFIX-ként, különben a Make által fordított unitok olyan helyre is kerülhetnek ahová nem tartoznak vagy a Make szkriptek hiba miatt le is állhatnak.
447471
448472**1. lépés**: Nyisd meg a terminál ablakot\
449473**2. lépés**: cd /user/local/share/src/fpc-2.3.1/fpc/fcl-db/\
450474**3. lépés**: sudo make clean all install INSTALL_PREFIX=/usr/local OPT=-gl\
451475Megjegyzés: az INSTALL_PREFIX paramétert megfelelően be kell állítani a unitok megfelelő elhelyezése érdekében!
452476
453477A példában a /usr/local az alapértelmezett telepítési útvonal Linux-on, de más operációs rendszereken más lehet.
454478
455-`make clean all install INSTALL_PREFIX=/usr/local OPT=-gl`
479+```text
480+make clean all install INSTALL_PREFIX=/usr/local OPT=-gl
481+```
456482
457483Végül bármelyik FCL unit újrafordítása után szükséges lehet az LCL újrafordítása is ugyanígy.
458484
459485### Gondok a GDB használatával macOS rendszeren
460486
461487[[GDB Debugger Tips|Olvasd el a hibakereső tippeket Mac rendszerhez]] (angol)
462488
463489## Közreműködés / Javítás a Lazarus-ban
464490
465491### Készítettem egy foltot (patch) amivel az IDE Üzenetek (Messages) ablaka a Forráskód-Szerkesztő (Source Code Editor) aljához rögzíthető
466492
467493Ezeket a foltozásokat nem alkalmazzuk, mivel az ablakok kívánt összekapcsolási módjának csak egy kis része van kidolgozva bennük. A cél egy teljes rögzítéskezelő-rendszer elkészítése és használata. Egy teljes rögzítéskezelő-rendszer az IDE összes ablakát össze tudja kapcsolni a felhasználó által meghatározott módon. Például az üzenetek ablakát a forráskód-szerkesztő fölé vagy alá vagy... vagy semmit sehová. Minta:
468494
469495 +-------------------++--+
470496 |menü || |
471497 +-------------------+| |
472498 +--++---------------+| |
473499 |PI|| Forráskód ||CE|
474500 +--+| Szerkesztő || |
475501 +--+| || |
476502 | |+---------------++--+
477503 |OI|+-------------------+
478504 | ||üzenetek |
479505 +--++-------------------+
480506
481507A rögzítéskezelő tudja elmenteni az elrendezést és visszatölteni a következő betöltéskor. A rögzítéskezelőnek nem szükséges a fogd és vidd módszert használnia. Minden foltozgatás ami rögzítéskezelő nélkül kapcsolja össze az ablakokat, nehézzé teszi egy rögzítéskezelő kidolgozását és vissza lesz utasítva.
482508
483509Ideiglenes megoldásként használhatod ezt a kiegészítést az IDE-hez: [[Manual Docker]]
484510
485511### Javítottam/fejlesztettem a Lazaruszon. Hogyan adhatom hozzá a változtatásokat a hivatalos Lazarus forráskódhoz?
486512
487513Készíts egy foltot (patch) és küldd el a fejlesztőknek. Részletek itt találsz: [[Creating A Patch]]. *(angolul)*
488514
489515### Hogyan lehetek Lazarus fejlesztő, az SVN és a hibakövető (bug-tracker) kezelője?
490516
491517Mindenek előtt: tanulj a Lazarus-ról, ezzel növelve a tudásod és a hozzáértésed. Kezdd a [[Lazarus Documentation/hu|wiki cikkek]] olvasásával, olvasd át a Lazarus forráskódját, vess néhány pillantást a [Lazarus Bug-Tracker](http://www.lazarus.freepascal.org/mantis), javíts ki néhány hibát, és ha úgy gondolod készen állsz, vedd fel a kapcsolatot a fejlesztőkkel a [levelezőlistán](http://www.mail-archive.com/lazarus@miraclec.com).
492518
493519## Hol vannak a ... definiciók
494520
495521### Virtuális billentyű konstansok
496522
497523A virtuális billentyű konstansok az [[doc:lcl/lcltype|LCLType]] unitban vannak definiálva. Add a uses részhez az LCLtype unitot.
498524
499525## Az IDE használata
500526
501527### Hogyan használhatom az "azonosító kiegészítés" ("identifier completion") lehetőséget?
502528
503529Az azonosítók kiegészítése a `ctrl`+`szóköz` lenyomásával kérhető. Beállítható az automatikus kiegészítés késleltetése is, a menüből indulva: 'Environment\|Editor Options\|Code Tools\|Automatic Features'.
504530
505531## Linux
506532
507533### Hogyan használhatom a hibakeresőt az IDE nélkül?
508534
509535Mindenek előtt egy hibakeresőre lesz szükséged. Linux-on a szabványos hibakereső a gdb, melyhez több grafikus felületű kezelőprogram is készült. Egy gyakran használt ilyen program a ddd, mely a legtöbb Linux disztrinúciónak része. A lazarus/lcl hibakeresési információkkal történő fordításához és a hibakeresés indításához a következőwith parancsokat kell kiadni:
510536
511-` $ make clean; make OPT=-dDEBUG`\
512-` $ ddd lazarus`
537+```text
538+ $ make clean; make OPT=-dDEBUG
539+ $ ddd lazarus
540+```
513541
514542Legyél figyelmes, mivel a ddd nem teljesen úgy működik mint a Lazarus hibakaresője. Ha egy változó tartalmát kell megjeleníteni ügyelned kell arra, hogy a ddd/gdb megkülönbözteti a kis és nagy betűket, miközben a Pascal nem teszi ezt. E miatt az összes változó nevét nagy betűkkel kell írnod, hogy láthasd a tartalmukat. További információkat az FPC dokumentációjában találsz.
515543
516544### Tudom futtatni a hibakeresőt, de ddd nem találja a forráskódjaimat vagy panaszkodik, hogy nincs bennük kód. Mi ez?
517545
518546Ez az útvonalakkal kapcsolatos hiba a gdb és a ddd esetében is. Így kerülheted el:
519547
520548- Használt a "Change directory" (könyvtár váltása) parancsot a ddd menüjéből és válaszd a könyvtárat ahol a forráskódok találhatók. E módszer hátránya hogy nem tudod használni a teljes forráskódot az így indított programhoz (pl.: Lazarus). Ezért több alkalommal is szükség lehet könyvtárváltásra.
521549- A ddd menüjében kattints az \[Edit\] \[gdb-settings\] lehetőségre és állítsd be a keresési útvonalat
522550- Hozd létre a \$(HOME)/.gdbinit fájlt a következőképpen:
523551
524-`     directory /utvonal/lazarus`\
525-`     directory /utvonal/lazarus/lcl`\
526-`     directory /utvonal/lazarus/lcl/include`
552+```text
553+ directory /utvonal/lazarus
554+ directory /utvonal/lazarus/lcl
555+ directory /utvonal/lazarus/lcl/include
556+```
527557
528558### Hibaüzenetet kapok az összefűzés közben, ami azt mondja "/usr/bin/ld can't find -l\<valami_lib\>"
529559
530560**Csomag alapú összeállítások**
531561Telepítened kell azt a csomagot, amelyik tartalmazza a lib\<valami_lib\>.so vagy lib\<valami_lib\>.a fájlokat. A dinamikus függvénytárak névkiterjesztése linux-on .so, a statikus függvénytáraké pedig .a. Néhány Linux összeállításban telepítve van az adott (rpm, deb) csomag amely tartalmazza a \<valami_lib\> állományt, de ilyenkor is telepítened kell a fejlesztői (rpm, deb) csomagokat, amelyek neve általában \<csomagnév\>-dev, amiben megtalálható a függvénytár .a (statikus) és/vagy .so (dinamikus) változata.
532562
533563Egyes összeállításokban van parancs amellyel meg lehet keresni, hogy melyik csomag tartalmaz egy adott fájlt:
534564
535565**Mandriva**
536566
537-`[]$ urpmf lib<valami_lib>.so`
567+```text
568+[]$ urpmf lib<valami_lib>.so
569+```
538570
539571
540572listát készít az összes csomagról amely tartalmazza a lib\<valami_lib\>.so fájlt, ezek közül az egyik -devel végződésűt kell telepítened.
541573
542574
543575**Debian**
544576
545577
546578telepítsd az apt-file eszközt (apt-get install apt-file) majd
547579
548-`[]$ apt-file search lib<valami_lib>.so`
580+```text
581+[]$ apt-file search lib<valami_lib>.so
582+```
549583
550584
551585listát készít az összes csomagról amely tartalmazza a lib\<valami_lib\>.so fájlt, ezek közül az egyik -dev végződésűt kell telepítened.
552586
553587**SuSE**
554588
555589A SuSE a gtk fejlesztői függvénytárakat a /opt/gnome/lib könyvtárba telepíti (vagy a /opt/gnome/lib64 könyvtárba 64 bites rendszeren), ami nem a szokásos helye a függvénytáraknak. Egyszerűen add ezt az útvonalat a /etc/fpc.cfg fájlhoz (így: -Fl/opt/gnome/lib).
556590
557591### Hogyan alakíthatok át kylix 2 projektet Lazarus projekté?
558592
559593### Amikor a Lazarus-t fordítom a fordító nem talál egy unitot. pl.: "gtkint.pp(17,16) Fatal: Can't find unit GLIB"
560594
5615951\. Ellenőrizd egy tiszta fordítással is, így: 'make clean all'
562596
5635972\. Ellenőrizd, hogy a fordító megfelelő változatát használod (2.0.4 vagy újabb)
564598
5655993\. Ellenőrizd, hogy a fordító a megfelelő beállítási fájlt használja-e. A normál telepítés létrehozza a /etc/fpc.cfg fájlt, de az FPC keresni fogja a ~/.ppc386.cfg, ~/.fpc.cfg, /etc/ppc386.cfg fájlokat is és csak azt használja amelyiket előbb találja meg.
566600
567601
568602**Tipp:** Megtudhatod, hogy melyik beállítási fájl van használatban a következő paranccsal: 'ppc386 -vt bogus'
569603
570604Törölj minden ppc386.cfg ha már nincs rá szükséged.
571605
5726064\. Ellenőrizd, hogy a beállítási fájl (/etc/fpc.cfg) a megfelelő útvonalakat tartalmazza. Három, ezekhez sornak kell a fájlban:
573607
574-`   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget`\
575-`   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl`\
576-`   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*`
608+```text
609+ -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget
610+ -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl
611+ -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*
612+```
577613
578614
579615Az útvonalak első része (/usr/lib/fpc) a rendszeredtől függ. Egyes rendszereken például /usr/local/lib/fpc/... .
580616
581617**Tipp:** A keresési útvonalakat is megjelenítheted a következő parancsal: 'ppc386 -vt bogus'
582618
5836195\. Ellenőrizd, hogy a beállítási fájl (/etc/fpc.cfg) nem az LCL forráskódokra (.pp, .pas) mutató útvonalakat tartalmaz:
584620
585-` nem jó: -Fu(lazarus_source_directory)/lcl`\
586-` nem jó: -Fu(lazarus_source_directory)/lcl/interfaces/gtk`
621+```text
622+ nem jó: -Fu(lazarus_source_directory)/lcl
623+ nem jó: -Fu(lazarus_source_directory)/lcl/interfaces/gtk
624+```
587625
588626
589627Ha az LCL-t minden FPC projektedhez hozzá akarod adni, ellenőrizd hogy a két útvonal úgy néz ki mint a következők és fenti FPC lib útvonak után vannak elhelyezve:
590628
591-` -Fu(lazarus_source_directory)/lcl/units/$fpctarget`\
592-` -Fu(lazarus_source_directory)/lcl/units/$fpctarget/gtk`
629+```text
630+ -Fu(lazarus_source_directory)/lcl/units/$fpctarget
631+ -Fu(lazarus_source_directory)/lcl/units/$fpctarget/gtk
632+```
593633
5946346\. Ellenőrizd, hogy a hiányzó unit (glib.ppu) megtalálható az fpc lib könyvtárban. Például a gtk.ppu megtalálható a /usr/lib/fpc/\$fpcversion/units/i386-linux/gtk/ könyvtárban. Ha nem létezik akkor az fpc lib sérült és újra kell telepíteni.
595635
5966367\. Ellenőrizd, hogy a fájlok egy csatolt NFS könyvtárban vannak-e. Néhány esetben az NFS frissítések helytelenül hozhatnak létre fájlokat. Próbáld meg áthelyezni a forráskódokat egy nem NFS könyvtárba és ott fordrítani.
597637
5986388\. Ha még mindig nem sikerült próbáld használni a samplecfg szkriptet a következő módon:
599639
600640*\#* cd /usr/lib/fpc/*version*/
601641
602642*\#* sudo ./samplecfg /usr/lib/fpc/*\\\$version* /etc
603643
604644Figyelem! Ne írj / jelet az etc után, mert ha így teszel a rendszer a /etc/fpc.cfg/fpc.cfg fájlt hozza létre. Valójában pedig azt akarjuk, hogy a samplecfg a egy fájlt hozzon létre /etc/fpc.cfg néven és ne a /etc/fpc.cfg könyvtárat.
605645
606646### A bináris változatot telepítettem, de egy egyszerű projekt fordításakor a Lazarus ezt írja:: 'Fatal: Can't find unit CONTROLS'
607647
608648Valószínűleg újabb FPC csomagot használsz annál mint amivel a Lazarus binárisok készültek. A legjobb megoldás a forráskódok letöltése és a Lazarus újrafordítása. Letöltheted a legfrissebb forráskódot (snapshot) vagy használhatod az svn rendszert:
609649
610-` $ bash`\
611-` $ svn checkout `[`http://svn.freepascal.org/svn/lazarus/trunk`](http://svn.freepascal.org/svn/lazarus/trunk)` lazarus`\
612-` $ cd lazarus`\
613-` $ make clean all`
650+```text
651+ $ bash
652+ $ svn checkout http://svn.freepascal.org/svn/lazarus/trunk lazarus
653+ $ cd lazarus
654+ $ make clean all
655+```
614656
615657Ellenőrizd hogy a Lazarus számára meg van-e adva a forráskódok könyvtárának új útvonala, a menüből indulva: "Environment-\>General Options-\>Files-\>Lazarus Directory Top"
616658
617659### A Lazarus lefordítható, de az összefűzés leáll ezzel: 'libgdk-pixbuf not found'
618660
619661Telepítsd a gdk-pixbuf függvénytárat a gtk1.x-hez:
620662
621663A gdk-pixbuf függvénytár megtalálható a következő helyeken:
622664
623665RPM csomagok: <http://rpmfind.net/linux/rpm2html/search.php?query=gdk-pixbuf&submit=Search+>...&system=&arch=
624666
625667Debian csomagok: libgdk-pixbuf-dev
626668
627669Forráskódok: <ftp://ftp.gnome.org/pub/gnome/unstable/sources/gdk-pixbuf/>
628670
629671Külső hivatkozások: [term papers writing service](http://www.flashpapers.com/) [termpapers](http://www.besttermpaper.com/)
630672
631673**Ubuntu 8.10:**
632674
633675Ha a Lazarus-t GTK 2-0 változattal fordítod hibaüzenetet kapsz arról, hogy a "libgdk-pixbuf2.0" nem található. Csak telepítsd a libgtk2.0-dev csomagot az apt-vel így:
634676
635-`apt-get install libgtk2.0-dev`
677+```text
678+apt-get install libgtk2.0-dev
679+```
636680
637681### SuSE rendszeren ezt kapom: '/usr/bin/ld: cannot find -lgtk Error: Error while linking'
638682
639683Régebbi SuSE változatokban (SuSE 11 előtt) telepíteni kell a gtk fejlesztői függvénytárakat a /opt/gnome/lib (vagy a /opt/gnome/lib64 64-bites rendszeren) könyvtárba, ami nem a szabványos elhelyezés a függvénytárak számára. Add a könyvtárat az /etc/fpc.cfg-hez (-Fl/opt/gnome/lib).
640684
641685### A Lazarus összeomlik 'runtime error 211' hibával, miután egy komponenst telepítettem
642686
643687Egy komponens telepítése után a Lazarus összeomlik a következő üzenettel:
644688
645-`Threading has been used before cthreads was initialized.`\
646-`Make cthreads one of the first units in your uses clause.`\
647-`Runtime error 211 at $0066E188`
689+``` pascal
690+Threading has been used before cthreads was initialized.
691+Make cthreads one of the first units in your uses clause.
692+Runtime error 211 at $0066E188
693+```
648694
649695Hogyan javítsam?
650696
651697A fissen telepített komponens szálakkal (threads) dolgozik. Az FPC *nix rendszereken nem építi be automatikusan a szálak támogatását, de szükség van rá. Ennek elindítása a cthreads unitban történik. Minden alkalmazásban, amely a komponenst használja, a főprogram uses részéhez kell adni a cthreads unitot. Ez alól maga a Lazarus sem kivétel. Ez két módon lehetséges:
652698
6536991\) Nyisd meg a csomagot. A csomagszerkesztőben kattints az *Options*-ra. A *Usage* lapon add a *custom* sorhoz a **-dUseCThreads** kapcsolót. Ezután építsd újra az IDE-t. Így a cthreads unit automatikusan használva lesz az IDE-ben unix alatt és a cthreads el lesz indítva.
654700
6557012\) A csomagok módosításának elkerüléséhez, az FPC fordító parancssori kapcsolójának közvetlen használata szükséges. A kattints a *Tools-\>Configure "build Lazarus"* menüpontra. A megjelenő ablakban a Lazarus építési beállításai találhatók, ahol az "Options:" mezőbe írd be **-Facthreads** és kattints az "OK" gombra. A következő lépés a csomag telepítése. A Lazarus a -Facthreads kapcsolóval lesz újraépítve ami azt jelenti hogy a főprogram úgy lesz értelmezve mintha a cthreads unit mindig ott lenne elsőként a uses részben
656702
657703*Tipp:* A régi (össze nem omló) Lazarus is megtalálható lazarus.old néven, ugyanabban a könyvtárban ahol az összeomló Lazarus futtatható állomány van.
658704
659705Lásd még: [[Multithreaded Application Tutorial|Multithreaded_Application_Tutorial#Units_needed_for_a_multithreaded_application]] *(angol)*
660706
661707### Amikor egy szálakkal (threads) dolgozó programot futtatok, hibaüzenetet kapok: 'runtime error 232'
662708
663709A fordító hibaüzenete a következő:
664710
665-`This binary has no thread support compiled in.`\
666-`Recompile the application with a thread-driver in the program uses`\
667-`clause before other units using thread.`\
668-`Runtime error 232`
711+``` pascal
712+This binary has no thread support compiled in.
713+Recompile the application with a thread-driver in the program uses
714+clause before other units using thread.
715+Runtime error 232
716+```
669717
670718**Megoldás**: Add a cthreads unitot elsőként a uses részhez a főprogramodban, ami általában egy .lpr fájl.
671719
672720### Ubuntu Breezy/Mandriva KDE3 használatakor a betűk a Lazarus IDE-ben túl nagyok
673721
674722A Lazarus a Gtk1.2-re lett fordítva, a Gnome betűtípus beállításai nincsenek hatással a programra, mivel azok a Gtk2-re vonatkoznak. Próbáld meg így: Hozz létre egy fájlt .gtkrc.mine néven a felhasználói (home) könyvtáradban (ha még nincs ott) és add hozzá ezeket a sorokat:
675723
676724 style "default-text" {
677725 fontset = "-*-arial-medium-r-normal--*-100-*-*-*-*-iso8859-1,\
678726 -*-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
679727 }
680728
681729 class "GtkWidget" style "default-text"
682730
683731Ha ez nem elég, próbálj létrehozni egy .gtkrc szimbolikus linket ami a .gtkrc.mine fájlra mutat. Ez a megoldás működött Xubuntu 7.10, Mandriva 2009.0 KDE3 rendszereken.
684732
685733### Hogyan használhatnak a gtk programjaim különböző .rc fájlokat?
686734
687735a\) lehetőség: Nevezd át az rc fájlt *programod.gtkrc* névre és helyezd át ugyanabba a könyvtárba ahol a futtatható állomány van.
688736
689737b\) lehetőség: Használd a *GtkInt* unitot és a következő függvényhívást: *GTKWidgetSet.SetRCFilename('kiválasztott_rc_fájl');* Ezt a legjobb az *Application.Initialize* művelet előtt megtenni az .lpr fájlban *{\$IFDEF LCLGtk}* direktívával.
690738
691739c\) lehetőség: Használd a *gtk2* unitot és a *gtk_rc_parse('kiválasztott_rc_fájl'));* valamint a *gtk_rc_reparse_all;* függvényhívásokat.
692740
693741### Ubuntu-t használok és nem tudok Gtk2-re fordítani, hiányzó függvénytárak miatt
694742
695743Az Ubuntu esetében gondot okoz hogy nincsenek minden esetben létrehozva a szimbolikus hivatkozások még akkor sem ha egyébként a függvénytárak telepítve vannak.
696744
697745Mielőtt Gtk2-re fordítasz ellenőrizd, hogy minden hiányzó függvénytárhoz létezik a megfelelő szimbolikus link. Ilyesmit kell tenned:
698746
699747 cd /usr/lib
700748 sudo ln -s libgdk-x11-2.0.so.0 libgtk-x11-2.0.so
701749
702750Ellenőrizd, hogy a \[valami\].so szimbolikus hivatkozás létezik és az aktuális függvénytárra mutat.
703751
704752### Hogyan fordíthatok egy programot Gtk2-re?
705753
706754A Gtk2-re fordított IDE egyelőre nem teljesen stabil, de fordíthatsz szoftvert Gtk2-re a Gtk1-es IDE használatával.
707755
708756Először az LCL újrafordítása szükséges Gtk2-re. A menüben kattints "Tools-\>Configure Build Lazarus" pontra, majd az LCL-nél válaszd a "clean+build"-et és minden másnál "none"-t. Ezután kattints az "OK" gombra.
709757
710758A menüben kattints a "Tools-\>Build Lazarus" pontra.
711759
712760Most már fordíthatod a szoftveredet Gtk2-re ha "Compiler options" között az ablakelemkészletet (widgetset) Gtk2-re állítod.
713761
714762### Ezt az üzenetet kapom: "\[WARNING\] ** Multibyte character encodings (like UTF8) are not supported at the moment."
715763
716764Ez a hiba nem fordul elő a 10535 (0.9.21) számú változat utáni kiadásokban. Ezt megelőzően figyelmeztetésként szolgált UTF-8 kódolt szövegek használata esetén.
717765
718766A belső kulcskezelő eljárások gtk1 esetében nem tudták kezelni az igy kódolt billentyűleütéseket, ami azzal járt hogy például ékezetes karakterek esetében rosszul vagy egyáltalán nem érzékelte őket.
719767
720768(eredeti szöveg régebbi Lazarus változatokhoz)\
721769Ez a figyelmeztetés azt jelenti hogy utf-8 karakterkódolást használsz. Amennyiben Gtk 1-et használsz ez komoly probléma lehet és megakadályozhatja a Lazarus vagy a vele készített alkalmazások megfelelő működését.
722770
723771A megoldás, hogy átállítod a helyi karakterkódolást nem utf-8 módra mielőtt a parancssorból elindítod a programot, így:
724772
725773 export LC_CTYPE="pt_BR"
726774 export LANG="pt_BR"
727775 export LANGUAGE="pt_BR"
728776 ./lazarus
729777
730778A pt_BR helyére természetesen a te országod azonosítója kerüljön. Az automatikus beállításhoz szkriptet is készíthetsz.
731779
732780## Windows
733781
734782### Amikor a 'cycle' fordítást használom, ezt kapom: 'The name specified is not recognized as an internal or external command, operable program or batch file.\>& was unexpected at this time'.
735783
736784A fordító könyvtárában van egy OS2 parancsfájl make.cmd névvel. Különböző Windows változatok is parancsfájlként ismerik fel ezt, törlöd, mert bár ez szükséges OS2-n, de gondot okoz Windows-on.
737785
738786### Amikor 'cycle' fordítást használom, ezt kapom: 'make\[3\]: ./ppc1.exe: Command not found'
739787
740788Nem tudni miért, a make elfelejti az útvonalat. Próbáld meg a 'cycle' fordítást az alapkönyvtár beállításával futtatni, így: make cycle BASEDIR=your_fpc_source_dir_herecompiler
741789
742790### Amikor a Lazarus-t újra akarom fordítani (make parancsal), üzenetet kapok:
743791
744792#### make.exe: * * * interfaces: No such file or directory (ENOENT). Stop.make.exe: * * * \[interfaces_all\] Error 2
745793
746794Frissítened kell a make fájlt.
747795
748796#### makefile:27: *** You need the GNU utils package to use this Makefile. Stop.
749797
750798Ellenőrizd, hogy az FPC-t nem egy olyan útvonalra telepítetted, aminek a nevében szóköz is van. A Makefile-ban nem támogatott.
751799
752800### Hogyan adhatok a programomnak XP kinézetet, mint amilyen a Lazarus-nak is van?
753801
754802A menüből indulva: "Project\|Project Options\|Use manifest to enables themes" legyen bejelölve.
755803
756804### Amikor egy Lazarus-szal készített alkalmazást futtatok, az DOS ablakkal indul
757805
758806Add meg a -WG paramétert (Windows GUI) a fordító parancssorában vagy jelöld be a 'Win32 GUI alkalmazás' jelölőnégyzetet a Lazarus IDE fordítói beállításai között, a menüből indulva: "Projekt / Projekt beállításai / Fordító beállításai / Beállítás és cél / Cél-függő beállítások / Win32 GUI alkalmazás (-WG)".
759807
760808## macOS
761809
762810### Miért áll le a fordítás 'unknown section attribute: no_dead_strip' üzenettel?
763811
764812A 'halott' kódok kiszedését nem támogatja az assembler és az összefűző (linker) az Xcode 1.5 előtt (elérhető a Panther 10.3.9 változatban). Kapcsold ki a következő fordítói beállításokat:
765813
766814- Code \> Unit style \> Smart linkable (-CX)
767815- Linking \> Link Style \> Link smart (-XX)
768816
769817### Hibakeresés
770818
771819[[GDB Debugger Tips|Olvasd el a hibakereső tippeket Mac rendszerhez]] (angol)
772820
773821## Engedélyek (Licencek)
774822
775823### Készíthetek kereskedelmi alkalmazásokat a Lazarus-szal?
776824
777825Igen, az LCL az LGPL engedélyei szerint használható [[FPC modified LGPL|egy olyan kivétellel/kiegészítéssel]], amely megengedi a statikus összefűzést (linkelést) az alkalmazásod forráskódjának közreadása nélkül. A változtatásokat és fejlesztéseket az LCL kódjában azonban annak forráskódjával együtt terjeszteni kell. A Lazarus IDE a GPL licenc hatálya alatt áll. Az LCL csak azokat a forráskódokat tartalmazza melyek az 'lcl' könyvtárban találhatók, egyéb kódokat nem szabad ide elhelyezni és ezzel álcázni.
778826
779827### Miért van egyes komponensek használata korlátozva kereskedelmi alkalmazásokban?
780828
781829A Lazarus tartalmaz harmadik féltől származó komponenseket is. Ezek különböző engedélyek szerint használhatók. Ha használni szeretnéd őket, meg kell nézned az engedélyeket a csomagok forrásfájljaiban. A legtöbb harmadik féltől származó komponens a "components" könyvtárban található.
782830
783831### Honnan tudhatom meg, hogy egy komponens az LCL része-e?
784832
785833Minden LCL unit az 'lcl' könyvtárban található. Az LCL részét képező unitok listája megtalálható a <http://lazarus-ccr.sourceforge.net/docs/lcl/> címen. Ha kódodban egy itt fel nem sorolt unitot használsz, valószínűleg egy olyan komponenst használsz amely nem része az LCL-nek.
786834
787835### Készíthetek kereskedelmi bővítményt a Lazarus-hoz?
788836
789837Igen, az IDEIntf nevű része az IDE-nek az LGPL engedélyei szerint használható az előbb említett kivétellel, így az abban megosztott adatstruktúrák nem köteleznek arra, hogy a bővítményedet vagy a tervező csomagodat a GPL hatálya alá helyezd. Szabadon választható bármilyen engedélyezésű bővítmény; nem akarjuk korlátozni a választást. Röviden: nem-GPL kompatibilis bővítmények használata is megengedett. Megjegyzendő, hogy nem megengedett egy már lefordított Lazarus terjesztése statikusan beépített, nem-GPL kompatibilis bővítményekkel; azonban szerintünk ez nem komoly korlátozás, mivel a Lazarus könnyen újrafordítható.
790838
791839## A fórum használata
792840
793841### Miként tehetek fel kérdéseket helyesen a fórumban?
794842
795843Első és legfontosabb: **Mindig említsd meg melyik Lazarus, Free Pascal, Vezérlőkészlet (widgetset), CPU és Operációs Rendszer (pontosan meghatározott) változatot használod!** Nem elég annyi hogy a "legfrissebb", mindig egyértelmű változatszámot adj meg. Napi kód (fejlesztői változat) esetén a felülvizsgálat száma (revision number) és/vagy dátuma is fontos.
796844
797845Amikor arról érdeklődsz, hogy valami miért nem működik **mindig mellékelj egy rövid forráskódot, ami bemutatja a problémát**. A forráskódot a \[code\] és \[/code\] címkékkel fogd közre (vagy használd a kód beszúrására használatos gombot a fórum eszköztárán). Teljes programokat (forráskód) is mellékelhetsz *zip*-be csomagolva, ehhez jól használható a Lazarus "Projekt / Projekt közzététele ..." menüpontja.
798846
799847Ha hibajelzést kapsz a kódoddal kapcsolatban **mindig írd meg a hibaüzenetet**. A fordító, a hibakereső vagy a programod által jelzett hiba egyszerű másolása a legtöbb esetben elegendő lehet. Ha a hibajelzés a programod futása közben keletkezik használd a -gl (sorszámok megjelenítése futási hibák esetén) kapcsolót és ne használj "inline" kódot a fordításkor, így megfelelő információk készülhetnek a visszakövetéshez.
800848
801849Gyakran egy kép is hasznos lehet. Képeket feltölthetsz a <http://imageshack.us/> és hasonló oldalakra, aztán add meg a linket.
802850
803851Próbálj meg általános áttekintést adni a feladatról (**mi a megvalósítandó cél**) és lehetőleg minél részletesebb leírást a problémáról (**milyen módon próbálod megvalósítani a célt**). Gyakran van sokkal egyszerűbb módja a dolgok véghezvitelének, melyről esetleg nem tudsz.
804852
805853Végül, de nem utolsó sorban, győződj meg róla, hogy minden vonatkozó dokumentációt megkerestél és el is olvastál (pl. [[FPC documentation/hu|FPC dokumentáció]] és a Lazarus wiki, lásd pl. [[Lazarus Documentation/hu|Lazarus dokumentáció]]. Továbbá [kereshetsz a fórumon](http://lazarus.freepascal.org/index.php?action=search) is válaszokat: mások talán már találkoztak ugyanazzal a problémával és megoldásaik is lehetnek. Ha látható, hogy már próbáltál megoldást találni az emberek szívesebben segítenek.
806854
807855Arról, hogy miként tehetsz fel kérdéseket okosan, itt olvashatsz: [Hogyan kérdezzünk okosan: <http://esr.fsf.hu/smart-questions_hu.html>](http://esr.fsf.hu/smart-questions_hu.html)
808856
809857## Közreműködők és megjegyzések
810858
811859Ez az oldal az angol nyelvű oldal fordítása, mely az epikwiki [változat](http://lazarus-ccr.sourceforge.net/index.php?wiki=LazarusFaq) alapján készült.
812860
813861---
814862*From the Free Pascal wiki, page "Lazarus Faq/hu", as it stood on 2020-02-16 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
815863Category: FAQs/hu
816864Category: Lazarus/hu
817865Category: Magyar

Back to history