Sign in Join
Wiki copytemporary

Lazarus Faq/fr: what changed

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

OldNewLine
11Cette FAQ est copié de la FAQ du site www.freepascal.org, car il est plus facile maintenir et prolonger ce document wiki.
22
33## Général
44
55### Où puis-je trouver plus de FAQ ?
66
77Voir le [site Web officiel](http://www.lazarus.freepascal.org). Il y a une autre FAQ aussi sur ce site.
88
99### Qu'est-ce que Lazarus ?
1010
1111Lazarus est environnement de développement intégré (EDI) multiplateforme qui permet de créer des programmes en Pascal Objet, visuels ou non. Il utilise le compilateur Free Pascal pour créer les exécutables. Son but est *d'écrire et de compiler partout* : vous devriez pouvoir recompiler votre programme source avec un Lazarus tournant sur un système d'exploitation supporté(ou avec un compilateur croisé) et obtenir un programme qui s'exécute sur ce système d'exploitation.
1212
1313Pour de plus amples informations, voir le survol de Free Pascal et Lazarus.
1414
1515### Pourquoi les fichiers binaires produits sont-ils si volumineux ?
1616
1717Les fichiers binaires sont volumineux parce qu'ils contiennent beaucoup d'informations de débogage nécessaires à l'utilisation de gdb (GNU Debugger).
1818
1919Le compilateur a une option pour enlever l'information de débogage de l'exécutable (-Xs). En raison d'un bogue dans le compilateur (version 2.0.2 et antérieures), ceci ne fonctionnait pas correctement. Ce problème a été corrigé dans la version de développement du compilateur.
2020
2121Vous pouvez utiliser un programme nommé "strip" pour enlever les symboles de débogage du fichier exécutable. Il est situé sous le répertoire de Lazarus lazarus\pp\bin\i386-win32\\.
2222
2323Tapez simplement "strip --strip-all \<votre fichier exécutable avec le chemin \>" sur la ligne de commande.
2424
2525Si vous voulez rendre votre programme encore plus petit, vous devriez essayer [UPX](http://upx.sourceforge.net/) aussi. UPX est un très bon compresseur d'exécutables. Il n'aboutit pas à une surconsommation liée à la décompression sur place. Il bénéficie également d'une décompression très rapide (~10 MB/sec sur un Pentium 133).
2626
2727Pour employer UPX, tapez simplement "upx \<votre fichier exécutable avec le chemin\>" sur la ligne de commande.
2828
2929Après avoir employé à la fois strip et upx, un simple GUI programmé avec Lazarus donne :
3030
3131- ~ 700kb sur Linux
3232- ~ 420kb sur Windows
3333
3434Une réponse plus détaillée avec les inconvénients d'utiliser UPX est donnée sur [[Size Matters/fr|Considérations de taille]].
3535
3636Il est également important de noter que le logiciel "bonjour le monde" de Lazarus inclut déjà une quantité énorme de fonctionnalisés :
3737
3838- Une librairie de traitement XML ;
3939- Une librairie de traitement d'images pour les fichiers png, xpm, bmp et ico ;
4040- Presque tous les composants graphiques de la bibliothèque de composants de Lazarus(LCL) ;
4141- Toutes les Bibliothèques Runtime de Free Pascal ;
4242- Les infos RTTI.
4343
4444Par conséquent, la taille de l'exécutable Lazarus commence grand, mais se développe très lentement en raison du compilateur Free Pascal et de la façon dont les fiches Lazarus opèrent. Un projet C++ (juste un exemple, mais cette remarque s'applique à d'autres langages/outils) commence très petit avec un programme élémentaire comme 'bonjour le monde', mais se développe exponentiellement quand vous avez besoin de fonctionnalités pour écrire une application non triviale.
4545
46-<figure>
47-<img src="Lazarus_vs_cpp.png" title="Lazarus_vs_cpp.png" />
48-<figcaption>Lazarus_vs_cpp.png</figcaption>
49-</figure>
46+![](/wiki-images/d/de/Lazarus_vs_cpp.png)
5047
5148**Guide rapide pour réduire la taille des exécutables Lazarus/FPC**
5249
5350- 1\. Project\|Compiler Options\|Code\|Smart Linkable (-CX) -\> Coché
5451- 2\. Project\|Compiler Options\|Linking\|Debugging\| Décocher tout sauf Strip Symbols From Executable (-Xs)
5552- 3\. Project\|Compiler Options\|Linking\|Link Style\|Link Smart (-XX) -\> Coché
5653
5754> **Note:** faites cela si vous ne voulez pas déboguer
5855
5956### Ai-je besoin de ppc386.cfg ou de fpc.cfg ?
6057
6158Vous avez seulement besoin de fpc.cfg. De cette façon, le compilateur saura où trouver les bibliothèques.
6259
6360### Comment compiler Lazarus ?
6461
6562Tapez quelque chose comme ceci :
6663
6764`$ cd lazarus`\
6865`$ make clean all`
6966
7067Si vous voulez construire Lazarus avec un autre ensemble graphique (par exemple Qt supporté par Linux, Windows et OSX), il vous faut utiliser l'argument PLATFORM :
7168
7269`$ cd lazarus`\
7370`$ make clean all LCL_PLATFORM=qt`
7471
7572### Comment construire d'autres projets fondés sur la LCL ?
7673
7774Si vous ne pouvez pas employer l'EDI pour construire vos applications, utilisez lazbuild. Il s'agit d'une version en ligne de commande de l'EDI pour construire des projets et des paquets Lazarus. Si vous voulez construire des applications LCL sans l'EDI et sans lazbuild, ajoutez les lignes suivantes à la fin de votre *fpc.cfg*
7875
7976`  # searchpath for other toolkits (Linux)`\
8077`  -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/{YourToolKit}`
8178
8279`  # searchpath for other toolkits (Windows)`\
8380` -Fu/{YourLazarusDirectory}/components/lazutils/lib/{platform}`\
8481` -Fu/{YourLazarusDirectory}/lcl/units/{platform}`\
8582` -Fu/{YourLazarusDirectory}/lcl/units/{platform}/{YourToolKit}`
8683
87-</pre>
88-
8984Où {YourToolKit} peut être *gtk2*, *gnome*, *qt* ou *win32*.
9085
9186Exécutez alors :
9287
9388` ppc386 your.project.pp`
9489
9590**Conseil :** Ne pas oublier d'installer les paquets de développement pour votre trousse à outils, sinon vous pourriez recevoir un message comme : [[Linker message: cannot find -l/fr|Linker message: cannot find -l]].
9691
9792### Quelle version de FPC est exigée ?
9893
9994- Lazarus 1.0.8 nécessite au moins FPC 2.6.2.
10095- Lazarus 1.0 nécessite au moins FPC 2.6.0.
10196- Lazarus 1.2.0 nécessite au moins FPC 2.6.2.
10297- Lazarus 1.2.4, 1.2.6 et 1.4 nécessitent au moins FPC 2.6.4 (dernières versions à ce jour).
10398
10499### Je ne peux pas compiler Lazarus
105100
1061011. Vérifiez si le compilateur a la version correcte.
1071022. Vérifiez si les bibliothèques (fpc) sont de la même version.
1081033. Vérifiez si le chemin d'installation du compilateur contient des espaces. S'assurer qu'il n'y en a pas !
1091044. Vérifiez si vous avez un fichier fpc.cfg et pas un fichier obsolète ppc386.cfg.
1101055. Vérifiez également les FAQs sur la dépendance par rapport aux systèmes d'exploitation.
1111066. Si vous êtes encore en galère, demandez sur le forum ou dans la mailing list.
112107
113108### Comment embarquer un petit fichier dans un exécutable sans traîner un fichier séparé ? Comment embarquer une ressource ?
114109
115110Les ressources Lazarus et les ressources de type Windows/FPC sont supportées.
116111
117112Par exemple :
118113
119114`/your/lazarus/path/tools/lazres sound.lrs sound1.wav sound2.wav ...`
120115
121116va créer sound.lrs à partir de sound1.wav et de sound2.wav.
122117
123118Incluez-le alors *après* le fichier lrs de la fiche:
124119
125120`...`\
126121`initialization`\
127122`{$i unit1.lrs} // ceci est le fichier ressource principal (en premier)`\
128123`{$i sound.lrs} // fichier ressource défini par l'utilisateur`\
129-\
124+
130125`end.`
131126
132127Dans votre programme, vous pouvez alors utiliser :
133128
134129`Sound1AsString := LazarusResources.Find('sound1').Value;`
135130
136131Voir [[Lazarus Resources/fr|Lazarus Resources]].
137132
138133### Que signifient les nombreuses extensions de fichier employées par Lazarus ?
139134
140135La section [[Lazarus Tutorial/fr|Lazarus Tutorial/fr#Les fichiers de Lazarus]] explique quelques extensions par un exemple. En voici une courte liste :
141136
142-<table>
143137<thead>
144-<tr>
145-<th>Extension</th>
146-<th>Type de fichier</th>
147-<th>Description</th>
148-</tr>
138+
149139</thead>
150140<tbody>
151-<tr>
152-<td><code>.lpi</code></td>
153-<td>Information de projet Lazarus</td>
154-<td>Contient des réglages spécifiques au projet comme les réglages du compilateur et les paquets nécessaires. Enregistré en XML.</td>
155-</tr>
156-<tr>
157-<td><code>.lps</code></td>
158-<td>Session de programme Lazarus</td>
159-<td>Données personnelles comme la position du curseur, les fichiers dans l'éditeur de sources, modes personnels de construction. Enregistré en XML.</td>
160-</tr>
161-<tr>
162-<td><code>.lpr</code></td>
163-<td>Programme Lazarus</td>
164-<td>Source Pascal du programme principal.</td>
165-</tr>
166-<tr>
167-<td><code>.lfm</code></td>
168-<td>Fiche Lazarus</td>
169-<td>Informations d'initialisation sur tous les objets disposés sur les fiches et les modules des données (enregistré dans un format textuel spécifique à Lazarus, similaire au fichier <code>*.dfm</code> de Delphi. Les actions sont décrites dans un fichier source Pascal, dans un fichier <code>*.pas</code> correspondant).</td>
170-</tr>
171-<tr>
172-<td><code>.pas</code><br />
141+
173142<code>.pp</code><br />
174143<code>.p</code></td>
175-<td>Code Pascal</td>
176-<td>Code Pascal qui peut être associé à un fichier <code>*.lfm</code> (s'il décrit les actions d'une fiche/d'un module de données).</td>
177-</tr>
178-<tr>
179-<td><code>.lrs</code></td>
180-<td>Ressource Lazarus</td>
181-<td>Fichier de ressources généré par Lazarus. A ne pas confondre avec un fichier de ressources Windows. Ce fichier peut être créé avec l'outil lazres (dans le répertoire Lazarus/Tools) en utilisant la ligne de commande : <code>lazres myfile.lrs myfile.lfm</code>.</td>
182-</tr>
183-<tr>
184-<td><code>.ppu</code></td>
185-<td>Unité compilée</td>
186-<td>Code source compilé créé par le compilateur FPC pour chaque unité/programme.</td>
187-</tr>
188-<tr>
189-<td><code>.o</code></td>
190-<td>Fichier objet</td>
191-<td>Créé par le compilateur. Tout fichier <code>.ppu</code> a un fichier correspondant <code>.o</code>, nécessaire au lieur.</td>
192-</tr>
193-<tr>
194-<td><code>.lpk</code></td>
195-<td>Information de paquet Lazarus</td>
196-<td>Réglages spécifiques au paquet, comme les options de compilation et les paquets requis. Enregistré en XML.</td>
197-</tr>
198-<tr>
199-<td><code>.lrt</code></td>
200-<td>Table de ressources Lazarus</td>
201-<td>Table de chaînes de ressources Lazarus créée à l'enregistrement d'une fiche <code>lfm</code> quand l'i18n (internationalisation) est activée. Il contient les propriétés TTranslateString du fichier <code>lfm</code>. Ne pas les modifier manuellement : ils seront écrasés.</td>
202-</tr>
203-<tr>
204-<td><code>.rst</code></td>
205-<td>Table de chaînes de ressources</td>
206-<td>La table de chaînes de ressources créée par le compilateur pour chaque unité avec une section <code>resourcestring</code>. Ne pas éditer ce fichier qui sera écrasé au prochain enregistrement.</td>
207-</tr>
208-<tr>
209-<td><code>.po</code></td>
210-<td>Messages GNU gettext</td>
211-<td>Quand l'[[i18n]] est activée, l'EDI crée/met à jour les fichiers <code>.po</code> avec les chaînes de ressources dans les fichiers <code>.rst</code> et <code>.lrt</code>.</td>
212-</tr>
144+
213145</tbody>
214-</table>
215146
216147### Pourquoi les propriétés TForm.ClientWidth/ClientHeight sont-elles les mêmes que TForm.Width/Height ?
217148
218149Les TForm.Width/Height n'incluent pas le cadre, car il n'y a pas de manière fiable de récupérer la taille du cadre sur toutes les plates-formes. Sans moyen fiable, la LCL déplacerait les fiches sur l'écran ou les redimensionnerait sans fin.
219150
220151Il se peut que ceci soit changé quand il y aura un moyen fiable pour obtenir la taille et la position d'une fenêtre avec son cadre sur toutes les plates-formes. Pour conserver la compatibilité avec les anciennes versions de LCL, un numéro de version et des méthodes supplémentaires seraient alors ajoutés.
221152
222153## Erreurs
223154
224155### Référence circulaire des unités a et b
225156
226157Un problème courant est rencontré par le nouveau programmeur quand il veut créer deux fiches qui font référence chacune aux propriétés de l'autre. L'erreur survient uniquement dans les clauses `uses` de la section `interface` ; pas de problème en revanche dans la section `implementation`.
227158
228159Exemples :
229160
230161Celui-ci provoque une erreur :
231162
232163``` pascal
233164unit a;
234165
235166interface
236167
237168uses b;
238169
239170implementation
240171
241172end.
242173```
243174
244175``` pascal
245176unit b;
246177
247178interface
248179
249180uses a;
250181
251182implementation
252183
253184end.
254185```
255186
256187Contrairement à celui-ci :
257188
258189``` pascal
259190unit a;
260191
261192interface
262193
263194implementation
264195
265196uses b;
266197
267198end.
268199```
269200
270201``` pascal
271202unit b;
272203
273204interface
274205
275206implementation
276207
277208uses a;
278209
279210end.
280211```
281212
282213Attention : il faut par conséquent s'assurer que les dépendances ne se trouvent que dans les sections `implementation`.
283214
284215### Lorsque je tape *var mytext: text;* pour déclarer un fichier texte, j'obtiens "Unit1.pas(32,15) Error: Error in type definition". Comment puis-je corriger cela ?
285216
286217La classe TControl possède une propriété [[doc:lcl/controls/tcontrol.text.html|Text]]. Dans une méthode de fiche, qui a une visibilité supérieure, il y a conflit avec le type [[doc:rtl/system/text.html|Text]] de l'unité *System*. Vous pouvez utiliser le type [[doc:rtl/system/textfile.html|TextFile]], qui est simplement un alias pour le type Text ou vous pouvez ajouter l'unité à la définition du type.
287218
288219`var`\
289220`  MyTextFile: TextFile;`\
290221`  MyText: System.Text;`
291222
292223Un problème de collision de nom similaire existe avec l'assignation et la fermeture d'un fichier texte. TForm possède des méthodes *Assign* et [[doc:lcl/forms/tcustomform.close.html|Close]]. Vous pouvez utiliser [[doc:rtl/objpas/assignfile.html|AssignFile]] et [[doc:rtl/objpas/closefile.html|CloseFile]] ou ajouter le nom de l'unité *System*.
293224
294225### J'obtiens une erreur lorsque j'utilise Printer.BeginDoc.
295226
296227L'unité *Printers* doit être ajoutée à la section uses.
297228
298229Le paquet *Printer4Lazarus* doit être ajouté au pré-requis de votre projet dans l'IDE sous : Project\|Project Inspector\|Add\|New Requirement\|Package Name
299230
300231Si le paquet *Printer4Lazarus* package n'est pas dans la liste lorsque vous ouvrez la boîte de liste, il doit être installé. Le paquet fait partie de l'installation de Lazarus et peut être trouvé dans : \[lazarus installed directory\]\components\printers
301232
302233Si vous utilisez les dossiers d'installation, par défaut \[lazarus installed directory\] est:
303234
304235- Windows: c:\lazarus
305236- Linux: /usr/lib/lazarus
306237
307238### Quand j'essaie de compiler un projet, j'obtiens un message d'erreur "Cannot find Unit ..."
308239
309240Veuillez vous reporter à l'[[Unit not found - How to find units/fr|unité non trouvée - Comment trouver les unités]]
310241
311242Pour de l'information sur l'erreur "Cannot find unit interfaces", voir la prochaine section.
312243
313244### "Cannot find Unit interfaces". Comment puis-je résoudre ce problème ?
314245
315246Cette erreur signifie que le compilateur ne peut pas trouver le fichier 'interfaces.ppu' ou que le fichier est trouvé mais qu'il est mauvais ou obsolète (la date du fichier .ppu est plus ancienne que la date du compilateur lui-même). Vérifier les options du compilateur peut aider à résoudre ce problème, en passant par : Options du compilateur... Utilisez alors le bouton *Test* en bas de la fenêtre. Ce test vérifiera aussi que les variables {TargetCPU} et {TargetOS} sont définies correctement.
316247
317248L'unité en cause compilée peut être trouvée dans le répertoire {LazarusDir}\lcl\units\\{TargetCPU}-{TargetOS}\\{LCLWidgetSet}\interfaces.ppu. Il est normal d'avoir de multiples versions de *interfaces.ppu* pour permettre la compilation avec différents ensembles graphiques, mais dans des répertoires adaptés. Assurez-vous que l'unité est seulement dans le répertoire indiqué plus haut. Si vous avez des versions multiples de *interfaces.ppu*, vous avez probablement une configuration erronée (par exemple, vous avez ajouté un répertoire lcl à un chemin de recherche). Supprimez tous les *interfaces.ppu*, excepté celui dans le répertoire visé.
318249
319250Si vous choisissez un ensemble de composants graphiques différent que celui que vous avez utilisé pour construire Lazarus, vous devez reconstruire la bibliothèque LCL pour cet ensemble de composants graphiques.
320251
321252Si elle est là mais que vous obtenez cette erreur, vous employez un compilateur/rtl différent pour compiler votre projet de celui employé pour la compilation de votre EDI Lazarus.
322253
323254Vous pouvez essayer une des solutions suivantes :
324255
325256- Reconstruisez la bibliothèque LCL (ou Lazarus complètement) avec le compilateur choisi dans les options d'environnement. Vous pouvez faire ceci avec Outils -\> Construire Lazarus. Vérifiez en premier lieu les paramètres courants dans Outils -\> Configurer "Construire Lazarus".
326257- Changez le compilateur dans les options d'environnement vers celui utilisé pour compiler Lazarus. Regardez soigneusement dans les options d'environnement pour voir si un chemin correct est choisi pour le répertoire de Lazarus et pour celui de FPC. Vérifiez qu'il y a qu'une version du fichier de configuration du compilateur *fpc.cfg* - il devrait résider dans le répertoire /etc/ pour les systèmes Linux/Unix ou dans le même répertoire que le compilateur fpc pour les systèmes Windows. Essayez d'exécuter "fpc -vt bogus" pour vérifier quel fichier *fpc.cfg* est employé par le système. Des copies fautives s'introduisent souvent après une mise à jour du compilateur ; elles peuvent être trouvées dans le répertoire local ou dans le même répertoire que celui dans lequel a été construit le nouveau compilateur. SUPPRIMEZ CES DERNIERS !
327258- Vous pouvez également essayer de changer l'ensemble de composants graphiques actuellement choisi pour le projet. Par exemple, le projet "objectinspector" qui accompagne Lazarus est paramétré à *gtk* par défaut. Compiler ce projet va sûrement vous donner "Can't find unit interfaces" dans la plate-forme Windows. Changer le jeu de composants graphiques à default(Win32) dans [[IDE Window: Compiler Options/fr|Projet | Options du compilateur]] ... \| Type composant graphique LCL (divers) devrait corriger ce problème.
328259
329260### Quand je compile un projet qui utilise une unité LCL, j'obtiens une erreur du lieur.
330261
331262Voici un exemple d'une telle erreur :
332263
333264`` /path/to/lazarus/lcl/units/x86_64-linux/wsimglist.o: In function `REGISTERCUSTOMIMAGELIST': ``\
334265`` /path/to/lazarus/lcl//widgetset/wsimglist.pp:266: undefined reference to `WSRegisterCustomImageList' ``
335266
336267- Assurez-vous que votre projet utilise le paquet LCL. Vous pouvez vérifier cela dans l'inspecteur de projet.
337268- Assurez-vous que l'unité "Interfaces" est utilisée comme l'une des premières unités de votre programme.
338269
339270> **Note:** Ces fonctions sont implémentées comme des backend de la LCL. En ajoutant les interfaces d'unité, vous liez un backend LCL à votre programme.
340271
341272### *à la ligne :{\$R *.DFM}* - Comment puis je résoudre ce problème ?
342273
343274Lazarus (ou mieux Linux) ne sait rien des ressources, ainsi vous ne pouvez pas les employer comme vous le feriez avec Delphi/win32. Cependant Lazarus emploie une méthode assez compatible avec ce dernier. Vous pouvez par conséquent employer vos dispositions de fiche Delphi (fichiers *.dfm*) si vous suivez ces étapes :
344275
345-- Vous avez besoin d'une version textuelle des fichiers *.dfm*. Delphi5 et au-delà en produisent par défaut. Si vous avez des fichiers plus anciens : <span class="kbd">Alt</span>+<span class="kbd">F12</span> pour voir la disposition de fiche comme du texte et coller/copier.
276+- Vous avez besoin d'une version textuelle des fichiers *.dfm*. Delphi5 et au-delà en produisent par défaut. Si vous avez des fichiers plus anciens : `Alt`+`F12` pour voir la disposition de fiche comme du texte et coller/copier.
346277- Quand vous avez un texte du fichier *.dfm*, copiez-le simplement vers un fichier *.lfm*.
347278- Créez un fichier avec *lazres* (dans lazarus/tools): lazres yourform.lrs yourform.lfm
348279- Ajoutez la section suivante d'initialisation :
349280
350281`     initialization`\
351282`     {$I yourform.lrs}`
352283
353284Veuillez garder à l'esprit que toutes les propriétés dans le fichier *dfm* ne sont toujours pas supportées par Lazarus. Vous pouvez par conséquent obtenir un crash.
354285
355286Changement : depuis FPC 2.4.0, les ressources style Delphi sont supportées et vous n'avez plus besoin de changer quoi que ce soit. Même Lazarus SVN les utilise par défaut. Note : il est toujours recommandé d'utiliser le convertisseur Lazarus de projets Delphi, car il peut encore y avoir des propriétés non supportées.
356287
357288Il est aussi possible pour un projet comprenant de nombreuses fiches, toutes en *dfm* binaire, de les convertir en fichier texte grâce à l'utilitaire convert.exe livré avec Delphi (cela est valable jusqu'à Delphi 7, à vérifier pour les versions ultérieures).
358289
359290### 'Identifier not found LazarusResources'.
360291
361292En créant une fiche, Lazarus ajoute automatiquement quelques unités supplémentaires à la section *uses* de l'unité de votre fiche. Pendant la conversion d'une unité Delphi vers une unité Lazarus, cette procédure automatique ne se produit pas. Ainsi avez-vous à ajouter vous-même *LResources* à la section *uses* de l'unité de la fiche.
362293
363294### En accédant aux événements des objets (par exemple l'événement *onclick* d'un bouton), j'obtiens l'erreur suivante : ERROR unit not found: stdCtrls. Que puis-je faire ?
364295
365296Assurez-vous, dans Projet -\> Inspecteur de projet, que votre projet dépend du paquet 'LCL' et que vous avez installé les fichiers sources de FPC.
366297
367298Lazarus est l'EDI et la bibliothèque de composants visuels est LCL. Tous les autres éléments (comme les bases de données, FCL et RTL) sont fournis par FPC. L'EDI a besoin des chemins vers tous les fichiers sources pour fonctionner correctement.
368299
369300Le chemin des fichiers sources de FPC peut être paramétré via : Configuration -\> Options d'environnement... -\> Fichiers -\> Répertoire des sources de FPC
370301
371302### 'Fatal: Internal error XXXXYYZZW'
372303
373304Une erreur interne est une erreur du compilateur dont la survenue n'était pas attendue (mais il est préparé pour traquer facilement le problème en fournissant le code XXXXYYZZW). Toute erreur interne est un bogue, aussi est-il recommandé de la signaler dans le pisteur de bogues (avec un court exemple illustrant l'erreur interne).
374305
375306## Débogueur
376307
377308*Voir also [[GDB Debugger Tips]].*
378309
379310### Comment puis-je régler/configurer pour le débogage
380311
381312[[Debugger Setup|Configurer le débogueur]]
382313
383314### Comment puis-je inspecter les propriétés?
384315
385316Vous devez avoir FPC 2.4 ou plus récent.
386317
387318Si vous compilez votre application en utilisant -gw (info de debug dwarf), vous devriez être capable d'inspecter les propriétés.
388319
389320> **Note:** Cela est uniquement vrai pour les propriétés qui correspondent directement à une variable (le getter est une champ pas une fonction).
390321
391322Si votre propriété retourne la valeur d'une fonction, il est très dangereux de l'évaluer/inspecter. Ceci requiert de l'appeler, ce qui par effet de bord peut modifier aussi quelques autres variables. Ceci signifie que l'état de votre application sera altéré dans le débogueur et dans toute exécution de code à venir, le débogage ou les inspections retourneraient des résultats incorrects.
392323
393324La capacité optionnelle d'inspecter explicitement les résultats des fonctions (avec les risques décrits) et donc l'appel de code depuis le débogueur n'est pas encore implémenté.
394325
395326### Pourquoi le débogueur ne montre pas certaines Variables/Structures ("no such symbol"/"incomplete type")
396327
397328Pour des problèmes de débogage:
398329
399330- propriétés
400331- Array of ... (tableau dynamique)
401332- Variables dans des procédures imbriquées
402333- "no such symbol in context"
403334- "incomplete type"
404335
405336Veuillez voir [[GDB Debugger Tips|Conseils sur le débogeur GDB]]
406337
407338### Comment puis-je déboguer les composants FCL depuis les paquets avec Lazarus ?
408339
409340Les composants FCL et les classes sont construites sans informations de débogage par défaut et en conséquence, GDB ne peut pas accéder aux et propriétés de composants. Pour construire les composants du paquet, il faut les reconstruire avec la bascule information de débogage en ligne "-gl".
410341
411342Cet exemple suppose que vous avez une distribution Linux avec une installation dans /usr/local/ et que le paquet base de données fcl-db est celui qui va contenir les informations de débogage en ligne. Alors que le fcl-db est utilisé dans cet exemple, vous pouvez exécuter cette commande make sur tous les paquets inclus.
412343
413344Avant de commencer, vous avez besoin de localiser votre chemin FPC en examinant votre fichier de configuration FPC. Le fichier (fpc.cfg) est localisé dans /etc/fpc.cfg. Affichez le contenu du fpc.cfg et trouvez le chemin d'installation de FPC. Recherchez une ligne démarrant avec -Fu dans le fichier :
414345
415346`-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/*`
416347
417348Les scripts Make installent des unités dans INSTALL_PATH/lib/fpc/\$fpcversion/units/\$fpctarget/, ainsi vous devez être sûr que /usr/local est le répertoire d'installation et devrait être affecté à INSTALL_PREFIX, sinon les scripts Make placeront les unités là où elles ne doivent pas être ou le script Make échouera.
418349
419350**Etape 1**: Ouvrir un terminal shell\
420351**Etape 2**: cd /user/local/share/src/fpc-2.3.1/fpc/fcl-db/\
421352**Etape 3**: sudo make clean all install INSTALL_PREFIX=/usr/local OPT=-gl\
422353
423354> **Note:** le paramètre INSTALL_PREFIX devrait être proprement configuré pour installer les unités.
424355
425356Dans l'exemple ci-dessous /usr/local est le chemin par défaut sous Linux mais peut être différent sur d'autres systèmes d'exploitation.
426357
427358``` bash
428359make clean all install INSTALL_PREFIX=/usr/local OPT=-gl
429360```
430361
431362A la fin, après reconstruction de toute unité FCL, vous pouvez vouloir tout aussi bien reconstruire la LCL.
432363
433364### Problèmes avec GDB sur Mac OSX
434365
435366[[GDB Debugger Tips|Reportez-vous là pour les problèmes de débogage sous Mac]]
436367
437368### Comment utiliser un fichier log pour le débogage ?
438369
439370Lazarus fournit un framework basique dans l'unité [[LazLogger]]. Regardez cette page pour plus de détails.
440371
441372### Comment puis-je utiliser un fichier log pour le débogage de l'EDI ?
442373
443374Lazarus utilise lui-même [[LazLogger]].
444375
445376Ceci signifie que vous pouvez exécuter Lazarus avec
446377
447378``` bash
448379--debug-log=lazarusdebuglog.txt
449380```
450381
451382Si ce n'est pas suffisant: dans l'EDI, l'ampleur de l'information rapportée peut être contrôlée par `--debug-enable`. Voir dans `--help` pour la liste des mots-clés, ou installer le paquet IdeLazLogger.
452383
453384Si vous voulez imprimer sur la console (le plus utile pour Windows), ajoutez {\$APPTYPE console} dans lazarus.pp ; ensuite reconstruisez Lazarus.
454385
455386Voir aussi [[Console Mode Pascal|Console Mode Pascal#Run in IDE with redirected output]]
456387
457388#### Détails
458389
459390La LCL possède la procédure LCLProc pour écrire sur la sortie de débogage:
460391
461392- **DebugLn:** fonctionne presque comme WriteLn, mais accepte uniquement des chaînes.
462393- **DbgOut:** fonctionne presque comme Write, mais accepte uniquement des chaînes.
463394
464395Dans des conditions normales la sortie est écrite sur stdout. Si stdout est fermée, (par exemple quand l'application est {\$AppType Gui} ou compilée avec -WG sous Windows), aucune sortie n'est écrite.
465396
466397La sortie de déboggage peu également être écrite vers un fichier. L'unité LCLProc vérifie dans son initialisation les paramètres de la ligne de commande pour '--debug-log=\<file\>'. Si trouvé, elle envoie la sortie de déboggage vers \<file\>.
467398
468399Si elle ne trouve pas de paramètres de ligne de commande --debug-log, elle vérifie si la variable d'environnement xxx_debuglog existe, xxx étant le nom du fichier programme sans l'extension. Pour Lazarus ce serait lazarus_debuglog. Si une telle variable d'environnement existe, elle utilise comme fichier de sortie de déboggage. Par exemple, si vous faites:
469400
470401`set lazarus_debuglog=c:\lazarus\debug.txt`
471402
472403la sortie de déboggage sera écrite dans c:\lazarus\debug.txt.
473404
474405Etant donnée que c'est implémenté dans lclproc, chaque application utilisant lclproc peut profiter de cette sortie.
475406
476407## Contribuer / Faire changer Lazarus
477408
478409### J'ai créé un patch pour "docker" la fiche des messages de l'EDI en bas de l'éditeur de code source
479410
480411De tels patchs ne seront pas appliqués car ils ne sont qu'une partie du docking voulu. Le but est de créer un gestionnaire complet de dock et de l'utiliser. Un gestionnaire complet de dock peut "docker" toutes les fenêtres de l'IDE et il laisse l'utilisateur en disposer comme il le veut. Par exemple, docker la fenêtre de message au dessus ou au dessous ou encore pas du tout. Par exemple :
481412
482413 +-------------------++--+
483414 |menu || |
484415 +-------------------+| |
485416 +--++---------------+| |
486417 |PI|| Source Editor ||CE|
487418 +--+| || |
488419 +--+| || |
489420 | |+---------------++--+
490421 |OI|+-------------------+
491422 | ||messages |
492423 +--++-------------------+
493424
494425Le gestionnaire de dock peut enregistrer la disposition et la restaurer au prochain chargement. De préférence, le docking peut se faire dans les pages aussi. Il ne nécessite pas l'emploi du drag and drop. Tous les patchs mettant en oeuvre le docking sans un gestionnaire rend difficile l'implémentation d'un réel gestionnaire de dock et sera rejeté.
495426
496427Un exemple pour un tel gestionnaire de dock est le paquet anchordockdsgn.
497428
498429### J'ai corrigé/amélioré Lazarus. Comment puis-je ajouter mes changements au code source officiel de Lazarus ?
499430
500431Créez un patch et envoyez-le aux développeurs. Pour les détails, voir [[Creating A Patch/fr|Créer un Patch]].
501432
502433### Comment puis-je installer plus d'une copie de Lazarus ?
503434
504435Voir [[Multiple Lazarus]]
505436
506437### Comment puis-je devenir un développeur Lazarus et accéder à la gestion de SVN et du traqueur de bugs ?
507438
508439En premier lieu, vous devez apprendre Lazarus, pour prouvez votre connaissance et votre compétence. Commencez par lire l'article Wiki [[Lazarus Documentation]], lire le code source de Lazarus, jeter un oeil dans le [traqueur de bug de Lazarus](http://bugs.freepascal.org/set_project.php?project_id=1), corriger quelques bugs et si vous pensez être prêt, contactez les développeurs sur la [liste de diffusion](http://www.mail-archive.com/lazarus@miraclec.com).
509440
510441## Où est/sont défini(e)(s)...
511442
512443### Les Constantes de Virtual key
513444
514-Les constantes de Virtual key sont définies dans [[doc:lcl/lcltype|LCLType]]. Ajoutez LCLtype à votre <b>uses</b>.
445+Les constantes de Virtual key sont définies dans [[doc:lcl/lcltype|LCLType]]. Ajoutez LCLtype à votre uses.
515446
516447## Utilisation de l'IDE
517448
518449### Comment puis-utiliser l'"identifier completion"?
519450
520451Vous pouvez invoquer la completion d'identifiant en pressant \[ctrl\]\[space\]. Dans le menu *Configuration -\> Options de l'éditeur -\> Audit de Code -\> Dispositifs Automatiques* vous pouvez configurer à quelle vitesse cela apparaître automatiquement.
521452
522453### Puis-je changer les polices et couleurs de l'éditeur de code ?
523454
524455Oui, voir le menu *Tools -\> Options* et utiliser les sections Editeur/Affichage et couleurs. Sous Windows, vous pouvez trouver que la police par défaut Courier (au d'autre typographie) est soit trop dure soit trop douce, soit de sélectionner/désélectionner 'Désactiver l'anti-crénelage'. Les polices TrueType, telle que la libre "Bitstream Vera Sans Mono" disponible dans [1](http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/1.10/). (Pour installer une nouvelle police, décompresser et copier les fichiers dans le répertoire adapté. Dans Windows XP, vous aurez besoin d'utiliser la section Polices du panneau de contrôle. Dans Windows 7, vous pouvez sélectionner tous les fichiers de police, faites un clic droit et trouver une option 'Installer' dans le menu surgissant).
525456
526457## Linux
527458
528459### Comment puis-je déboguer sous Linux sans IDE?
529460
530461D'abord vous avez besoin d'un débogueur. gdb est le débogueur standard sous Linux et il y a plusieurs interfaces GUI disponibles. L'une des plus courantes est ddd, qui fait partie de la plupart des distributions courantes. Pour compiler Lazarus/lcl avec les informations de débogage, vous devriez utiliser les commandes suivantes pour débuter une session de débogage:
531462
532463` $ make clean; make OPT=-dDEBUG`\
533464` $ ddd lazarus`
534465
535466Soyez prévenu cependant que ddd n'est pas aussi confortable que par exemple le débogueur de Lazarus. Spécialement si c'est pour voir le contenu d'une variable vous devez prendre en compte le fait que ddd/gdb sont sensibles à la casse alors que Pascal y est insensible. Par conséquent, vous devez à taper tous les noms de variables en majuscule pour voir leur contenu. Pour plus d'information, jetez un oeil dans les manuels de FPC.
536467
537468### Je peux désormais débogguer mais ddd ne trouve pas mes sources ou prétend qu'ils ne contiennent pas de code. Qu'est ce donc?
538469
539470Ceci est un problème relatif au chemin avec soit gdb soit ddd. Vous pouvez éviter ceci:
540471
541472- Utilisez la commande "Changer de Dossier" du menu de ddd et choisissez le dossier où sont situées les sources. L'inconvénient de cette méthode est que maintenant vous ne pouvez plus utiliser la source du programme avec lequel vous avez commencé (par ex: lazarus). Donc il se peut qu'il soit nécessaire de changer de dossier plusieurs fois.
542473- Dans ddd, allez dans \[Edit\] \[gdb-settings\] et configurez le dossier de recherche.
543474- Créeez un fichier \$(HOME)/.gdbinit comme ci dessous:
544475
545476`     directory /your/path/to/lazarus`\
546477`     directory /your/path/to/lazarus/lcl`\
547478`     directory /your/path/to/lazarus/lcl/include`
548479
549480### J'obtiens une erreur durant l'édition de lien qui fait état de: /usr/bin/ld can't find -l\<some lib\>
550481
551482Par exemple:
552483
553484` /usr/bin/ld: cannot find -lgdk`
554485
555486Ceci signifie qu'une bibliothèque externe n'a pas été trouvée. Dans le cas de dessus sous Linux, cela signifie que la libgdk.so ou libgdk.a n'a pas été trouvée. Dans le cas de gdk, le paquet est appelé dans la distribution Fedora Core: 'gtk+-devel-1.2.10-33'.
556487
557488**Distributions basées sur les paquets**
558489Vous devez installer le paquet qui met à disposition les fichiers lib\<somelib\>.so ou lib\<somelib\>.a. Les bibliothèques dynamiques sous Linux ont pour extension .so, alors que les bibliotèques statiques ont pour extension .a. Sur certaines distributions Linux, vous avez installé le paquet (rpm, deb) \<nom de paquet\> qui met à disposition \<some lib\>, mais vous avez également besoin du paquet de développement (rpm, deb), normallement nommé \<nom de paquet\>-dev, qui contient le .a (bibliothèque statique) et/ou le .so (bibliothèque dynamique).
559490
560491
561492Quelques distros ont des commandes pour trouver quel paquet contient un fichier:
562493
563494**Mandriva**
564495
565496``` bash
566497urpmf lib<somelib>.so
567498```
568499
569500
570501listera tous les paquets contenant le fichier nommé lib\<somelib\>.so, vous devrez installer ceux se terminant par -devel.
571502
572503
573504**Debian**
574505
575506
576507installer l'utilitaire apt-file (apt-get install apt-file) ensuite
577508
578509``` bash
579510apt-file search lib<somelib>.so
580511```
581512
582513
583514listera tous les paquets contenant le fichier nommé lib\<somelib\>.so, vous devrez installer ceux se terminant par -dev.
584515
585516
586517**SuSE**
587518
588519
589520SuSE installe les bibliothèques gtk devel dans /opt/gnome/lib (or /opt/gnome/lib64 pour 64 bits), qui n'est pas le chemin standard aux bibliothèques. Ajoutez-le simplement dans votre /etc/fpc.cfg. (-Fl/opt/gnome/lib).
590521
591522**Distributions basées sur les sources et la Compilation Manuelle(LFS)**
592523Assurez-vous qu'il y ait un lib\<somelib\>.a dans le path, et qu'il contient la bonne version. Pour permettre au linker de trouver la bibliothèque dynamique, créez un lien symbolique appelé lib\<some lib\>.so vers lib\<some lib\>\<version\>-x,y.so si nécessaire (et/ou pour les bibliothèques statiques; lib\<some lib\>.a vers lib\<some lib\>\<version\>-x,y.a).
593524
594525
595526**FreeBSD** :
596527
597528Comme pour les distros basées sur les sources, assurez-vous aussi que vous avez -Fl/usr/local/lib dans votre chemin de bibliothèques de fpc.cfg et/ou Lazarus. Gardez à l'esprit que GTK1.2 a "gtk12" pour nom de package sous FreeBSD. (idem pour glib) NOTE: Cela a changé depuis. Les nouveaux portages ont pour nom gtk-12 et glib-12. Vous pouvez vous faire avoir sur ce problème, car FPC requiert les "-less", vous aurez besoin de les symlinker comme ceci:
598529
599530``` bash
600531# as root
601532cd /usr/local/lib && ln -s libglib-12.so libglib12.so
602533cd /usr/X11R6/lib && ln -s libgtk-12.so libgtk12.so
603534cd /usr/X11R6/lib && ln -s libgdk-12.so libgdk12.so
604535```
605536
606537
607538**NetBSD** :
608539
609540Comme les distros basées sur les sources, assurez-vous aussi que vous avez -Fl/usr/pkg/lib dans votre chemin de bibliothèques de fpc.cfg et/ou Lazarus.
610541
611542
612543**Fedora** :
613544
614545Dans le panneau "Ajouter/Supprimer un logiciel", recherchez: "gtk2-devel", "glibc-devel" ([voir ici](http://www.mail-archive.com/lazarus@lists.lazarus.freepascal.org/msg03637.html)), "libx11-devel"
615546
616547### Comment puis-je convertir un projet Kylix 2 en projet Lazarus?
617548
618549C'est à peu près la même chose que de convertir un projet Kylix en un projet Delphi/VCL.
619550
620551La LCL (Lazarus Component Library) essaie d'être compatible avec la VCL de Delphi. Kylix CLX essaie d'être compatible avec QT. Voici quelques conseils généraux:
621552
622553- Renommez toutes les CLX Q-units utilisées comme QForms, QControls, QGraphics, ... en leur équivalent VCL: Forms, Controls, Graphics, ...
623554- Ajoutez LResources à la section uses de chaque source de fiche
624555- Renamez ou copiez tous les fichiers .xfm en fichiers .lfm.
625556- Renamez ou copiez le fichier .dpr en fichier .lpr.
626557- Ajoutez "Interfaces" à la section uses dans le fichier .lpr.
627558- Retirez la directive {\$R *.res}
628559- Retirez la directive {\$R *.xfm}
629560- Ajoutez les directives {\$mode objfpc}{\$H+} ou {\$mode delphi}{\$H+} aux fichiers .pas et .lpr
630561- Ajoutez une section initialization à la fin de chaque source de fiche et ajoutez une directive include pour le fichier .lrs (lazarus resource file):
631562
632563` initialization`\
633564`   {$I unit1.lrs}`
634565
635566
636567Les fichiers .lrs files peuvent être créés via l'utilitaire lazres dans: (lazarusdir)/tools/lazres.
637568
638569Par exemple: ./lazres unit1.lrs unit1.lfm
639570
640571- Fixez les différences. La LCL ne supporte pas actuellement toutes les propriétés de la VCL et le CLX n'est pas complètement compatible avec la VCL.
641572
642573- Pour le rendre plus indépendant de la plate-forme, éliminez les références à l'unité libc (qui est déprécié) en les substituant avec des unités natives FPC comme baseunix/unix tant que possible. Cela sera nécessaire pour supporter d'autres cibles que Linux/x86 (comprenant OS X, FreeBSD et Linux/x86_64)
643574
644575### Quand je compile Lazarus le compilateur ne peut pas trouver une unité. ex: gtkint.pp(17,16) Fatal: Can't find unit GLIB
645576
6465771\. Vérifiez un rebuild propre: faites un 'make clean all'
647578
6485792\. Vérifiez que le compilateur a une version correcte (2.0.4 ou supérieure)
649580
6505813\. Vérifiez que le compilateur utilise le bon fichier de cconfiguration. L'installation normale crée /etc/fpc.cfg. Mais fpc cherche également ~/.ppc386.cfg, ~/.fpc.cfg, /etc/ppc386.cfg et il utilise uniquement le premier qu'il rencontre.
651582
652583
653584**Conseil:** Vous pouvez voir quel fichier de configuration est utilisé avec 'ppc386 -vt bogus'
654585
655586Retirez tout ppc386.cfg du fait qu'il est réellement obsolète.
656587
6575884\. Vérifiez que le fichier de configuration (/etc/fpc.cfg) contient les chemins d'accès corrects à vos libs fpc. Il doit y avoir trois lignes comme celles-ci:
658589
659590`   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget`\
660591`   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/rtl`\
661592`   -Fu/usr/lib/fpc/$fpcversion/units/$fpctarget/*`
662593
663594
664595La première partie de ces trois chemins (/usr/lib/fpc) dépend de votre système. Sur certains systèmes cela peut être par exemple /usr/local/lib/fpc/... .
665596
666597**Conseil:** Vous pouvez voir vos searchpaths avec 'ppc386 -vt bogus'
667598
6685995\. Vérifiez que le fichier de configuration (/etc/fpc.cfg) ne contient pas de chemins de recherche vers les fichiers source de la LCL (.pp, .pas):
669600
670601` interdit: -Fu(lazarus_source_directory)/lcl`\
671602` interdit: -Fu(lazarus_source_directory)/lcl/interfaces/gtk`
672603
673604
674605Si vous voulez ajouter la LCL à tous vos projets FPC, assurez-vous que les deux chemins ressemblent aux suivants et sont placés après les chemins de lib fpc précédents:
675606
676607` -Fu(lazarus_source_directory)/lcl/units/$fpctarget`\
677608` -Fu(lazarus_source_directory)/lcl/units/$fpctarget/gtk`
678609
6796106\. Vérifiez que l'unité manquante (glib.ppu) existe dans votre dossier lib de fpc. Par exemple gtk.ppu peut être trouvé dans /usr/lib/fpc/\$fpcversion/units/i386-linux/gtk/. S'il n'existe pas, fpc lib est corrompu et devrait être réinstallé.
680611
6816127\. Vérifiez si les sources sont dans un dossier NFS monté. Dans certains cas, les mises à jour de NFS créent les fichiers incorrectement. Essayez de déplacer ces sources dans un dossier non-NFS et compilez d'ici.
682613
6836148\. Si vous n'avez toujours pas réussi, essayez d'utiliser le script samplecfg comme suit:
684615
685616*\#* cd /usr/lib/fpc/*version*/
686617
687618*\#* sudo ./samplecfg /usr/lib/fpc/*\\\$version* /etc
688619
689620> **Note:** Ne mettez pas - / - après etc car si cous le faites le système va créer un fichier - /etc/fpc.cfg/fpc.cfg. En fait, nous voulons que samplecfg fasse un fichier - /etc/fpc.cfg - et non un dossier /etc/fpc.cfg.
690621
691622### J'ai installé la version binaire, mais quand je compile un projet simple, Lazarus me donne: Fatal: Can't find unit CONTROLS
692623
693624Vous utilisez probablement un paquet fpc plus récent que celui utilisé pour construire les binaires de Lazarus. La meilleure solution est de télécharger les sources et de compiler Lazarus manuellement. Vous pouvez télécharger le snapshot du source ou obtenir le source via svn:
694625
695626``` bash
696627$ bash
697628$ svn checkout http://svn.freepascal.org/svn/lazarus/trunk lazarus
698629$ cd lazarus
699630$ make clean all
700631```
701632
702633Assurez-vous que Lazarus a le dossier du nouveau source: Environment-\>General Options-\>Files-\>Lazarus Directory Top
703634
704635### Lazarus compiles, but linking fails with: libgdk-pixbuf not found
705636
706637Installer la bibliothèque gdk-pixbuf pour gtk1.x:
707638
708639Où trouver la bibliothèque gdk-pixbuf:
709640
710641RPMs: <http://rpmfind.net/linux/rpm2html/search.php?query=gdk-pixbuf&submit=Search+>...&system=&arch=
711642
712643Paquet Debian: libgdk-pixbuf-dev
713644
714645Sources: <ftp://ftp.gnome.org/pub/gnome/unstable/sources/gdk-pixbuf/>
715646
716647**Ubuntu 8.10:**
717648
718649Si vous compilez Lazarus avec GTK 2.0 vous obtiendrez une erreur "libgdk-pixbuf2.0" non trouvée. Installez juste libgtk2.0-dev en utilisant apt de cette façon:
719650
720651``` bash
721652apt-get install libgtk2.0-dev
722653```
723654
724655Comment désactiver l'utilisation dans Lazarus: Dans Outils-\> Configurer "Création de Lazarus", ajouter l'option '-dNoGdkPixBufLib'.
725656
726657ou par la ligne de commande: "make clean all OPT=-dNoGdkPixBufLib".
727658
728659### J'ai SuSE et j'obtiens /usr/bin/ld: ne peut trouver -lgtk Erreur: Erreur pendant l'édition de lien
729660
730661SuSE installe les bibliothèques gtk devel sous /opt/gnome/lib (ou gnome/lib64 pour le 64 bits),qui n'est pas un chemin de bibliothèque standard. Ajoutez-le simplement dans votre /etc/fpc.cfg. (-Fl/opt/gnome/lib).
731662
732663### J'ai Kubuntu et j'obtiens /usr/bin/ld: ne peut trouver -lgtk-x11-2.0
733664
734665Vous pouvez soit utiliser le backend QT ou GTK2. Par défaut, c'est GTK2. Pour GTK2, installer le paquet kubuntu *libgtk2.0-dev*.
735666
736667### Lazarus s'écrase avec une erreur d'exécution 211 après avoir installé un composant
737668
738669Après que j'ai installé un composant, Lazarus plante avec le message suivant:
739670
740671`Threading has been used before cthreads was initialized.`\
741672`Make cthreads one of the first units in your uses clause.`\
742673`Runtime error 211 at $0066E188`
743674
744675Comment puis-je corriger ceci?
745676
746677Votre composant fraichement installé utilise des threads. FPC sous *nix n'intègre pas automatiquement le support du threading, mais il doit être initialisé. L'initialisation est réalisée dans l'unité cthreads. Toute application utilisant le composant a besoin d'ajouter cette unité dans la clause 'uses' du programme principal. Lazarus lui-même ne fait pas exception. Ceci peut être fait de deux façons:
747678
7486791\) Ouvrez le paquet. Dans l'éditeur de paquet, cliquez sur *Options*. Dans la page *Utilisation* ajoutez dans les options personnalisées **-dUseCThreads**. Puis reconstruisez l'EDI. De cette manière, l'unité 'cthreads' sera automatiquement utilisée par l'IDE sous Unix et les cthreads sont initialisés.
749680
7506812\) Afin d'éviter de modifier le paquet, une option du compilateur FPC peut être utilisée directement. Ouvrez le menu Outils-\>Configurer "Création de Lazarus", un dialogue sera affiché ; dans le champ "Options:" tapez `-Facthreads` puis pressez sur le bouton "Ok". La prochaine étape est d'installer le paquet. Lazarus sera reconstruit avec l'option -Facthreads, ce qui signifie qu'il traitera le programme principal comme si l'unité cthreads était la première dans la clause uses.
751682
752683*Conseil:* Peut-être votre ancien (sans plantage) exécutable Lazarus est enregistré comme lazarus.old dans le même répertoire que le Lazarus qui plante..
753684
754685Voir aussi [[Multithreaded Application Tutorial|Multithreaded Application Tutorial#Units needed for a multithreaded application]]
755686
756687### Quand j'exécute un programme avec des threads j'obtiens l'erreur d'exécution 232
757688
758689Le message d'erreur complet est:
759690
760691`This binary has no thread support compiled in.`\
761692`Recompile the application with a thread-driver in the program uses`\
762693`clause before other units using thread.`\
763694`Runtime error 232`
764695
765696**Solution**: Ajoutez cthreads comme première unité de la clause uses du programme principal, habituellement le fichier .lpr.
766697
767698### J'ai Ubuntu Breezy et mes polices dans l'EDI Lazarus paraissent trop grosse
768699
769700Si Lazarus est compilé avec Gtk1.2, les réglages dans les Préférences Gnome/Police n'ont pas d'effet comme dans Gtk2. Vous pouvez essayer cette solution: Créez un fichier nommé .gtkrc.mine dans votre répertoire personnel si ce n'est déjà le cas et ajoutez-lui ces lignes :
770701
771702 style "default-text" {
772703 fontset = "-*-arial-medium-r-normal--*-100-*-*-*-*-iso8859-1,\
773704 -*-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
774705 }
775706
776707 class "GtkWidget" style "default-text"
777708
778709Si ce n'est pas suffisant, essayez de créer un lien symbolique '.gtkrc' vers '.gtkrc.mine'. Cela fonctionne de cette façon sous Xubuntu 7.10, Mandriva 2009.0 KDE3.
779710
780711### Comment mon programme gtk peut-il utiliser les fichiers rc personnalisés ?
781712
782713Option a) Nommez votre fichier rc *yourprogram.gtkrc* et mettez-le dans le même répertoire que l'exécutable.
783714
784715Option b) Utilisez l'unité *GtkInt* et appelez *GTKWidgetSet.SetRCFilename('your_preferred_rc_file');* Le meilleur est quand l'appel précède *Application.Initialize* dans votre fichier .lpr avec *{\$IFDEF LCLGtk}*.
785716
786717Option c) Utilisez l'unité *gtk2* et appelez *gtk_rc_parse('your_rc_file'));* et *gtk_rc_reparse_all;*.
787718
788719### J'ai Ubuntu et je ne peux pas compiler pour Gtk2 à cause du manque de bibliothèques
789720
790721Ubuntu a un problème en ne créant pas tous les liens symboliques dont vous aurez besoin même si les bibliothèques sont installées. Assurez-vous que toutes les bibliothèques manquantes ont leurs liens appropriés quand vous essayer de lier pour Gtk2. Par exemple, vous aurez peut-être besoin de faire:
791722
792723 cd /usr/lib
793724 sudo ln -s libgdk-x11-2.0.so.0 libgtk-x11-2.0.so
794725
795726Assurez-vous que les liens symboliques \[n'importe quoi\].so sont créés et pointent vers les bibliothèques en cours.
796727
797728### Comment puis-je compiler un programme pour Gtk2 ?
798729
799730Pour le moment, l'EDI compilé pour Gtk2 est un peu instable, mais vous pouvez compiler du logiciel pour Gtk2 en utilisant l'EDI Gtk1.
800731
801732Pour démarrer la recompilation de la LCL pour Gtk2. Allez au menu "Outils" -\> "Configurer Création de Lazarus" et choisissez 'Clean all'.
802733
803734Maintenant cliquez sur Ok et allez vers le menu "Outils" -\> "Créer Lazarus avec le profil...".
804735
805736Maintenant vous pouvez compiler votre logiciel avec Gtk2 en allant sur les options du compilateur et en changeant le widgetset vers Gtk2.
806737
807738### Lazarus s'exécute différemment avec Linux ou Windows. Que dois-je savoir ?
808739
809740Si vous utilisez Readln(); et Writeln(); pour vos entrée et sortie, la fenêtre de console (parfois appelée fenêtre de terminal) ne va pas surgir comme il le fait avec Windows. Vous aurez besoin d'accéder à cette fenêtre dans Lazarus avec Voir -\> Debug Windows -\> Sortie Terminal. Contrairement à Windows, vous ne pouvez pas utilisez le retour arrière pour corriger les erreurs que vous avez tapées. La touche Entrée sur le pavé numérique ne marchera pas non plus. Tapez prudemment !
810741
811742Linux étant sensible à la casse, vous devrez faire attention à la casse dans les noms de fichier.
812743
813744## Windows
814745
815746### Quand je compile le compilateur, j'obtiens: The name specified is not recognized as an internal or external command, operable program or batch file.\>& was unexpected at this time.
816747
817748Dans le répertorie du compilateur, il existe un scripts OS2 nommé make.cmd. NT le voit aussi comme un script, il faut donc le supprimer sur NT, nous n'en avons pas besoin.
818749
819750### Quand je compile le compilateur, j'obtiens: make\[3\]: ./ppc1.exe: Command not found
820751
821752Je ne sais pas pourquoi, mais make a en quelque sorte perdu son chemin. Essayez de compiler avec une basedir définie comme: make cycle BASEDIR = your_fpc_source_dir_herecompiler
822753
823754### Quand j'essaie de construire (make) Lazarus, j'obtiens:
824755
825756#### make.exe: * * * interfaces: No such file or directory (ENOENT). Stop.make.exe: * * * \[interfaces_all\] Error 2
826757
827758Vous devez mettre à niveau votre make.
828759
829760#### makefile:27: *** You need the GNU utils package to use this Makefile. Stop.
830761
831762Assurez-vous que vous n'avez pas installé FPC dans un chemin contenant des espaces. Le MakeFile ne supporte pas cela.
832763
833764### How can I give my program an XP look like lazarus has?
834765
835766Projet -\> Options du projet -\> Coche 'Utiliser le fichier manifeste pour autoriser les thèmes'.
836767
837768Si vous avez un myprogram.exe alors créez un fichier appelé myprogram.exe.manifest and copiez/collez ceci dans la fichier:
838769
839770`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>`\
840771`<assembly xmlns="`[`urn:schemas-microsoft-com:asm.v1`](urn:schemas-microsoft-com:asm.v1)`" manifestVersion="1.0">`\
841772`<assemblyIdentity processorArchitecture="*" version="1.0.0.0" type="win32" name="myprogram"/>`\
842773`<description>programm</description>`\
843774`<dependency>`\
844775`  <dependentAssembly>`\
845776`   <assemblyIdentity`\
846777`     type="win32"`\
847778`     name="Microsoft.Windows.Common-Controls"`\
848779`     version="6.0.0.0"`\
849780`     publicKeyToken="6595b64144ccf1df"`\
850781`     language="*"`\
851782`     processorArchitecture="*" />`\
852783`  </dependentAssembly>`\
853784`  </dependency>`\
854785`</assembly>`
855786
856787Voila! XP apparaît.
857788
858789### Quand j'exécute un programme Windows créé dans Lazarus il démarre dans une fenêtre DOS
859790
860791Spécifiez l'argument -WG (IHM Windows) dans la ligne de commande du compilateur ou dans l'EDI Lazarus, cochez la case Application Win32 gui dans le dialogue des options du compilateur (Menu Projet -\> Options du compilateur -\> Config and Target -\> target-specific options.
861792
862793## Mac OS X
863794
864795### Pourquoi la compilation d'un projet échoue avec 'unknown section attribute: no_dead_strip'?
865796
866797Le "décapage" du code mort n'est pas supporté par l'assembleur et le lieur avant Xcode 1.5 (disponible pour Mac OS X 10.3.9). Désactiver les options du compilateur
867798
868799- Compilation and linking \> Style de l'unité \> Lien intelligent (-CX)
869800- et Edition de lien \> Lier intelligemment (-XX)
870801
871802### Débogage
872803
873804[[GDB Debugger Tips|Voir ici pour les questions sur le débogage sous Mac]]
874805
875806## Licence
876807
877808### Puis-je développer des applications commerciales avec Lazarus ?
878809
879810Oui, les composants LCL sont distribués sous la licence [[FPC modified LGPL|LGPL avec une exception]], ce qui vous autorise à lier statiquement ces composants sans distribuer le code source de votre application. Les modifications et améliorations des composants LCL doivent être distribués avec le code source. L'EDI Lazarus est lui sous licence GPL. La LCL est restreinte au code dans le répertoire nommé "lcl", un aute code ne pourrait être couvert par cette instruction.
880811
881812### Pourquoi certains composants ne peuvent être utilisés dans une application propriétaire ?
882813
883814Lazarus est fourni avec des composants additionnels, qui ont été développés par de tierces parties. Ceux-ci peuvent donc être sous une licence différente. Si vous voulez les utiliser, vous devez vérifier la licence dans le code source de ces composants. La plupart des composants tiers se trouvent dans le répertoire "components".
884815
885816### Comment puis-je savoir si un composant fait partie de LCL ?
886817
887818Tous les composants LCL sont dans le répertoire "lcl". Une liste des composants appartenant à la LCL peut être consultée ici <http://lazarus-ccr.sourceforge.net/docs/lcl/> . Si votre code source utilise des composants non listés sur cette page, vous avez peut-être utilisé des composants qui ne font pas partie de la LCL.
888819
889820### Puis-je écrire des plug-ins propriétaires pour Lazarus ?
890821
891822Oui, la partie IDEIntf de l'EDI est sous licence LGPL avec la même exception, ce qui signifie que les structures de données communes de cette partie ne vous forceront pas à placer votre plug-in ou composant accessible à la conception sous licence GPL. Vous êtes libre de choisir n'importe quelle licence pour votre plug-in; nous ne voulons pas limiter votre choix. C'est ainsi que des plug-ins qui ne sont pas sous une licence compatible GPL sont autorisés. Notez cependant qu'il n'est pas autorisé de distribué une version compilée de Lazarus avec ces plugins non-GPL liés de manière statique; cependant, nous ne voyons pas ceci comme une limitation, puisque compiler Lazarus est facile.
892823
893824## Utiliser le Forum
894825
895826### Quelle est la manière correcte de poser des questions dans le forum ?
896827
897828La première consigne et la plus importante : *toujours mentionner la version de Lazarus, la version de FPC, le jeu graphique (Gtk2...), l'architecture de CPU et le système d'exploitation (version complète) que vous utilisez.* Ne pas dire seulement la version la plus récente. Bien préciser le numéro exact de version. Pour les instantanés, le numéro de révision et/ou la date sont aussi importants.
898829
899830Quand vous posez une question de programmation, **toujours essayer de donner quelque code source qui démontre le problème**. SVP, entourez votre code avec les balises \[code\]\[/code\] (ou utilisez le bouton Insert code dans la barre d'outil de l'éditeur de post). Vos pouvez attacher des programmes complets comme des fichiers zip si vous le voulez. Utilisez "Lazarus/Projet/Publier le projet" pour vous aider
900831
901832Si vous obtenez une erreur dans votre code **toujours spécifier quelle est cette erreur**. Simplement copier ce que dit le compilateur/débogueur/votre programme serait suffisant dans la plupart des cas. Si l'erreur survient à l'exécution, utilisez -gl et désactivez l'expansion en ligne (inlining) lors de la compilation ainsi votre programme peut générer une trace correcte.
902833
903834Souvent une image est aussi vraiment utile. Vous pouvez héberger des images dans <http://imageshack.us/> et d'autres sites web similaires puis poster un lien.
904835
905836Essayez de donner à la fois une vue d'ensemble de haut niveau (**quel but vous voulez atteindre**) et une vue plus détaillée du problème (**comment vous tentez d'atteindre votre but**). Souvent, il y a des façons de faire plus faciles que vous ne connaissez pas.
906837
907838Finalement, assurez-vous que vous avez cherché/lu la documentation pertinente (p.ex. le [[FPC documentation|documentation FPC]] et le wiki Lazarus vois p.ex. [[Lazarus Documentation|Documentation Lazarus]]). Vous pouvez aussi [chercher sur le forum](http://lazarus.freepascal.org/index.php?action=search): d'autres personnes ont peut-être trouvé des solutions à des problèmes similaires. Si vous indiquez que vous avez déjà fait une partie du travail par vous-même, les gens seront plus incités à vous aider.
908839
909840Pour plus de conseils sur la façon la plus maline de poser des questions, lire ceci: <http://catb.org/esr/faqs/smart-questions.html>
910841
911842## Numérotage de version
912843
913844Voir la page [[Version Numbering]] pour une explication concernant les branches et les numéros de version de Lazarus.
914845
915846## Problèmes/questions avec les anciennes versions de Lazarus/FPC
916847
917848Les questions concernant les anciennes versions de Lazarus/FPC et les notes sur les mises à niveau sont couvertes ci-dessous.
918849
919850Souvent la meilleure solution est de mettre à niveau. Lisez les nombreuses [Notes de version](/wiki-category/Release%20Notes)
920851
921852### Pourquoi l'édition de lien est-elle si lente sur Windows ? \[versions anciennes de Lazarus\]
922853
923854> **Note:** Ce problème a été résolu dans FPC 2.2 et Lazarus 0.9.24. Veuillez mettre à niveau votre Lazarus si vous le pouvez. Pour les versions plus anciennes, lire le texte ci-dessous.
924855
925856D'une manière générale, la compilation sur Windows prend plus de temps que sur d'autres plate-formes parce que l'éditeur de liens GNU utilisé par FreePascal est lent sur cette plate-forme. Ce problème affecte seulement Windows et est seulement sensible sur les ordinateurs relativement vieux (moins de 1Ghz) et sur ceux avec peu de RAM (128MB ou moins).
926857
927858En outre, si vous liez intelligement la LCL, l'édition de lien sera beaucoup plus lente. Une étude à ce sujet est proposée ici : [[File size and smartlinking/fr|Taille de fichier et lien intelligent]]
928859
929860Un éditeur de liens interne a été développé, mais n'a été disponible qu'à partir de la version 2.2 de Free Pascal. Il diminue nettement la durée de l'édition de lien.
930861
931862### L'ancien Lazarus ne supporte pas les ressources de style Windows ; conversion des ressources *lrs*
932863
933864Les anciennes versions de FPC (et donc Lazarus) ne supportent pas les ressources Windows (.rc/.res), mais seulement les fichiers *LRS* (Lazarus Resource files). Voir [[Lazarus Resources]].
934865
935866Depuis la 0.9.30, Lazarus peut utiliser les ressources FPC. Cela signifie que vous pouvez supprimer les fichiers *lrs* pour les fiches et remplacer les directives Include `{$I unit1.lrs}` avec `{$R *.lfm}`.
936867
937868## Voir aussi
938869
939870- [[Unit not found - How to find units]] information sur quoi faire quand vous obtenez les messages "unité non trouvée".
940871
941872## Contributeurs et Commentaires
942873
943874Cette page a été convertie depuis le epikwiki [version](http://lazarus-ccr.sourceforge.net/index.php?wiki=LazarusFaq).
944875
945876---
946877*From the Free Pascal wiki, page "Lazarus Faq/fr", as it stood on 2020-02-18 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).*

Back to history