Sign in Join
Wiki copytemporary

Lazarus Faq/hu: what changed

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

OldNewLine
1-<font size="7">Lazarus GY.I.K.</font>
1+Lazarus 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
45-<figure>
46-<img src="Lazarus_vs_cpp_hu.png" title="Lazarus_vs_cpp_hu.png" />
47-<figcaption>Lazarus_vs_cpp_hu.png</figcaption>
48-</figure>
45+![](/wiki-images/7/7f/Lazarus_vs_cpp_hu.png)
4946
5047**Gyors útmutató a Lazarus/FPC alkalmazások méretének csökkentéséhez** *(tesztelve a Lazarus 0.9.26 változatával)*
5148
5249- 1\. "Project\|Project Options\|Compiler Options\|Code\|Smart Linkable (-CX)" -\> Bejelölve
5350- 2\. "Project\|Project Options\|Compiler Options\|Linking\|Debugging\|" minden törölve kivéve a "Strip Symbols From Executable (-Xs)" -\> Bejelölve
5451- 3\. "Project\|Project Options\|Compiler Options\|Linking\|Link Style\|Link Smart (-XX)" -\> Bejelölve
5552
5653A 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)
5754
5855- 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).
5956
6057**Méretek változása egy üres alkalmazás esetén, beállítások és operációs rendszerek függvényében**
6158
6259A 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.
6360
64-<TABLE WIDTH=642 BORDER=0 CELLPADDING=1 CELLSPACING=0>
65-
66-<TR VALIGN=TOP>
67-
68-<TD WIDTH=263>
69-
70-</TD>
71-
72-<TD WIDTH=14>
73-
7461   
7562
76-</TD>
77-
78-<TD WIDTH=111>
79-
8063Default Lazarus
8164
82-</TD>
83-
84-<TD WIDTH=14>
85-
8665   
8766
88-</TD>
89-
90-<TD WIDTH=220>
91-
9267LCL without debug informations
9368
94-</TD>
95-
96-</TR>
97-
98-<TR VALIGN=TOP>
99-
100-<TD WIDTH=263>
101-
102-<U>Ubuntu 64 bits / Lazarus 64 bits</U>
103-
104-</TD>
105-
106-<TD COLSPAN=4 WIDTH=372>
107-
108-</TD>
109-
110-</TR>
111-
112-<TR VALIGN=TOP>
113-
114-<TD WIDTH=263>
69+Ubuntu 64 bits / Lazarus 64 bits
11570
11671Default application
11772
118-</TD>
119-
120-<TD WIDTH=14>
121-
12273   
12374
124-</TD>
125-
126-<TD WIDTH=111>
127-
1287513,4  Mb
12976
130-</TD>
131-
132-<TD WIDTH=14>
133-
13477   
13578
136-</TD>
137-
138-<TD WIDTH=220>
139-
140797,5 Mb / 8
14180
142-</TD>
143-
144-</TR>
145-
146-<TR VALIGN=TOP>
147-
148-<TD WIDTH=263>
149-
15081Optimized compiler
15182
152-</TD>
153-
154-<TD WIDTH=14>
155-
15683   
15784
158-</TD>
159-
160-<TD WIDTH=111>
161-
162854,4 Mb
16386
164-</TD>
165-
166-<TD WIDTH=14>
167-
16887   
16988
170-</TD>
171-
172-<TD WIDTH=220>
173-
174892,70 Mb (0.29svn FPC2.4 2,5)
17590
176-</TD>
177-
178-</TR>
179-
180-<TR VALIGN=TOP>
181-
182-<TD WIDTH=263>
183-
18491   
18592
186-</TD>
187-
188-<TD COLSPAN=4 WIDTH=372>
189-
190-</TD>
191-
192-</TR>
193-
194-<TR VALIGN=TOP>
195-
196-<TD WIDTH=263>
197-
198-<U>Ubuntu 32 bits / Lazarus 32 bits</U>
199-
200-</TD>
201-
202-<TD COLSPAN=4 WIDTH=372>
203-
204-</TD>
205-
206-</TR>
207-
208-<TR VALIGN=TOP>
209-
210-<TD WIDTH=263>
93+Ubuntu 32 bits / Lazarus 32 bits
21194
21295Default application
21396
214-</TD>
215-
216-<TD WIDTH=14>
217-
21897   
21998
220-</TD>
221-
222-<TD WIDTH=111>
223-
2249919,6  Mb
225100
226-</TD>
227-
228-<TD WIDTH=14>
229-
230101   
231102
232-</TD>
233-
234-<TD WIDTH=220>
235-
2361035,7 Mb
237104
238-</TD>
239-
240-</TR>
241-
242-<TR VALIGN=TOP>
243-
244-<TD WIDTH=263>
245-
246105Optimized compiler
247106
248-</TD>
249-
250-<TD WIDTH=14>
251-
252107   
253108
254-</TD>
255-
256-<TD WIDTH=111>
257-
2581092,9 Mb
259110
260-</TD>
261-
262-<TD WIDTH=14>
263-
264111   
265112
266-</TD>
267-
268-<TD WIDTH=220>
269-
2701131,6 Mb
271114
272-</TD>
273-
274-</TR>
275-
276-<TR VALIGN=TOP>
277-
278-<TD WIDTH=263>
279-
280115   
281116
282-</TD>
283-
284-<TD COLSPAN=4 WIDTH=372>
285-
286-</TD>
287-
288-</TR>
289-
290-<TR VALIGN=TOP>
291-
292-<TD WIDTH=263>
293-
294-<U>Windows XP 32 bits / Lazarus 32 bits</U>
295-
296-</TD>
297-
298-<TD COLSPAN=4 WIDTH=372>
299-
300-</TD>
301-
302-</TR>
303-
304-<TR VALIGN=TOP>
305-
306-<TD WIDTH=263>
117+Windows XP 32 bits / Lazarus 32 bits
307118
308119Default application
309120
310-</TD>
311-
312-<TD WIDTH=14>
313-
314121   
315122
316-</TD>
317-
318-<TD WIDTH=111>
319-
32012311,8 Mb
321124
322-</TD>
323-
324-<TD WIDTH=14>
325-
326125   
327126
328-</TD>
329-
330-<TD WIDTH=220>
331-
3321272,14 Mb
333128
334-</TD>
335-
336-</TR>
337-
338-<TR VALIGN=TOP>
339-
340-<TD WIDTH=263>
341-
342129Optimized compiler
343130
344-</TD>
345-
346-<TD WIDTH=14>
347-
348131   
349132
350-</TD>
351-
352-<TD WIDTH=111>
353-
3541331,62 Mb
355134
356-</TD>
357-
358-<TD WIDTH=14>
359-
360135   
361136
362-</TD>
363-
364-<TD WIDTH=220>
365-
3661371,50 Mb
367138
368-</TD>
369-
370-</TR>
371-
372-<TR VALIGN=TOP>
373-
374-<TD WIDTH=263>
375-
376139   
377140
378-</TD>
379-
380-<TD COLSPAN=4 WIDTH=372>
381-
382-</TD>
383-
384-</TR>
385-
386-<TR VALIGN=TOP>
387-
388-<TD WIDTH=263>
389-
390-<U>Windows Seven 64 bits / Lazarus 64 bits</U>
391-
392-</TD>
393-
394-<TD COLSPAN=4 WIDTH=372>
395-
396-</TD>
397-
398-</TR>
399-
400-<TR VALIGN=TOP>
401-
402-<TD WIDTH=263>
141+Windows Seven 64 bits / Lazarus 64 bits
403142
404143Default application
405144
406-</TD>
407-
408-<TD WIDTH=14>
409-
410145   
411146
412-</TD>
413-
414-<TD WIDTH=111>
415-
41614712,3  Mb
417148
418-</TD>
419-
420-<TD WIDTH=14>
421-
422149   
423150
424-</TD>
425-
426-<TD WIDTH=220>
427-
4281513,20 Mb
429152
430-</TD>
431-
432-</TR>
433-
434-<TR VALIGN=TOP>
435-
436-<TD WIDTH=263>
437-
438153Optimized compiler
439154
440-</TD>
441-
442-<TD WIDTH=14>
443-
444155   
445156
446-</TD>
447-
448-<TD WIDTH=111>
449-
4501572,14 Mb
451158
452-</TD>
453-
454-<TD WIDTH=14>
455-
456159   
457160
458-</TD>
459-
460-<TD WIDTH=220>
461-
4621612,16 Mb
463162
464-</TD>
465-
466-</TR>
467-
468-</TABLE>
469-
470163### Hiba: 'Fatal: Circular unit reference between a and b'
471164
472165Ez 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:
473166
474167Ez hibát okoz:
475168
476169` unit a;`\
477170` `\
478171` interface`\
479172` `\
480173` uses b;`\
481174` `\
482175` implementation`\
483176` `\
484177` end.`\
485178` ...`\
486179` unit b;`\
487180` `\
488181` interface`\
489182` `\
490183` uses a;`\
491184` `\
492185` implementation`\
493186` `\
494187` end.`
495188
496189Ez viszont nem:
497190
498191` unit a;`\
499192` `\
500193` interface`\
501194` `\
502195` implementation`\
503196` `\
504197` uses b;`\
505198` `\
506199` end.`\
507200` ...`\
508201` unit b;`\
509202` `\
510203` interface`\
511204` `\
512205` implementation`\
513206` `\
514207` uses a;`\
515208` `\
516209` end.`
517210
518211### Miért lassú az alkalmazások építése Windows-on?
519212
520213Ez 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.
521214
522215Á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ó.
523216
524217Ezen 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)*
525218
526219Egy 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.
527220
528221**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.
529222
530223### Melyikre van szükségem: ppc386.cfg vagy fpc.cfg?
531224
532225Csak az fpc.cfg kell neked. Így a fordító tudja hogy hol vannak a függvénytárak.
533226
534227### Hogyan fordítsam a lazarus-t?
535228
536229Valahogy így:
537230
538231`$ cd lazarus`\
539232`$ make clean all`
540233
541234### Hogyan fordíthatok más projekteket, amik az LCL-en az alapulnak?
542235
543236Ha 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:
544237
545238`  # searchpath for other toolkits (Linux)`\
546239`  -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/{Készleted}`
547240
548241`  # searchpath for other toolkits (Windows)`\
549242` -Fu/{LazarusKönyvtárad}/components/units/{Készleted}`
550243
551244
552245Ahol {a Készleted} a következők lehetnek: *gtk2*, *gnome*, *qt* vagy *win32*. Ez után futtasd ezt a parancsot:
553246
554247
555248ppc386 projekted.pp
556249
557250**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]]'.
558251
559252### Melyik FPC változatra van szükség?
560253
561254A Lazarus 0.9.28 legalább az FPC 2.4 változatát igényli.
562255
563256### Nem tudom fordítani a Lazarus-t
564257
5652581. Ellenőrizd, hogy a fordító megfelő változatát használod
5662592. Ellenőrizd, hogy a függvénytárak (fpc) ugyanehhez a változathoz valók
5672603. Ellenőrizd, hogy a fordító telepítési útvonalának nevében vannak-e szóközök. Ne legyenek!
5682614. Ellenőrizd, hogy van-e fpc.cfg fájl és nincs régi ppc386.cfg
5692625. Nézd át az operációs rendszerrel összefüggő GY.I.K.-t
570263
571264### Amikor egy projektet fordítok, hibaüzenetet kapok
572265
573266#### "Cannot find Unit interfaces". Hogyan oldjam meg?
574267
575268Ez 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).
576269
577270Ez 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".
578271
579272Ellenő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.
580273
581274Ha 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.
582275
583276Ha 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:
584277
585278- É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.
586279- 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!
587280- 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)".
588281
589282### Amikor egy delphi projektet akarok fordítani Lazarus-szal, hibaüzenetet kapok
590283
591284#### at the line :{\$R *.DFM} Hogyan oldhatom meg ezt a problémát?
592285
593286A 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:
594287
595-- 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: <span class="kbd">Alt</span>+<span class="kbd">F12</span> 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.
288+- 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.
596289- Készíts egy fájlt a lazres programmal (a lazarus/tools könyvtárban található): lazres formod.lrs formod.lfm
597290- Add a következő sorokat a "initialization" részhez:
598291
599292`     initialization`\
600293`     {$I formod.lrs}`
601294
602295Tartsd észben, hogy még nem minden tulajdonságot (property) támogat a Lazarus, amik a .dfm fájlokban előfordulhatnak, ezért esetleg összeomolhat.
603296
604297Szerk: 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.
605298
606299#### 'Identifier not found LazarusResources'.
607300
608301Amikor 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.
609302
610303### 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'
611304
612305Ellenőrizd a "Project\|Project Inspector"-ban, hogy a projekted az 'LCL' csomagokon alapul és hogy telepítetted az FPC forráskódjait.
613306
614307A 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.
615308
616309Az FPC forráskódjainak útvonala beállítható a menüből indulva: "Environment\|Environment Options\|Files\|FPC source directory"
617310
618311### 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?
619312
620313Például:
621314
622315`/lazarus/path/tools/lazres sound.lrs sound1.wav sound2.wav ...`
623316
624317Létrehozza a sound.lrs fájlt a sound1.wav és sound2.wav fájlokat felhasználva.
625318
626319Ezután illeszd a kódodba a form .lrs *után*:
627320
628321`...`\
629322`initialization`\
630323`{$i unit1.lrs} // ez a fő erőforrás fájl (első)`\
631324`{$i sound.lrs} // felhasználó által meghatározott erőforrás fájl`\
632-\
325+
633326`end.`
634327
635328A programodban így használhatod:
636329
637330`Sound1AsString:=LazarusResources.Find('sound1').Value;`
638331
639332### Mit jelentenek a különböző fájltípusok amiket a Lazarus használ?
640333
641334A [[Lazarus Tutorial|Lazarus Tutorial#The Lazarus files]] cikk részletesen, példákkal írja le a fájltipus kiterjesztéseket. Ez egy összefoglaló lista:
642335
643336`*.lpi`
644337Lazarus Project Információ fájl (XML formátum; tartalmazza a projekt egyedi beállításait)
645338
646339`*.lpr`
647340Lazarus Program fájl; a főprogram Pascal forráskódját tartalmazza
648341
649342`*.lfm`
650343Lazarus 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)
651344
652345`*.pas` vagy `*.pp`
653346Pascal forráskódú Unit (tipikusan egy form-hoz tartozik amelynek adatai a megfelelő `*.lfm` fájlban találhatók)
654347
655348`*.lrs`
656349Lazarus Resource fájl (erőforrás, ez egy generált fájl; nem szabad összetéveszteni a Windows erőforrás fájlokkal).
657350
658351Ilyen 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
659352
660353`*.ppu`
661354Lefordított unit
662355
663356`*.lpk`
664357Lazarus csomag (package) információ fájl. (XML formátum; a csomag egyedi beállításait tartalmazza)
665358
666359### 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?
667360
668361A 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.
669362
670363`var`\
671364`  MyTextFile: TextFile;`\
672365`  MyText: System.Text;`
673366
674367Hasonló 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.
675368
676369### Hibaüzenetet kapok amikor a Printer.BeginDoc-ot használom
677370
678371A Printers unitot hozzá kell adnod a uses részhez.
679372
680373A 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:"
681374
682375Ha 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"
683376
684377Ha az alapértelmezett telepítési könyvtárat használtad akkor a \[lazarus installed directory\] útvonala:
685378
686379- Windows: c:\lazarus
687380- Linux: /usr/lib/lazarus
688381
689382Ugyanez a megoldás alkalmazható ha a Printer.Printers-re hivatkozáskor kivétel (exception) keletkezik.
690383
691384### Miért egyenlő a TForm.ClientWidth/ClientHeight és a TForm.Width/Height
692385
693386A 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.
694387
695388Azonban 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.
696389
697390## Hibakereső (Debugger)
698391
699392### Hogyan láthatom a hibakeresés kimenetét?
700393
701394Az LCL tartalmaz két eljárást az LCLProc unitban a hibakereső kimenetre történő íráshoz. Ezek a következők:
702395
703396- **DebugLn:** úgy működik mint a WriteLn, de csak string paramétert fogad el.
704397- **DbgOut:** úgy működik mint a Write, de csak string paramétert fogad el.
705398
706399Normá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.
707400
708401A 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.
709402
710403Ha 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:
711404
712405`set lazarus_debuglog=c:\lazarus\debug.txt`
713406
714407a hibakeresési kimenet a c:\lazarus\debug.txt fájlba lesz írva.
715408
716409Minden alkalmazás amely használja az lclproc unitot, használhatja ezt a lehetőséget.
717410
718411Lazarus hibakeresés
719412A 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.
720413
721414### Hogyan figyelhetem a tulajdonságokat? (property)
722415
723416A legutóbbi fejlesztői (2.5.1) vagy a 2.4-es változatot kell használnod.
724417
725418Ha az alkalmazást a -gw (dwarf debug info) használatával fordítod, akkor figyelheted a tulajdonságokat.
726419
727420Megjegyzendő 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).
728421
729422Ha 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.
730423
731424A 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.
732425
733426### Miért nem mutatja a hibakereső az egyes Változókat/Struktúrákat ("no such symbol"/"incomplete type")
734427
735428A következő hibakeresési problémák esetén:\
736429\- tulajdonságok (property-k)\
737430\- array of ... (dinamikus tömbök)\
738431\- változók beágyazott eljárásokban\
739432\- "no such symbol in context"\
740433\- "incomplete type"\
741434olvasd el ezt a cikket: [[GDB Debugger Tips]] *(angol)*
742435
743436### Hogyan használható a hibakereső, csomagokban található FCL komponenseken Lazarus-szal
744437
745438Az 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.
746439
747440A 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.
748441
749442Mielő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ó:
750443
751444`-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/*`
752445
753446A 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.
754447
755448**1. lépés**: Nyisd meg a terminál ablakot\
756449**2. lépés**: cd /user/local/share/src/fpc-2.3.1/fpc/fcl-db/\
757450**3. lépés**: sudo make clean all install INSTALL_PREFIX=/usr/local OPT=-gl\
758451Megjegyzés: az INSTALL_PREFIX paramétert megfelelően be kell állítani a unitok megfelelő elhelyezése érdekében!
759452
760453A 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.
761454
762455`make clean all install INSTALL_PREFIX=/usr/local OPT=-gl`
763456
764457Végül bármelyik FCL unit újrafordítása után szükséges lehet az LCL újrafordítása is ugyanígy.
765458
766459### Gondok a GDB használatával macOS rendszeren
767460
768461[[GDB Debugger Tips|Olvasd el a hibakereső tippeket Mac rendszerhez]] (angol)
769462
770463## Közreműködés / Javítás a Lazarus-ban
771464
772465### 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ő
773466
774467Ezeket 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:
775468
776469 +-------------------++--+
777470 |menü || |
778471 +-------------------+| |
779472 +--++---------------+| |
780473 |PI|| Forráskód ||CE|
781474 +--+| Szerkesztő || |
782475 +--+| || |
783476 | |+---------------++--+
784477 |OI|+-------------------+
785478 | ||üzenetek |
786479 +--++-------------------+
787480
788481A 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.
789482
790483Ideiglenes megoldásként használhatod ezt a kiegészítést az IDE-hez: [[Manual Docker]]
791484
792485### Javítottam/fejlesztettem a Lazaruszon. Hogyan adhatom hozzá a változtatásokat a hivatalos Lazarus forráskódhoz?
793486
794487Készíts egy foltot (patch) és küldd el a fejlesztőknek. Részletek itt találsz: [[Creating A Patch]]. *(angolul)*
795488
796489### Hogyan lehetek Lazarus fejlesztő, az SVN és a hibakövető (bug-tracker) kezelője?
797490
798491Mindenek 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).
799492
800493## Hol vannak a ... definiciók
801494
802495### Virtuális billentyű konstansok
803496
804-A virtuális billentyű konstansok az [[doc:lcl/lcltype|LCLType]] unitban vannak definiálva. Add a <b>uses</b> részhez az LCLtype unitot.
497+A virtuális billentyű konstansok az [[doc:lcl/lcltype|LCLType]] unitban vannak definiálva. Add a uses részhez az LCLtype unitot.
805498
806499## Az IDE használata
807500
808501### Hogyan használhatom az "azonosító kiegészítés" ("identifier completion") lehetőséget?
809502
810-Az azonosítók kiegészítése a <span class="kbd">ctrl</span>+<span class="kbd">szóköz</span> 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'.
503+Az 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'.
811504
812505## Linux
813506
814507### Hogyan használhatom a hibakeresőt az IDE nélkül?
815508
816509Mindenek 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:
817510
818511` $ make clean; make OPT=-dDEBUG`\
819512` $ ddd lazarus`
820513
821514Legyé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.
822515
823516### Tudom futtatni a hibakeresőt, de ddd nem találja a forráskódjaimat vagy panaszkodik, hogy nincs bennük kód. Mi ez?
824517
825518Ez az útvonalakkal kapcsolatos hiba a gdb és a ddd esetében is. Így kerülheted el:
826519
827520- 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.
828521- A ddd menüjében kattints az \[Edit\] \[gdb-settings\] lehetőségre és állítsd be a keresési útvonalat
829522- Hozd létre a \$(HOME)/.gdbinit fájlt a következőképpen:
830523
831524`     directory /utvonal/lazarus`\
832525`     directory /utvonal/lazarus/lcl`\
833526`     directory /utvonal/lazarus/lcl/include`
834527
835528### Hibaüzenetet kapok az összefűzés közben, ami azt mondja "/usr/bin/ld can't find -l\<valami_lib\>"
836529
837530**Csomag alapú összeállítások**
838531Telepí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.
839532
840533Egyes összeállításokban van parancs amellyel meg lehet keresni, hogy melyik csomag tartalmaz egy adott fájlt:
841534
842535**Mandriva**
843536
844537`[]$ urpmf lib<valami_lib>.so`
845538
846539
847540listá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.
848541
849542
850543**Debian**
851544
852545
853546telepítsd az apt-file eszközt (apt-get install apt-file) majd
854547
855548`[]$ apt-file search lib<valami_lib>.so`
856549
857550
858551listá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.
859552
860553**SuSE**
861554
862555A 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).
863556
864557### Hogyan alakíthatok át kylix 2 projektet Lazarus projekté?
865558
866559### 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"
867560
8685611\. Ellenőrizd egy tiszta fordítással is, így: 'make clean all'
869562
8705632\. Ellenőrizd, hogy a fordító megfelelő változatát használod (2.0.4 vagy újabb)
871564
8725653\. 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.
873566
874567
875568**Tipp:** Megtudhatod, hogy melyik beállítási fájl van használatban a következő paranccsal: 'ppc386 -vt bogus'
876569
877570Törölj minden ppc386.cfg ha már nincs rá szükséged.
878571
8795724\. 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:
880573
881574`   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget`\
882575`   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl`\
883576`   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*`
884577
885578
886579Az útvonalak első része (/usr/lib/fpc) a rendszeredtől függ. Egyes rendszereken például /usr/local/lib/fpc/... .
887580
888581**Tipp:** A keresési útvonalakat is megjelenítheted a következő parancsal: 'ppc386 -vt bogus'
889582
8905835\. Ellenőrizd, hogy a beállítási fájl (/etc/fpc.cfg) nem az LCL forráskódokra (.pp, .pas) mutató útvonalakat tartalmaz:
891584
892585` nem jó: -Fu(lazarus_source_directory)/lcl`\
893586` nem jó: -Fu(lazarus_source_directory)/lcl/interfaces/gtk`
894587
895588
896589Ha 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:
897590
898591` -Fu(lazarus_source_directory)/lcl/units/$fpctarget`\
899592` -Fu(lazarus_source_directory)/lcl/units/$fpctarget/gtk`
900593
9015946\. 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.
902595
9035967\. 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.
904597
9055988\. Ha még mindig nem sikerült próbáld használni a samplecfg szkriptet a következő módon:
906599
907600*\#* cd /usr/lib/fpc/*version*/
908601
909602*\#* sudo ./samplecfg /usr/lib/fpc/*\\\$version* /etc
910603
911604Figyelem! 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.
912605
913606### A bináris változatot telepítettem, de egy egyszerű projekt fordításakor a Lazarus ezt írja:: 'Fatal: Can't find unit CONTROLS'
914607
915608Való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:
916609
917610` $ bash`\
918611` $ svn checkout `[`http://svn.freepascal.org/svn/lazarus/trunk`](http://svn.freepascal.org/svn/lazarus/trunk)` lazarus`\
919612` $ cd lazarus`\
920613` $ make clean all`
921614
922615Ellenő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"
923616
924617### A Lazarus lefordítható, de az összefűzés leáll ezzel: 'libgdk-pixbuf not found'
925618
926619Telepítsd a gdk-pixbuf függvénytárat a gtk1.x-hez:
927620
928621A gdk-pixbuf függvénytár megtalálható a következő helyeken:
929622
930623RPM csomagok: <http://rpmfind.net/linux/rpm2html/search.php?query=gdk-pixbuf&submit=Search+>...&system=&arch=
931624
932625Debian csomagok: libgdk-pixbuf-dev
933626
934627Forráskódok: <ftp://ftp.gnome.org/pub/gnome/unstable/sources/gdk-pixbuf/>
935628
936629Külső hivatkozások: [term papers writing service](http://www.flashpapers.com/) [termpapers](http://www.besttermpaper.com/)
937630
938631**Ubuntu 8.10:**
939632
940633Ha 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:
941634
942635`apt-get install libgtk2.0-dev`
943636
944637### SuSE rendszeren ezt kapom: '/usr/bin/ld: cannot find -lgtk Error: Error while linking'
945638
946639Ré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).
947640
948641### A Lazarus összeomlik 'runtime error 211' hibával, miután egy komponenst telepítettem
949642
950643Egy komponens telepítése után a Lazarus összeomlik a következő üzenettel:
951644
952645`Threading has been used before cthreads was initialized.`\
953646`Make cthreads one of the first units in your uses clause.`\
954647`Runtime error 211 at $0066E188`
955648
956649Hogyan javítsam?
957650
958651A 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:
959652
9606531\) 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.
961654
9626552\) 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
963656
964657*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.
965658
966659Lásd még: [[Multithreaded Application Tutorial|Multithreaded_Application_Tutorial#Units_needed_for_a_multithreaded_application]] *(angol)*
967660
968661### Amikor egy szálakkal (threads) dolgozó programot futtatok, hibaüzenetet kapok: 'runtime error 232'
969662
970663A fordító hibaüzenete a következő:
971664
972665`This binary has no thread support compiled in.`\
973666`Recompile the application with a thread-driver in the program uses`\
974667`clause before other units using thread.`\
975668`Runtime error 232`
976669
977670**Megoldás**: Add a cthreads unitot elsőként a uses részhez a főprogramodban, ami általában egy .lpr fájl.
978671
979672### Ubuntu Breezy/Mandriva KDE3 használatakor a betűk a Lazarus IDE-ben túl nagyok
980673
981674A 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:
982675
983676 style "default-text" {
984677 fontset = "-*-arial-medium-r-normal--*-100-*-*-*-*-iso8859-1,\
985678 -*-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
986679 }
987680
988681 class "GtkWidget" style "default-text"
989682
990683Ha 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.
991684
992685### Hogyan használhatnak a gtk programjaim különböző .rc fájlokat?
993686
994687a\) 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.
995688
996689b\) 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.
997690
998691c\) 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.
999692
1000693### Ubuntu-t használok és nem tudok Gtk2-re fordítani, hiányzó függvénytárak miatt
1001694
1002695Az 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.
1003696
1004697Mielőtt Gtk2-re fordítasz ellenőrizd, hogy minden hiányzó függvénytárhoz létezik a megfelelő szimbolikus link. Ilyesmit kell tenned:
1005698
1006699 cd /usr/lib
1007700 sudo ln -s libgdk-x11-2.0.so.0 libgtk-x11-2.0.so
1008701
1009702Ellenőrizd, hogy a \[valami\].so szimbolikus hivatkozás létezik és az aktuális függvénytárra mutat.
1010703
1011704### Hogyan fordíthatok egy programot Gtk2-re?
1012705
1013706A Gtk2-re fordított IDE egyelőre nem teljesen stabil, de fordíthatsz szoftvert Gtk2-re a Gtk1-es IDE használatával.
1014707
1015708Elő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.
1016709
1017710A menüben kattints a "Tools-\>Build Lazarus" pontra.
1018711
1019712Most már fordíthatod a szoftveredet Gtk2-re ha "Compiler options" között az ablakelemkészletet (widgetset) Gtk2-re állítod.
1020713
1021714### Ezt az üzenetet kapom: "\[WARNING\] ** Multibyte character encodings (like UTF8) are not supported at the moment."
1022715
1023716Ez 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.
1024717
1025718A 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.
1026719
1027720(eredeti szöveg régebbi Lazarus változatokhoz)\
1028-<strike> Ez 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.
721+Ez 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.
1029722
1030723A 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:
1031724
1032725 export LC_CTYPE="pt_BR"
1033726 export LANG="pt_BR"
1034727 export LANGUAGE="pt_BR"
1035728 ./lazarus
1036729
1037-A 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. </strike>
730+A 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.
1038731
1039732## Windows
1040733
1041734### 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'.
1042735
1043736A 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.
1044737
1045738### Amikor 'cycle' fordítást használom, ezt kapom: 'make\[3\]: ./ppc1.exe: Command not found'
1046739
1047740Nem 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
1048741
1049742### Amikor a Lazarus-t újra akarom fordítani (make parancsal), üzenetet kapok:
1050743
1051744#### make.exe: * * * interfaces: No such file or directory (ENOENT). Stop.make.exe: * * * \[interfaces_all\] Error 2
1052745
1053746Frissítened kell a make fájlt.
1054747
1055748#### makefile:27: *** You need the GNU utils package to use this Makefile. Stop.
1056749
1057750Ellenő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.
1058751
1059752### Hogyan adhatok a programomnak XP kinézetet, mint amilyen a Lazarus-nak is van?
1060753
1061754A menüből indulva: "Project\|Project Options\|Use manifest to enables themes" legyen bejelölve.
1062755
1063756### Amikor egy Lazarus-szal készített alkalmazást futtatok, az DOS ablakkal indul
1064757
1065758Add 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)".
1066759
1067760## macOS
1068761
1069762### Miért áll le a fordítás 'unknown section attribute: no_dead_strip' üzenettel?
1070763
1071764A '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:
1072765
1073766- Code \> Unit style \> Smart linkable (-CX)
1074767- Linking \> Link Style \> Link smart (-XX)
1075768
1076769### Hibakeresés
1077770
1078771[[GDB Debugger Tips|Olvasd el a hibakereső tippeket Mac rendszerhez]] (angol)
1079772
1080773## Engedélyek (Licencek)
1081774
1082775### Készíthetek kereskedelmi alkalmazásokat a Lazarus-szal?
1083776
1084777Igen, 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.
1085778
1086779### Miért van egyes komponensek használata korlátozva kereskedelmi alkalmazásokban?
1087780
1088781A 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ó.
1089782
1090783### Honnan tudhatom meg, hogy egy komponens az LCL része-e?
1091784
1092785Minden 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.
1093786
1094787### Készíthetek kereskedelmi bővítményt a Lazarus-hoz?
1095788
1096789Igen, 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ó.
1097790
1098791## A fórum használata
1099792
1100793### Miként tehetek fel kérdéseket helyesen a fórumban?
1101794
1102795Első é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.
1103796
1104797Amikor 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.
1105798
1106799Ha 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.
1107800
1108801Gyakran egy kép is hasznos lehet. Képeket feltölthetsz a <http://imageshack.us/> és hasonló oldalakra, aztán add meg a linket.
1109802
1110803Pró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.
1111804
1112805Vé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.
1113806
1114807Arró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)
1115808
1116809## Közreműködők és megjegyzések
1117810
1118811Ez 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.
1119812
1120813---
1121814*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).*
1122815Category: FAQs/hu
1123816Category: Lazarus/hu
1124817Category: Magyar

Back to history