Sign in Join
Wiki copytemporary

Lazarus Faq/it: what changed

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

OldNewLine
11## Questioni generiche
22
33### Perché i file binari generati sono così grandi?
44
55Sono grandi perché includono una grande quantità di informazioni di debug necessarie per l'uso di gdb (GNU Debugger). Il compilatore ha un'opzione (-Xs) che toglie le informazioni di debug dagli eseguibili, ma nelle versioni 2.0.2 e precedenti non funzionava a causa di un bug, che è stato corretto a partire dalla versione 2.0.4 e successive del compilatore FreePascal.
66
77Si può usare il programma "strip" per rimuovere i simboli di debug dagli eseguibili; si trova nella directory lazarus\pp\bin\i386-win32\\. Basta dare il comando "strip --strip-all \<nome e pathname del vostro eseguibile\>" dalla linea di comando. Per rendere ancora più piccolo il vostro eseguibile usate [UPX](http://upx.sourceforge.net/), un ottimo exe packer; non causa overhead di memoria perché usa un algoritmo di decompressione in-place, ed ha una velocità di decompressione veramente buona (~10 MB/sec su un Pentium 133).
88
99Per usare upx date il comando "upx \<nome e pathname del vostro eseguibile\>" dalla linea di comando. Dopo aver usato entrambi questi programmi su un semplice programma GUI creato con Lazarus si ottiene:
1010
1111- ~ 700kb su Linux
1212- ~ 420kb su Windows
1313
1414Una discussione più approfondita dei pro e contro dell'uso di UPX si trova nell'articolo [[Size Matters]].
1515
1616E' inoltre importante notare che anche un semplice hello world creato con Lazarus include già un gran numero di funzioni, fra le quali:
1717
1818- librerie di gestione di XML
1919- librerie di gestione immagini per file png, xpm, bmp e ico
2020- Praticamente tutti i widget della Lazarus Component Library
2121- Tutta la libreria di runtime del Free Pascal
2222
2323Per cui è sì molto grande, ma include quasi tutto quello che serve a un'applicazione reale che sia un minimo complessa. Gli eseguibili generati da Lazarus sono grandi inizialmente, ma crescono molto poco al crescere della complessità dell'applicazione, grazie alle proprietà del Free Pascal e del modo in cui funzionano i form di Lazarus. Un progetto C++ (ma anche in molti altri linguaggi e tool) inizia con dimensioni dell'exe molto piccole, ma che crescono esponenzialmente quando si aggiungono funzionalità realmente utili e non banali.
2424
25-<figure>
26-<img src="Lazarus_vs_cpp.png" title="Lazarus_vs_cpp.png" />
27-<figcaption>Lazarus_vs_cpp.png</figcaption>
28-</figure>
25+![](/wiki-images/d/de/Lazarus_vs_cpp.png)
2926
3027**Guida rapida alla riduzione della dimensione degli eseguibili generati da Lazarus/FPC** *(testato con Lazarus 0.9.26)*
3128
3229- 1\. Project\|Compiler Options\|Code\|Smart Linkable (-CX) -\> Selezionato
3330- 2\. Project\|Compiler Options\|Linking\|Debugging\| Deselezionare tutto tranne
3431
3532Strip Symbols From Executable (-Xs) -\> Selezionato
3633
3734- 3\. Project\|Compiler Options\|Linking\|Link Style\|Link Smart (-XX) -\> Selezionato
3835
3936La parte più importante sembra essere la 2. Per una semplice applicazione, la dimensione dell'eseguibile dovrebbe ora essere 1-3 MB invece di 15-20 MB. A questo punto potreste provare anche:
4037
4138- 4\. Project\|Compiler Options\|Code\|Optimizations\|smaller rather than faster -\> Selezionato (Attenzione: potrebbe penalizzare la velocità di esecuzione)
4239
4340- 5\. (opzionale) usate UPX \<vostro_eseguibile\> per comprimere il file binario di un fattore due o tre. (Attenzione: come già detto, ci sono alcuni svantaggi nell'uso di UPX).
4441
4542**Tabella delle dimensioni di una applicazione vuota con varie impostazioni e sistemi operativi**
4643
4744Ho fatto girare i test che ho fatto su Lazarus 0.9.29 con FPC 2.4 (FPC 2.2.4 sotto Windows). *Compilatore ottimizzato* significa usare i consigli dati qui sopra ma *senza usare UPX*; *Lazarus base* significa usando Lazarus con le impostazioni di default che ha appena installato; *LCL no debug* significa dopo aver ricompilato la LCL e la IDE di Lazarus senza le informazioni di debug (-g-).
4845
49-<TABLE WIDTH=642 BORDER=0 CELLPADDING=1 CELLSPACING=0>
50-
51-<TR VALIGN=TOP>
52-
53-<TD WIDTH=263>
54-
55-</TD>
56-
57-<TD WIDTH=14>
58-
5946   
6047
61-</TD>
62-
63-<TD WIDTH=111>
64-
6548Lazarus base
6649
67-</TD>
68-
69-<TD WIDTH=14>
70-
7150   
7251
73-</TD>
74-
75-<TD WIDTH=220>
76-
7752LCL no debug
7853
79-</TD>
80-
81-</TR>
82-
83-<TR VALIGN=TOP>
84-
85-<TD WIDTH=263>
86-
87-<U>Ubuntu 64 bit / Lazarus 64 bit</U>
88-
89-</TD>
90-
91-<TD COLSPAN=4 WIDTH=372>
92-
93-</TD>
94-
95-</TR>
96-
97-<TR VALIGN=TOP>
98-
99-<TD WIDTH=263>
54+Ubuntu 64 bit / Lazarus 64 bit
10055
10156Applicazione vuota
10257
103-</TD>
104-
105-<TD WIDTH=14>
106-
10758   
10859
109-</TD>
110-
111-<TD WIDTH=111>
112-
1136013,4  Mb
11461
115-</TD>
116-
117-<TD WIDTH=14>
118-
11962   
12063
121-</TD>
122-
123-<TD WIDTH=220>
124-
125647,5 Mb / 8
12665
127-</TD>
128-
129-</TR>
130-
131-<TR VALIGN=TOP>
132-
133-<TD WIDTH=263>
134-
13566Compilatore ottimizzato
13667
137-</TD>
138-
139-<TD WIDTH=14>
140-
14168   
14269
143-</TD>
144-
145-<TD WIDTH=111>
146-
147704,4 Mb
14871
149-</TD>
150-
151-<TD WIDTH=14>
152-
15372   
15473
155-</TD>
156-
157-<TD WIDTH=220>
158-
159742,70 Mb (0.29svn FPC2.4 2,5)
16075
161-</TD>
162-
163-</TR>
164-
165-<TR VALIGN=TOP>
166-
167-<TD WIDTH=263>
168-
16976   
17077
171-</TD>
172-
173-<TD COLSPAN=4 WIDTH=372>
174-
175-</TD>
176-
177-</TR>
178-
179-<TR VALIGN=TOP>
180-
181-<TD WIDTH=263>
182-
183-<U>Ubuntu 32 bit / Lazarus 32 bit</U>
184-
185-</TD>
186-
187-<TD COLSPAN=4 WIDTH=372>
188-
189-</TD>
190-
191-</TR>
192-
193-<TR VALIGN=TOP>
194-
195-<TD WIDTH=263>
78+Ubuntu 32 bit / Lazarus 32 bit
19679
19780Applicazione vuota
19881
199-</TD>
200-
201-<TD WIDTH=14>
202-
20382   
20483
205-</TD>
206-
207-<TD WIDTH=111>
208-
2098419,6  Mb
21085
211-</TD>
212-
213-<TD WIDTH=14>
214-
21586   
21687
217-</TD>
218-
219-<TD WIDTH=220>
220-
221885,7 Mb
22289
223-</TD>
224-
225-</TR>
226-
227-<TR VALIGN=TOP>
228-
229-<TD WIDTH=263>
230-
23190Compilatore ottimizzato
23291
233-</TD>
234-
235-<TD WIDTH=14>
236-
23792   
23893
239-</TD>
240-
241-<TD WIDTH=111>
242-
243942,9 Mb
24495
245-</TD>
246-
247-<TD WIDTH=14>
248-
24996   
25097
251-</TD>
252-
253-<TD WIDTH=220>
254-
255981,6 Mb
25699
257-</TD>
258-
259-</TR>
260-
261-<TR VALIGN=TOP>
262-
263-<TD WIDTH=263>
264-
265100   
266101
267-</TD>
268-
269-<TD COLSPAN=4 WIDTH=372>
270-
271-</TD>
272-
273-</TR>
274-
275-<TR VALIGN=TOP>
276-
277-<TD WIDTH=263>
278-
279-<U>Windows XP 32 bit / Lazarus 32 bit</U>
280-
281-</TD>
282-
283-<TD COLSPAN=4 WIDTH=372>
284-
285-</TD>
286-
287-</TR>
288-
289-<TR VALIGN=TOP>
290-
291-<TD WIDTH=263>
102+Windows XP 32 bit / Lazarus 32 bit
292103
293104Applicazione vuota
294105
295-</TD>
296-
297-<TD WIDTH=14>
298-
299106   
300107
301-</TD>
302-
303-<TD WIDTH=111>
304-
30510811,8 Mb
306109
307-</TD>
308-
309-<TD WIDTH=14>
310-
311110   
312111
313-</TD>
314-
315-<TD WIDTH=220>
316-
3171122,14 Mb
318113
319-</TD>
320-
321-</TR>
322-
323-<TR VALIGN=TOP>
324-
325-<TD WIDTH=263>
326-
327114Compilatore ottimizzato
328115
329-</TD>
330-
331-<TD WIDTH=14>
332-
333116   
334117
335-</TD>
336-
337-<TD WIDTH=111>
338-
3391181,62 Mb
340119
341-</TD>
342-
343-<TD WIDTH=14>
344-
345120   
346121
347-</TD>
348-
349-<TD WIDTH=220>
350-
3511221,50 Mb
352123
353-</TD>
354-
355-</TR>
356-
357-<TR VALIGN=TOP>
358-
359-<TD WIDTH=263>
360-
361124   
362125
363-</TD>
364-
365-<TD COLSPAN=4 WIDTH=372>
366-
367-</TD>
368-
369-</TR>
370-
371-<TR VALIGN=TOP>
372-
373-<TD WIDTH=263>
374-
375-<U>Windows Seven 64 bit / Lazarus 64 bit</U>
376-
377-</TD>
378-
379-<TD COLSPAN=4 WIDTH=372>
380-
381-</TD>
382-
383-</TR>
384-
385-<TR VALIGN=TOP>
386-
387-<TD WIDTH=263>
126+Windows Seven 64 bit / Lazarus 64 bit
388127
389128Applicazione vuota
390129
391-</TD>
392-
393-<TD WIDTH=14>
394-
395130   
396131
397-</TD>
398-
399-<TD WIDTH=111>
400-
40113212,3  Mb
402133
403-</TD>
404-
405-<TD WIDTH=14>
406-
407134   
408135
409-</TD>
410-
411-<TD WIDTH=220>
412-
4131363,20 Mb
414137
415-</TD>
416-
417-</TR>
418-
419-<TR VALIGN=TOP>
420-
421-<TD WIDTH=263>
422-
423138Compilatore ottimizzato
424139
425-</TD>
426-
427-<TD WIDTH=14>
428-
429140   
430141
431-</TD>
432-
433-<TD WIDTH=111>
434-
4351422,14 Mb
436143
437-</TD>
438-
439-<TD WIDTH=14>
440-
441144   
442145
443-</TD>
444-
445-<TD WIDTH=220>
446-
4471462,16 Mb
448147
449-</TD>
450-
451-</TR>
452-
453-</TABLE>
454-
455148### 'Fatal: Circular unit reference between a and b'
456149
457150Una cosa che capita spesso a un nuovo utente quando crea due unit che fanno riferimento ognuna alle proprietà dell'altra. L'errore di cui sopra avviene quando si mette la clausola uses nella sezione interface, mentre va invece messa nella sezione implementation. Esempio:
458151
459-Questo codice causerà l'errore: <code>
152+Questo codice causerà l'errore:
460153
461154` unit a;`\
462155` `\
463156` interface`\
464157` `\
465158` uses b;`\
466159` `\
467160` implementation`\
468161` `\
469162` end.`\
470163` ...`\
471164` unit b;`\
472165` `\
473166` interface`\
474167` `\
475168` uses a;`\
476169` `\
477170` implementation`\
478171` `\
479172` end.`
480173
481-</code>
482-
483174Questo invece no:
484175
485-<code>
486-
487176` unit a;`\
488177` `\
489178` interface`\
490179` `\
491180` implementation`\
492181` `\
493182` uses b;`\
494183` `\
495184` end.`\
496185` ...`\
497186` unit b;`\
498187` `\
499188` interface`\
500189` `\
501190` implementation`\
502191` `\
503192` uses a;`\
504193` `\
505194` end.`
506195
507-</code>
508-
509196### Perché il linking è così lento sotto Windows?
510197
511198Questo problema è stato risolto in FPC 2.2 e Lazarus 0.9.24: per favore aggiornate la vostra versione di Lazarus. Per le versioni più vecchie, leggete il seguito.
512199
513200In generale, la compilazione sotto Windows è penalizzata a causa del linker GNU, che è molto più lento su questa piattaforma. Questo problema affligge solo Windows, ed è davvero grave solo su macchine relativamente anziane (CPU clock minore di 1 GHz) o con poca RAM (128MB o meno). Ugualmente, se usate lo smartlink per la LCL il linking sarà molto più lento. Potete leggere i dettagli qui: [[File size and smartlinking]].
514201
515202E' stato sviluppato (ed è pronto) un linker interno parecchio più veloce, ma sarà disponibile solo con il rilascio di Free Pascal 2.2. Se non potete aspettare, è disponibile via subversion.
516203
517204**Nota**: Nella versione 2.1.1 Windows usa un linker interno per win32/64/ce che accelera un pò il linking; una riompilazione di Lazarus richiederebbe circa 280MB.
518205
519206### Mi serve ppc386.cfg oppure fpc.cfg?
520207
521208Vi serve solo fpc.cfg. In questo file sono contenute le informazioni necessarie al compilatore per trovare le librerie.
522209
523210### Come compilo Lazarus?
524211
525212Così:
526213
527214`$ cd lazarus`\
528215`$ make clean all`
529216
530217### Come faccio la build di altri progetti basati sulla LCL?
531218
532219Se non puotete usare la IDE per fare la vostra build allora usate lazbuild, che è una versione a linea di comando della IDE appositamente pensata per fare build di di progetti e package Lazarus. Se invece volete fare le build dei vostri progetti senza IDE e senza lazbuild, allora aggiungete queste righe in fondo al vostro file *fpc.cfg*
533220
534221`  # path del vostro sistema di build (per Linux)`\
535222`  -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/{VostroSistemaDiBuild}`
536223
537224`  # path del vostro sistema di build (per Windows)`\
538225` -Fu/{DirectoryDelVostroLazarus}/components/units/{VostroSistemaDiBuild}`
539226
540227
541228{VostroSistemaDiBuild} può essere *gtk2*, *gnome*, *qt* o *win32* e lanciare:
542229
543230
544231ppc386 your.project.pp
545232
546233**consiglio:** non dimenticate di installare il package di sviluppo per il vostro sistema di build, altrimenti potreste ricevere un errore del tipo: [[Linker message: cannot find -l]].
547234
548235### Quale versione di FPC è necessaria?
549236
550237Lazarus 0.9.28 richiede almeno FPC 2.4.
551238
552239### Non riesco a compilare Lazarus
553240
5542411. Accertatevi che la versione del compilatore sia quella giusta
5552422. Accertatevi che le librerie (fpc) siano della stessa versione del compilatore
5562433. Accertatevi che il path di installazione del compilatore NON contenga spazi!
5572444. Accertatevi di avere il file fpc.cfg e non il vecchio ppc386.cfg
5582455. Consultate le FAQ dipendenti dal sistema operativo su cui lavorate
559246
560247### Quando cerco di compilare un progetto, ottengo un errore
561248
562249#### "Cannot find Unit interfaces". Come lo risolvo?
563250
564251Significa che il compilatore non trova il file 'interfaces.ppu' **oppure** lo trova, ma è errato o troppo vecchio.
565252
566253Questa unit si può trovare in {LazarusDir}\lcl\units\\{TargetCPU}-{TargetOS}\\{LCLWidgetSet}\interfaces.ppu. Per esempio: /home/username/lazarus/lcl/units/i386-linux/gtk/interfaces.ppu.
567254
568255Assicuratevi che stia lì e solamente lì; se avete diverse versioni di 'interfaces.ppu' in luoghi diversi, è probabile che la vostra configurazione sia sbagliata (per esempio perché avete aggiunto una directory lcl a un path di ricerca). Cancellate tutte le copie di 'interfaces.ppu' tranne quella nella directory indicata sopra.
569256
570257Nota: se avete selezionato un set di widget diverso da quello di default per fare la build di Lazarus, dovete anche ricompilare la LCL con quello stesso set di widget.
571258
572259Se il file sta dove deve stare ma ottenete lo stesso questo errore, significa che state usando, per compilare il vostro progetto, un compilatore/rtl diverso da quello che avevate usato per compilarvi l'IDE di Lazarus. In questo caso dovrete fare una di queste due cose:
573260
574261- Ricompilare la LCL (o di tutto Lazarus) con il compilatore che avete selezionato nelle Opzioni di Ambiente. Potete farlo andando nel menu Tools -\> Build Lazarus. Prima di fare questo, però, verificate le impostazioni in Tools -\> Configure Build Lazarus.
575262- Cambiare il compilatore nelle Opzioni di Ambiente con quello che avete usato per compilare Lazarus. Nelle Opzioni di Ambiente dovrete anche verificare attentamente che il path per le directory di Lazarus e dei sorgenti FPC siano quelli giusti; controllate pure che esista una e una sola versione del file fpc.cfg - dovrebbe trovarsi in /etc/ per sistemi Linux/Unix o nella stessa directory del compilatore per sistemi Windows. Provate a dare il comando "fpc -vt fasullo" per vedere quale versione di fpc.cfg è usata nel vostro sistema; copie vaganti di questo file possono restare in giro dopo l'aggiornamento a una versione superiore del compilatore, nella vostra directory home o in quella del compilatore stesso. CANCELLATELE SPIETATAMENTE.
576263- Potete anche provare a cambiare il set di widget selezionato per il vostro progetto; per esempio, il progetto di esempio "objectinspector" fornito con Lazarus è impostato di default per usare le gtk. Provate a compilare questo progetto così com'è e sulle piattaforma Windows otterrete sicuramente l'errore "Can't find unit interfaces". Andate in Project \| Compiler Options... \| LCL Widget Type (various) e cambiatelo in default(win32) e l'errore sparirà.
577264
578265### Quando cerco di compilare progetti Delphi sotto Lazarus, ottengo un messaggio di errore
579266
580267#### alla riga :{\$R *.DFM} Come risolvo il problema?
581268
582269Lazarus (o meglio Linux) non sa nulla di risorse, per cui non potete usarle nel modo in cui lo facevate in Delphi sotto win32. Comunque Lazarus usa un sistema abbastanza compatibile con quello. Potete ancora usare i vostri layout Delphi (i file .dfm), a patto di fare quanto segue:
583270
584-- Vi serve una versione testuale dei file .dfm in vostro possesso. Delphi 5 e successori li fanno testuali già di default; se i vostri dfm sono più vecchi, <span class="kbd">Alt</span>+<span class="kbd">F12</span> per vedere il layout come testo e fate copia/incolla. Quando avete un .dfm in formato testo, copiatelo e rinominatelo con l'estensione .lfm
271+- Vi serve una versione testuale dei file .dfm in vostro possesso. Delphi 5 e successori li fanno testuali già di default; se i vostri dfm sono più vecchi, `Alt`+`F12` per vedere il layout come testo e fate copia/incolla. Quando avete un .dfm in formato testo, copiatelo e rinominatelo con l'estensione .lfm
585272- Create un file con lazres (in lazarus/tools): lazres vostroform.lrs vostroform.lfm
586273- Aggiungete la seguente sezione di inizializzazione al file lfm
587274
588275`     initialization`\
589276`     {$I yourform.lrs}`
590277
591278Ricordatevi che non tutte le proprietà nei .dfm sono ancora supportate da lazarus, per cui potreste causare dei crash.
592279
593280Nota: dalla versione 2.4.0 di FPC in poi, le risorse in formato Delphi sono supportate, così non avrete bisogno di cambiare nulla. Perfino Lazarus svn le usa già come default nei suoi progetti. Tuttavia è sempre consigliabile usare il convertitore di risorse di Lazarus, perché potrebbero esserci comunque dei tipi di risorse non ancora pienamente supportati.
594281
595282#### 'Identifier not found LazarusResources'.
596283
597284Quando crea un form, Lazarus aggiunge automaticamente alcune unit aggiuntive alla sezione uses della unit del vostro form: durante la conversione di una unit Delphi in una Lazarus questo non succede, per cui dovrete aggiungere a mano LResources alla sezione Uses della vostra Form unit.
598285
599286### Quando accedo a eventi oppure oggetti come l'evento onclick di un button, ottengo il seguente errore: ERROR unit not found: stdCtrls
600287
601288Andate nel Project inspector (Project -\> Project Inspector) e verificate che il vostro progetto dipenda dal package 'LCL' e che avete installati i sorgenti di FPC.
602289
603290Lazarus fornisce solo la IDE e la libreria di componenti visuali LCL; tutto il resto, come l'I/O, il supporto ai database, la FCL e la RTL è fornito dal compilatore FPC. Quindi l'IDE di Lazarus deve conoscere i path di tutti i sorgenti di FPC.
604291
605292Il path di FPC si imposta in Environment -\> Environment Options -\> Files -\> FPC source directory
606293
607294### Come faccio a incorporare un piccolo file nell'eseguibile in modo da non dover usare file separati? Come incorporo una risorsa?
608295
609296Per esempio:
610297
611298`/path/del/vostro/lazarus/tools/lazres sound.lrs sound1.wav sound2.wav ...`
612299
613300creerà il file sound.lrs dai file sound1.wav and sound2.wav.
614301
615302Poi lo dovrete includere *dopo* il file lrs del form:
616303
617304`...`\
618305`initialization`\
619306`{$i unit1.lrs} // questo è il file di risorse del form (deve venire per primo).`\
620307`{$i sound.lrs} // file di risorse definito dall'utente.`\
621-\
308+
622309`end.`
623310
624311Nel vostro programma dovrete poi usare tali risorse così:
625312
626313`Sound1AsString:=LazarusResources.Find('sound1').Value;`
627314
628315### Che significano le varie estensioni di file usate da Lazarus?
629316
630317[[Lazarus Tutorial|Lazarus Tutorial#The Lazarus files]] spiega il significato di alcune estensioni con degli esempi pratici. Ecco una breve lista:
631318
632319`*.lpi`
633320Lazarus Project Information file (in formato XML; contiene impostazioni specifiche del progetto)
634321
635322`*.lpr`
636323Lazarus Program file; contiene il sorgente Pascal del programma principale
637324
638325`*.lfm`
639326Lazarus Form file; contiene informazioni di configurazione per tutti gli oggetti contenuti in un form (immagazzinati in un formato testuale specifico di Lazarus; le azioni sono descritte da codice sorgente Pascal in un corrispondente file `*.pas`)
640327
641328`*.pas` o `*.pp`
642329Unit con codice Pascal (di solito per un form memorizzato in un corrispondente file `*.lfm`)
643330
644331`*.lrs`
645332Lazarus Resource file (questo è un file generato; non deve essere confuso con un file resource di Windows).
646333
647334Questo file può essere creato con il tool lazres )nella directory Lazarus/Tools) usando la linea di comando: lazres myfile.lrs myfile.lfm
648335
649336`*.ppu`
650337Unit compilata
651338
652339`*.lpk`
653340Lazarus package information file. (in formato XML; contiene impostazioni specifiche per il package)
654341
655342## Quando scrivo *var mytext: text;* per dichiarare un file di testo, ottengo "Unit1.pas(32,15) Error: Error in type definition". Cosa devo fare?
656343
657344=
658345
659346La classe TControl ha una proprietà [[doc:lcl/controls/tcontrol.text.html|Text]]; nel metodo di un form, che ha visibilità maggiore, questa collide con il tipo [[doc:rtl/system/text.html|Text]] della unit 'system'. Invece di Text, dovreste usare il tipo [[doc:rtl/system/textfile.html|TextFile]], che è un semplice alias per il tipo Text, oppure includere l'unità nella definizione del tipo:
660347
661348`var`\
662349`  MyTextFile: TextFile;`\
663350`  MyText: System.Text;`
664351
665352Un altro conflitto di nomi analogo esiste nell'assegnazione e nella chiusura di un file di testo, fra i metodi 'assign' e '[[doc:lcl/forms/tcustomform.close.html|Close]]' di TForm; dovete o usare [[doc:rtl/objpas/assignfile.html|AssignFile]] e [[doc:rtl/objpas/closefile.html|CloseFile]] oppure aggiungere il nome della unit *System* nella dichiarazione.
666353
667354### Ho un errore quando uso Printer.BeginDoc
668355
669356Dovete aggiungere l'unità Printers alla sezione uses. Il package Printer4Lazarus deve anche essere aggiunto ai requisiti del vostro progetto nella IDE, il che si fa andando in Project\|Project Inspector\|Add\|New Requirement\|Package Name. Se il package Printer4Lazarus non compare nella lista della dropdown box deve essere installato; esso è parte della installazione Lazarus e si trova in \[lazarus installed directory\]\components\printers
670357
671358Se usate le normali directory di default \[lazarus installed directory\] vale:
672359
673360- Windows: c:\lazarus
674361- Linux: /usr/lib/lazarus
675362
676363La stessa soluzione si applica all'eccezione che potreste ottenere referenziando Printer.Printers
677364
678365### Perché TForm.ClientWidth/ClientHeight e TForm.Width/Height sono uguali?
679366
680367TForm.Width/Height non comprende il bordo, perché non esiste un modo di ottenere lo spessore del bordo su tutte le piattaforme supportate. In mancanza di un sistema affidabile per ottenere questo dato, la LCL muoverebbe e ridimensionerebbe i form a schermo all'infinito. Se in futuro esisterà il modo di ricavare dimensione e posizione di una finestra compresi i suoi bordi su tutte le piattaforme supportate, questo comportamnto verrà cambiato, aggiungendo un numero di versione e/o dei metodi extra per mantenere la compatibilità.
681368
682369## Debugger
683370
684371` Vedere `[[GDB Debugger Tips]]
685372
686373### Come vedo l'output del debug?
687374
688375La LCL ha due procedure nella unit LCLProc per scrivere output di debug. Si chiamano:
689376
690377- **DebugLn:** che funziona come la WriteLn, ma accetta solo stringhe.
691378- **DbgOut:** che funziona come la Write, ma accetta solo stringhe.
692379
693380In circostanze normali l'output viene scritto sullo stdout, ma se questo è chiuso (per esempio se l'applicazione è {\$AppType Gui} o compilata con -WG sotto Windows) nessun output viene scritto. L'output può anche essere scritto su file. Il codice di inizializzazione della unit LCLproc cerca '--debug-log=\<file\>' fra i parametri della riga di comando di Lazarus: se lo trova, tutti i successivi output di debug verranno verranno scritti su \<file\>.
694381
695382Se non c'è '--debug-log' sulla riga di comando, il successivo test è vedere se esiste una variabile d'ambiente xxx_debuglog, dove xxx è il nome del file del programma, senza l'estensione.
696383
697384---
698385*From the Free Pascal wiki, page "Lazarus Faq/it", as it stood on 2015-06-06 after a change by FTurtle, 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).*
699386Category: FAQs/it
700387Category: Italiano
701388Category: Lazarus/it

Back to history