Difference between revisions of "Indy with Lazarus/fr"

From Lazarus wiki
(Traduction des titres)
m
 
(17 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
{{Indy with Lazarus}}
 
{{Indy with Lazarus}}
 +
 +
== Notes de traduction [[User:E-ric|E-ric]] ==
 +
* Les indications chronologiques originales étant relatives, leur validité actuelle l'est tout autant.
 +
* La page originale contient des avis personnels qui ont été retranscrits.
 +
* Aucun contrôle lié aux versions des bibliothèques n'a été fait, il est donc possible que les modes opératoires des installations aient changé.
  
 
== Indy pour Lazarus ==
 
== Indy pour Lazarus ==
  
A new attempt at converting Indy is being undertaken by the Indy core team. FPC developer Marco van de Voort is working with Indy core to get Indy fully working with FPC/Lazarus. Specially Indy's JP Mugaas did a lot of good work in getting Indy10 to work with FPC. The native unixrtl backend is mostly his work too.
+
Une nouvelle tenative de conversion d'Indy a été entreprise par l'équipe du noyau d'Indy. Marco van de Voort, développeur FPC, travaille avec le coeur d'Indy pour que FPC/Lazarus fonctionne pleinement avec Indy. En particulier, JP Mugaas d'Indy a fait pas mal de bon travail pour porter Indy10 vers FPC. La plupart du backend unixrtl est de son fait.
  
Currently Indy10 is nearly fully working, and end-user usability has been improved a lot. Only special topics like OpenSSL and compression might need additional knowledge. 64-bit support hasn't entirely been validated either.
+
Actuellement, Indy10 fonctionne presque complètement et l'utilisabilité pour l'utilisateur final a été améliorée. Seuls des sujets tels que OpenSSL et la compression pourraient demander des connaissances supplémetaires. Le suport 64-bit n'est pas entièrement validé.
 
   
 
   
Hint: I'm not very interested in support the Kylix side of Indy. (anything that uses unit libc). I ported it only as step up to native Unix RTL using Indy apps.
+
(Avis d'un contributeur) Conseil: Je ne suis pas très intéressé(e) par le support de la partie Kylix d'Indy. (Tout ce qui utilise l'unité libc). Je l'ai portée uniquement comme une étape vers une RTL native d'Unix utilisant les apps Indy.
  
 
=== Exigences ===
 
=== Exigences ===
 +
Actuellement, FPC 2.0.4 (NdT: aucun vérification faite pour les versions 3.x) est vraiment près d'être capable d'utiliser Indy dans tous ses aspects, excepté pour le bug de serveur sur FreeBSD/Mac OS X (qui nécessite 2.1.1)
  
Currently, FPC 2.0.4 is very close to being able to use indy in all its facets, except for the server bug on FreeBSD/Mac OS X (which requires 2.1.1)
+
Puisque Indy10 fonctionne maintenant sur toutes les cibles majeures, nous nous concentrons sur cette version. Alors que la conversion vers Indy9 semble plus simple, il faut garder à l'esprit qu'elle ne tourne que sous Win32 (et pourrait être théoriquement portée sur Linux/x86).
  
Since Indy10 now works for all major targets, we focus on this version. While conversion to Indy9 might be simpler for people, keep in mind that it only works on win32. (and theoretically could be ported to Linux/x86).
+
Ainsi nous recommendons aux gens de travailler avec Indy10 autant que possible.
  
Therefore we recommend people to work with 10 as much as possible.
+
(Pour Indy9, vous pourriez avoir besoin de retirer la surcharge de la méthode tmemorystream.setsize (Marcov: ???) pour que les composants Telnet fonctionnent,  mais Indy9 n'a pas été testé depuis longtemps)
 
   
 
   
(For indy9, you might need to remove the overriding of tmemorystream.setsize method (Marcov: ???)  to get telnet components working, but Indy9 hasn't been tested in a while)
+
Le portage is honnêtement stable, et JP Mugaas a fait beaucoup pour améliorer la qualité de la version, un ensemble de makefiles compris.
 
 
The port is fairly stable, and JP Mugaas has done a great deal to improve the quality of the release, a set of makefiles inclusive
 
  
 
=== Téléchargements / Liens ===
 
=== Téléchargements / Liens ===
  
Current snapshots (for die hards only) are at
+
Instantanés (snapshots) actuels sont là:
 
*  Indy9:  
 
*  Indy9:  
** [http://www.stack.nl/~marcov/indy/indy9.zip Indy9, includes demos] and
+
** [http://www.stack.nl/~marcov/indy/indy9.zip Indy9, incluant des démos] et
 
* Indy10:
 
* Indy10:
** converted Indy10 demos : [http://www.stack.nl/~marcov/demo10.zip converted Indy10 demos]  
+
** Démos Indy10 converties : [http://www.stack.nl/~marcov/demo10.zip démos Indy10 converties]  
** [http://www.indyproject.org Indy 10 website] Recently, this archive started to include demos too.
+
** [http://www.indyproject.org Indy 10 website] Récemment (NdT: référence chronologique manquante) cette archive commençait à intégrer cette démo aussi.
  
 
=== Ce qui marche, ce qui ne marche pas ===
 
=== Ce qui marche, ce qui ne marche pas ===
  
 
'''Indy9''':
 
'''Indy9''':
* Windows should largely work. Lots of demos ported.
+
* Devrait fonctionner largement sur Windows. Beaucoup de démos sont portées.
* Linux not or barely. No hope at non Linux/x86 (non-Kylix) targets.
+
* Pas ou peu sur Linux. Aucun espoir sur les cibles non Linuxw/x86 (non Kylix).
  
 
'''Indy10''':
 
'''Indy10''':
* Windows and Unix: clients work and servers should work fine in principle.
+
* Windows et Unix: Les clients fonctionnent et les serveurs devraient bien marcher en principe.
* The main work for native Unix RTL done. Servers Clients seem to work with FreeBSD and OS X
+
* Le principal travail pour la RTL Unix native est fait. Les serveurs et clients semblent fonctionner avec FreeBSD et OS X.
  
All: secure versions not tested yet.
+
Tous: les versions sécurisées ne sont pas encore testées.
  
 
=== Plans à court terme ===
 
=== Plans à court terme ===
  
* Convert demos to demonstrate/test workings.  
+
* Convertir les démos pour démontrer/tester le fonctionnement.  
* Fix bugs and enter them back into FPC or Indy RCS.
+
* Fixations des bugs à réinjecter dans le [https://fr.wikipedia.org/wiki/Logiciel_de_gestion_de_versions RCS] FPC ou Indy.
  
 
=== Problèmes ===
 
=== Problèmes ===
 
+
* Indy9 et Indy10 s'excluent mutuellement, ce qui provoque des problèmes de déploiement, même la valeur par défaut est un problème
* Indy9 and Indy10 are mutually exclusive, which causes problems for deployment, even the default is a problem:
+
** Indy9 est plus utilisé et éprouvé dans l'industrie.
** Indy9 is more used and proven in the industry.
+
** Indy10 est plus portable et à meilleur long terme. Cependant, l'assimilation semble faible et il n'y a plus beaucoup de mouvement à Indy non plus.
** Indy10 is more portable, and better long term. However uptake seems to be low, and there is not much movement at Indy anymore.
+
* Comment déployer ? Parties revenant à Lazarus et celle revenant à FPC.
* How to deploy? Parts belong to Lazarus, parts to FPC.
+
* Beaucoup de paquets et de démos ont des chemins d'accès dedans. Comment les fixer centralement de façon à ce qu'un utilisateur "profane" puisse les construire.
* Lot of pkgs and demos have paths in them. How to centrally fix them so that inexperienced users can build them?
+
* Problèmes liés à Lazarus:
* Lazarus problems
+
** Problèmes de transaprence des icônes.
** Transparency problems of icons
+
** La palette de composants ne défile pas, si vous posez beaucoup de composants dans un onglet, ils ne sont pas sélectionnables. '''Contournement implémenté''' JP Mugaas les a séparés en clients Indy A-M et N-Z etc. De plus, pendant ce temps, Lazarus est passé à deux rangées de composants par onglet.
** component tabs don't scroll, if you put a lot of components in one tab, they are not selectable. '''workaround implemented''': JP Mugaas separated them into Indy clients A-M and N-Z etc. Also, meanwhile Lazarus changed to two rows of components per tab.
+
* Les démos Indy (et particulièrement celles d'Indy10) ne sont pas adaptées pour un usage multi-plateforme. Leur installation est terriblement liée à Windows, avec des espaces dans les chemins d'accès, des répertoires profondément imbriqués (deep nested dirs) et des charges inutiles (C# code). Un petit ensemble de démonstrations devra être créé.
* Indy demos (specially Indy10's) are not very suitable for multiplatform usage. Their setup is awfully windows specific, with spaces in paths, deep nested dirs, and useless baggage (C# code). A short working set of demos will have to be created.
 
  
 
=== Bugs ===
 
=== Bugs ===
  
* Indy10 servers didn't work before due to an exception occurring during startup, which shut everything down. You need FPC 2.2(.0) or later to fix this (pthread_kill problem). This probably also affects Mac OS X.
+
* Les serveurs Indy10 ne fonctionnaient pas avant du fait d'une exception survenant durant le démarrage, ce qui arrêtait tout. Vous devez avoir FPC 2.2(.0) ou postérieur pour corriger ceci (problème pthread_kill). Cela affecte sans doute aussi Mac OS X.
  
* During demo conversion, the bindings property is often wrongly converted. This can result in strange errors, specially because Indy seems to bind to the same port using both IPV4 and IPV6 at the same time.
+
* Pendant la conversion de la démo, la propriété de liaison est souvent mal convertie. Cela peut amener à des erreurs étranges, spécialement parce Indy semble lier le même port utilisant ensemble IPV4 et IPV6 en même temps.
  
Ubuntu 10.04 + Lazarus 0.9.28 + Indy 10(Server Component) -> launch & do nothing (just crash)
+
Ubuntu 10.04 + Lazarus 0.9.28 + Indy 10(Server Component) -> lancé, ne fait rien à part se planter.
  
Solution (bruce0829@yahoo.com.tw collect and organize data):  
+
Solution (bruce0829@yahoo.com.tw collecter et organiser les données):  
  
(1).Lazarus Main menu -> Project -> Compiler Options -> Other Page , add the "-dUseCThreads" parameter.
+
(1).Menu principal de Lazarus -> Projet -> Options du projet -> Options du compilateur -> Options personnalisées, ajouter le paramètre "-dUseCThreads".
(2).force the IdTCPServer to work in Id_IPV4 mode.
+
</br>(2).Forcer le IdTCPServer à travailler en mode Id_IPV4.
  
 
<syntaxhighlight lang=pascal>
 
<syntaxhighlight lang=pascal>
Line 88: Line 91:
 
end;</syntaxhighlight>
 
end;</syntaxhighlight>
  
(3)use TIdSync to Control your GUI in IdTCPServer's OnExecute() even.
+
(3)Utilise TIdSync pour contrôler votre interface utilisateur dans l'événement IdTCPServer's OnExecute().
  
 
=== Comment installer ===
 
=== Comment installer ===
  
[[user:Matthijs|Matthijs]]: So it is not perfect yet, but you want to try it. Here is how you install it in Lazarus.
+
[[user:Matthijs|Matthijs]]: Ce n'est donc pas encore parfait, mais vous voulez l'essayer. Voici comment l'installer dans Lazarus.
  
* Open and compile indysystemlaz.lpk
+
* Ouvrir et compiler indysystemlaz.lpk
* Open and compile indycorelaz.lpk
+
* Ouvrir et compiler indycorelaz.lpk
* Open and compile indyprotocolslaz.lpk
+
* Ouvrir et compiler indyprotocolslaz.lpk
* Open, compile and install dclindycorelaz.lpk
+
* Ouvrir et compiler et installer dclindycorelaz.lpk
* Open, compile and install dclindyprotocolslaz.lpk
+
* Ouvrir et compiler et installer dclindyprotocolslaz.lpk
  
Then rebuild Lazarus and you will see a 15 tab's with Indy components.
+
Enuite reconstruire Lazarus et vous verrez une palette de 15 onglets (Ndt: traduction non sûre) avec les composants Indy.
  
 
=== Comment installer sur Debian/Ubuntu ===
 
=== Comment installer sur Debian/Ubuntu ===
Line 111: Line 114:
 
* # cd ..
 
* # cd ..
 
* # sudo dpkg -i *.deb
 
* # sudo dpkg -i *.deb
* install package indylaz.lpk in lazarus
+
* installer le paquet indylaz.lpk dans lazarus
  
 
=== Comment installer [2] ===
 
=== Comment installer [2] ===
  
If you couldn't install Indy for Lazarus with tips above, you can try this...
+
Si vous ne pouvez pas installer Indy pour Lazarus avec les conseils ci-dessus, vous pouvez essayer ceci ...
  
From [http://br.groups.yahoo.com/group/lazarus-brasil/ Yahoo! Brazil, Lazarus Group] (User Everaldo)
+
De [http://br.groups.yahoo.com/group/lazarus-brasil/ Yahoo! Brazil, Lazarus Group] (Utilisateur Everaldo)
  
Version installed on Lazarus 0.9.24 using component indy-10.2.0.1.
+
Version installée sur Lazarus 0.9.24 utilisant les composants indy-10.2.0.1.
  
* Unzip the component from file tar.gz (must be this file, the "zip file" does not work) in directory $(LazarusDir)\components;
+
* Dézipper le composant depuis le fichier tar.gz (cela doit être ce fichier, le fichier zip ne fonctionne pas) dans le répertoire $(LazarusDir)\components;
* Go to directory $(LazarusDir)\components\indy-10.2.0.1\ and to create inside them a directory named "saved";
+
* Aller dans le répertoire $(LazarusDir)\components\indy-10.2.0.1\ pour créer dedans un répertoire nommé "saved";
* Copy the content of the directory $(LazarusDir)\components\indy-10.2.0.1\lazarus\ to directory "saved" created above;
+
* Copier le contenu du répertoire $(LazarusDir)\components\indy-10.2.0.1\lazarus\ vers le répertoire créé ci-dessus;
* Copy the content of directory $(LazarusDir)\components\indy-10.2.0.1\fpc\ to directory $(LazarusDir)\components\indy-10.2.0.1\lazarus, and rewrite all files, ok;
+
* Copier le contenu du répertoire $(LazarusDir)\components\indy-10.2.0.1\fpc\ vers le répertoire $(LazarusDir)\components\indy-10.2.0.1\lazarus, et écraser tous les fichiers, ok;
* Get the content of directory "saved" and copy inside of $(LazarusDir)\components\indy-10.2.0.1\lazarus and you can delete "saved" directory now;
+
* Prendre le contenu du répertoire "saved" et le copier dans $(LazarusDir)\components\indy-10.2.0.1\lazarus, vous pouvez alors supprimer le contenu du répertorie "saved";
* Install the package laz.lpk (available in $(LazarusDir)\components\indy-10.2.0.1\lazarus\indy) of conventional way.
+
* Installer le paquet laz.lpk (disponible dans $(LazarusDir)\components\indy-10.2.0.1\lazarus\indy) de manière habituelle.
  
On LINUX the path is: /usr/lib/lazarus/components/indy-10.2.0.1/
+
Sur LINUX le chemin d'accès est : /usr/lib/lazarus/components/indy-10.2.0.1/
  
 
=== Comment installer [3] Windows et Debian Linux, Indy 10.5.8.0 et versions postérieures ===
 
=== Comment installer [3] Windows et Debian Linux, Indy 10.5.8.0 et versions postérieures ===
  
* Need working Lazarus (and FPC) for this
+
* Nécessite que Lazarus (et FPC) soit fonctionnel pour ceci.
* Download from http://www.indyproject.org/Sockets/Download/DevSnapshot.EN.aspx. Or from the alternate web site for the updated and current versions: http://indy.fulgan.com/
+
* Télécharger depuis [http://www.indyproject.org/Sockets/Download/DevSnapshot.EN.aspx] ou depuis le site Web alternatif pour la version mise à jour et courante: [http://indy.fulgan.com/].
* unpack into a directory
+
* Décompresser dans un répertoire.
* copy the *.pas, *.lrs and *.inc of the \Lib\System, \Lib\Core, and \Lib\Protocols subdirectories into a new directory of your choosing
+
* Copier les *.pas, *.lrs and *.inc des sous-répertoires \Lib\System, \Lib\Core et \Lib\Protocols dans un nouveau répertoire de votre choix.
* copy the indylaz.lpk in the \Lib directory to the directory you created above
+
* Copier le indylaz.lpk dans le répertoire \Lib dans le répertoire que vous avez créé ci-dessus.
* from within Lazarus do a Package -> Open package file, open the indylaz.lpk
+
* A partir de Lazarus, faire Paquet -> Ouvrir un fichier de paquet (.lpk)... pour ouvrir le indylaz.lpk.
* in the Package Options dialog, add the path to the directory you created above to the "Unit" field.
+
* Dans la boîte de dialogue Options du paquet, ajouter le chemin d'accès au répertoire que vous avez créé ci-dessus dans le champ "Unit".
* compile then install (will rebuild Lazarus). EDIT: Currently, due to a know bug in FPC, you must compile the Indy package TWICE before installing it.
+
* Compiler puis installer (ce qui reconstruira Lazarus). EDIT: Actuellement, à cause d'un bug dans FPC, vous devez recompiler le paquet Indy DEUX FOIS avant de l'installer.
  
In order to write & compile Indy10 applications, you need to put the path to the Indy directory in the "Other Unit files" textbox of every project that you write. You'll find "Other Unit files" under Project Options -> Compiler Options -> Paths.
+
En vue d'écrire et compiler des applications Indy10, vous avez besoin de mettre le chemin d'accès vers le répertoire d'Indy dans champ "Autres sources" de chaque projet que vous écrivez. Vous trouverez "Autres sources" sous Options du projet ... -> Options du compilateur -> Chemins.
  
 
=== Comment installer (confirmé) sur Windows - Indy 10.2.03 ===
 
=== Comment installer (confirmé) sur Windows - Indy 10.2.03 ===
  
/* How to install [3] Windows, Indy 10.5.8.0 and above */  
+
/* Comment installer [3] Windows et Debian Linux, Indy 10.5.8.0 et versions postérieures */ pour beaucoup d'utilisateurs, je suis sûr que l'information donnée ci-dessus ne marchera pas, ou sera quelques peu confus étant donné les différences entre les versions et les explications inconsistantes.
For a lot of users, I'm sure that the information given above won't work, or will be somewhat confusing given the differences between versions and inconsistent explanations.
+
:Le site web vous indique de télécharger la dernière version depuis la page des instantanés (snapshots).
:The website points you to download the latest version from the snapshots page.
+
:Ce wiki vous dit de copier beaucoup de fichiers dans des répertoires.
:This wiki tells you to copy a lot of files over into directories.  
+
:Pour moi(NdT: Qui?), aucun n'a fonctionné et cela a fini par gâcher mes installations de Lazarus.
:For me, neither worked, and ended up making a mess of my Lazarus installations.
+
# Premièrement, la page à partir de laquelle je récupérerais est [http://www.indyproject.org/Sockets/fpc/index.EN.aspx ici]. Les autres sites que j'ai essayé ont des problèmes avec les fichiers dans les archives.
# Firstly, the page I would retrieve this from is [http://www.indyproject.org/Sockets/fpc/index.EN.aspx here]. Other sites I tried had problems with some files inside the archive.  
+
# Quand vous ouvrez l'archive ci-dessus, vous verrez qu'il y a deux répertoires: "fpc" et "lazarus".
# When you open up the archive above, you will see there are folders: "fpc" and "lazarus".  
+
## Vous pouvez copier le contenu de "fpc" dans : LAZARUS_DIR\fpc\2.6.0\source\packages\indylaz si vous voulez des choses propres et nettes.
## You can copy the contents of "fpc" into: LAZARUS_DIR\fpc\2.6.0\source\packages\indylaz if you want to have things neat and tidy.  
+
## Le répertoire "Lazarus", vous copier dans LAZARUS_DIR\components\indylaz.
## The "lazarus" folder, you copy into LAZARUS_DIR\components\indylaz
+
## Avec ces deux actions, assurez vous qu'il n'y a pas de sous-répertoire dans les répertoires donnés. i.e. LAZARUS_DIR\components\indylaz\lazarus\
## With both of these, make sure that there isn't a sub-directory inside the folders given. i.e. LAZARUS_DIR\components\indylaz\lazarus\
+
# Aller dans Lazarus puis sur "Paquet" -> "Ouvrir un fichier de paquet..." et sélectionner le "indylaz.lpk" dans le répertoire LAZARUS_DIR\components\indylaz.
# Go into Lazarus and go to "Package" -> "Open package file" and point it to the "indylaz.lpk" inside the LAZARUS_DIR\components\indylaz directory.
+
# Une fois que le paquet se charge dans votre projet, cliquer sur le bouton "Options", qui ressemble à un paquet cadeau avec un pignon dessus.  
# Once the package loads inside your project, click on the "options" button, which resembles an image of a parcel with a cog next to it.  
+
# Cliquer les "Options du compilateur" à gauche puis cliquer sur le bouton "..." à côté du champ "Autres fichiers unités (-Fu)"  
# Click the "Compiler Options" on the left-hand side and Click on the ".." button next to "Other unit files (-Fu) (delimiter is semicolon)".
+
Sélectionner les répertoires "fpc" puis "Lazarus" créés au dessus et cliquer Ok.
Select the "fpc" then "lazarus" folders you created above and click OK.
+
Lazare va trier le chemin relatif pour vous. Ne pas le changer.
Lazarus will sort out the relative path for you. Don't change it.  
+
# Cliquez sur OK et compiler puis déverser votre bile de colère vers la personne qui vous a mal orienté avec les instructions précédentes, inutiles.
# Click OK and compile and then direct angry bile towards the individual who has steered you wrong with the previous, unhelpful, instructions.
 
  
 
=== Problème sur Windows 64 bits ===
 
=== Problème sur Windows 64 bits ===
  
On Windows 64 bits, the compilation of the archive mentioned above will not work.  
+
Sur Windows 64-bit, la compilation de l'archive mentionnée au-dessus ne fonctionnera pas. Ceci peut être corrigé en éditant IdAntiFreeze, remplaçant :
This can be fixed by editing IdAntiFreeze.pas, replacing :
 
 
 
 
<syntaxhighlight lang=pascal>
 
<syntaxhighlight lang=pascal>
 
  type
 
  type
Line 173: Line 173:
 
     procedure Process; override;
 
     procedure Process; override;
 
   end;  
 
   end;  
by
+
</syntaxhighlight>
 +
par:
 +
<syntaxhighlight lang=pascal>
 
  type
 
  type
 
   TIdAntiFreeze = class(TIdAntiFreezeBase)
 
   TIdAntiFreeze = class(TIdAntiFreezeBase)
Line 185: Line 187:
 
=== Problème de fuite de mémoire ===
 
=== Problème de fuite de mémoire ===
  
If you have memory leaks in your Indy application, that is because you use '''IdStack''' or '''IdThread''' units, or components that depend on them. It is intended by design, and in Delphi it is solved by registering such leaks with memory manager. Such feature is not yet available with FreePascal, but fortunately you can fix it pretty easy. In file '''IdCompilerDefines.inc''' you should replace this line:
+
Si vous avez des fuites de mémoire dans votre application Indy, c'est parce que vous utilisez les unités '''IdStack''' ou '''IdThread''', ou des composants dépendant d'eux. C'est voulu dans la conception, dans  Delphi cela est résolu en enregistrant de telles fuites avec le gestionnaire de mémoire. De telles fonctionnalités ne sont pas encore disponibles dans Free Pascal, mais heureusement vous pouvez la corriger de manière assez simple. Dans le fichier '''IdCompilerDefines.inc''', vous devriez remplacer cette ligne :
  
 
<syntaxhighlight lang=pascal>
 
<syntaxhighlight lang=pascal>
Line 191: Line 193:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
with this:
+
par celle-ci:
  
 
<syntaxhighlight lang=pascal>
 
<syntaxhighlight lang=pascal>
Line 197: Line 199:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
and recompile Lazarus and Indy. Leaks are gone, but you should read this define related warnings in '''IdStack.pas''' and '''IdThread.pas''' units in order to avoid potential GPF. Here is the [https://forum.lazarus.freepascal.org/index.php/topic,39257.msg268869.html#msg268869 forum discussion] where this fix was mentioned by one of the Indy developers.
+
et recompiler Lazarus et Indy. Les fuites sont parties mais vous devriez lire ces avertissements liés au define dans les unités '''IdStack.pas''' et '''IdThread.pas''' pour éviter des potentielles fautes de protection générale. Voici le [https://forum.lazarus.freepascal.org/index.php/topic,39257.msg268869.html#msg268869 fil de discussion de forum] où la correction était mentionnée par l'un des développeurs Indy.
  
 
==Liens externes==
 
==Liens externes==
  
 
* [http://www.indyproject.org Le site web officiel du projet Indy]
 
* [http://www.indyproject.org Le site web officiel du projet Indy]

Latest revision as of 14:56, 29 April 2020

Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) 한국어 (ko)

Notes de traduction E-ric

  • Les indications chronologiques originales étant relatives, leur validité actuelle l'est tout autant.
  • La page originale contient des avis personnels qui ont été retranscrits.
  • Aucun contrôle lié aux versions des bibliothèques n'a été fait, il est donc possible que les modes opératoires des installations aient changé.

Indy pour Lazarus

Une nouvelle tenative de conversion d'Indy a été entreprise par l'équipe du noyau d'Indy. Marco van de Voort, développeur FPC, travaille avec le coeur d'Indy pour que FPC/Lazarus fonctionne pleinement avec Indy. En particulier, JP Mugaas d'Indy a fait pas mal de bon travail pour porter Indy10 vers FPC. La plupart du backend unixrtl est de son fait.

Actuellement, Indy10 fonctionne presque complètement et l'utilisabilité pour l'utilisateur final a été améliorée. Seuls des sujets tels que OpenSSL et la compression pourraient demander des connaissances supplémetaires. Le suport 64-bit n'est pas entièrement validé.

(Avis d'un contributeur) Conseil: Je ne suis pas très intéressé(e) par le support de la partie Kylix d'Indy. (Tout ce qui utilise l'unité libc). Je l'ai portée uniquement comme une étape vers une RTL native d'Unix utilisant les apps Indy.

Exigences

Actuellement, FPC 2.0.4 (NdT: aucun vérification faite pour les versions 3.x) est vraiment près d'être capable d'utiliser Indy dans tous ses aspects, excepté pour le bug de serveur sur FreeBSD/Mac OS X (qui nécessite 2.1.1)

Puisque Indy10 fonctionne maintenant sur toutes les cibles majeures, nous nous concentrons sur cette version. Alors que la conversion vers Indy9 semble plus simple, il faut garder à l'esprit qu'elle ne tourne que sous Win32 (et pourrait être théoriquement portée sur Linux/x86).

Ainsi nous recommendons aux gens de travailler avec Indy10 autant que possible.

(Pour Indy9, vous pourriez avoir besoin de retirer la surcharge de la méthode tmemorystream.setsize (Marcov: ???) pour que les composants Telnet fonctionnent, mais Indy9 n'a pas été testé depuis longtemps)

Le portage is honnêtement stable, et JP Mugaas a fait beaucoup pour améliorer la qualité de la version, un ensemble de makefiles compris.

Téléchargements / Liens

Instantanés (snapshots) actuels sont là:

Ce qui marche, ce qui ne marche pas

Indy9:

  • Devrait fonctionner largement sur Windows. Beaucoup de démos sont portées.
  • Pas ou peu sur Linux. Aucun espoir sur les cibles non Linuxw/x86 (non Kylix).

Indy10:

  • Windows et Unix: Les clients fonctionnent et les serveurs devraient bien marcher en principe.
  • Le principal travail pour la RTL Unix native est fait. Les serveurs et clients semblent fonctionner avec FreeBSD et OS X.

Tous: les versions sécurisées ne sont pas encore testées.

Plans à court terme

  • Convertir les démos pour démontrer/tester le fonctionnement.
  • Fixations des bugs à réinjecter dans le RCS FPC ou Indy.

Problèmes

  • Indy9 et Indy10 s'excluent mutuellement, ce qui provoque des problèmes de déploiement, même la valeur par défaut est un problème
    • Indy9 est plus utilisé et éprouvé dans l'industrie.
    • Indy10 est plus portable et à meilleur long terme. Cependant, l'assimilation semble faible et il n'y a plus beaucoup de mouvement à Indy non plus.
  • Comment déployer ? Parties revenant à Lazarus et celle revenant à FPC.
  • Beaucoup de paquets et de démos ont des chemins d'accès dedans. Comment les fixer centralement de façon à ce qu'un utilisateur "profane" puisse les construire.
  • Problèmes liés à Lazarus:
    • Problèmes de transaprence des icônes.
    • La palette de composants ne défile pas, si vous posez beaucoup de composants dans un onglet, ils ne sont pas sélectionnables. Contournement implémenté JP Mugaas les a séparés en clients Indy A-M et N-Z etc. De plus, pendant ce temps, Lazarus est passé à deux rangées de composants par onglet.
  • Les démos Indy (et particulièrement celles d'Indy10) ne sont pas adaptées pour un usage multi-plateforme. Leur installation est terriblement liée à Windows, avec des espaces dans les chemins d'accès, des répertoires profondément imbriqués (deep nested dirs) et des charges inutiles (C# code). Un petit ensemble de démonstrations devra être créé.

Bugs

  • Les serveurs Indy10 ne fonctionnaient pas avant du fait d'une exception survenant durant le démarrage, ce qui arrêtait tout. Vous devez avoir FPC 2.2(.0) ou postérieur pour corriger ceci (problème pthread_kill). Cela affecte sans doute aussi Mac OS X.
  • Pendant la conversion de la démo, la propriété de liaison est souvent mal convertie. Cela peut amener à des erreurs étranges, spécialement parce Indy semble lier le même port utilisant ensemble IPV4 et IPV6 en même temps.

Ubuntu 10.04 + Lazarus 0.9.28 + Indy 10(Server Component) -> lancé, ne fait rien à part se planter.

Solution (bruce0829@yahoo.com.tw collecter et organiser les données):

(1).Menu principal de Lazarus -> Projet -> Options du projet -> Options du compilateur -> Options personnalisées, ajouter le paramètre "-dUseCThreads".
(2).Forcer le IdTCPServer à travailler en mode Id_IPV4.

procedure TForm1.FormActivate(Sender: TObject);
var
  Binding: TIdSocketHandle;
begin 
  //uses idGlobal
  //explicitly adding a Binding object prevents TIdTCPServer
  //from creating its own default IPv4 and IPv6 Binding objects
  //on the same listening IP/Port pair...
  Binding := IdTCPServer1.Bindings.Add;
  Binding.IPVersion := Id_IPv4; //optional: forces the Binding to work in Id_IPV4 mode.
  Binding.IP := '127.0.0.1';
  Binding.Port := 6501; //customization 
  IdTCPServer1.Active := True;  
end;

(3)Utilise TIdSync pour contrôler votre interface utilisateur dans l'événement IdTCPServer's OnExecute().

Comment installer

Matthijs: Ce n'est donc pas encore parfait, mais vous voulez l'essayer. Voici comment l'installer dans Lazarus.

  • Ouvrir et compiler indysystemlaz.lpk
  • Ouvrir et compiler indycorelaz.lpk
  • Ouvrir et compiler indyprotocolslaz.lpk
  • Ouvrir et compiler et installer dclindycorelaz.lpk
  • Ouvrir et compiler et installer dclindyprotocolslaz.lpk

Enuite reconstruire Lazarus et vous verrez une palette de 15 onglets (Ndt: traduction non sûre) avec les composants Indy.

Comment installer sur Debian/Ubuntu

  • # cd indy-10.2.0.1/fpc
  • # chmod +x debian/rules
  • # touch README
  • # sudo apt-get install fakeroot
  • # dpkg-buildpackage -rfakeroot -uc
  • # cd ..
  • # sudo dpkg -i *.deb
  • installer le paquet indylaz.lpk dans lazarus

Comment installer [2]

Si vous ne pouvez pas installer Indy pour Lazarus avec les conseils ci-dessus, vous pouvez essayer ceci ...

De Yahoo! Brazil, Lazarus Group (Utilisateur Everaldo)

Version installée sur Lazarus 0.9.24 utilisant les composants indy-10.2.0.1.

  • Dézipper le composant depuis le fichier tar.gz (cela doit être ce fichier, le fichier zip ne fonctionne pas) dans le répertoire $(LazarusDir)\components;
  • Aller dans le répertoire $(LazarusDir)\components\indy-10.2.0.1\ pour créer dedans un répertoire nommé "saved";
  • Copier le contenu du répertoire $(LazarusDir)\components\indy-10.2.0.1\lazarus\ vers le répertoire créé ci-dessus;
  • Copier le contenu du répertoire $(LazarusDir)\components\indy-10.2.0.1\fpc\ vers le répertoire $(LazarusDir)\components\indy-10.2.0.1\lazarus, et écraser tous les fichiers, ok;
  • Prendre le contenu du répertoire "saved" et le copier dans $(LazarusDir)\components\indy-10.2.0.1\lazarus, vous pouvez alors supprimer le contenu du répertorie "saved";
  • Installer le paquet laz.lpk (disponible dans $(LazarusDir)\components\indy-10.2.0.1\lazarus\indy) de manière habituelle.

Sur LINUX le chemin d'accès est : /usr/lib/lazarus/components/indy-10.2.0.1/

Comment installer [3] Windows et Debian Linux, Indy 10.5.8.0 et versions postérieures

  • Nécessite que Lazarus (et FPC) soit fonctionnel pour ceci.
  • Télécharger depuis [1] ou depuis le site Web alternatif pour la version mise à jour et courante: [2].
  • Décompresser dans un répertoire.
  • Copier les *.pas, *.lrs and *.inc des sous-répertoires \Lib\System, \Lib\Core et \Lib\Protocols dans un nouveau répertoire de votre choix.
  • Copier le indylaz.lpk dans le répertoire \Lib dans le répertoire que vous avez créé ci-dessus.
  • A partir de Lazarus, faire Paquet -> Ouvrir un fichier de paquet (.lpk)... pour ouvrir le indylaz.lpk.
  • Dans la boîte de dialogue Options du paquet, ajouter le chemin d'accès au répertoire que vous avez créé ci-dessus dans le champ "Unit".
  • Compiler puis installer (ce qui reconstruira Lazarus). EDIT: Actuellement, à cause d'un bug dans FPC, vous devez recompiler le paquet Indy DEUX FOIS avant de l'installer.

En vue d'écrire et compiler des applications Indy10, vous avez besoin de mettre le chemin d'accès vers le répertoire d'Indy dans champ "Autres sources" de chaque projet que vous écrivez. Vous trouverez "Autres sources" sous Options du projet ... -> Options du compilateur -> Chemins.

Comment installer (confirmé) sur Windows - Indy 10.2.03

/* Comment installer [3] Windows et Debian Linux, Indy 10.5.8.0 et versions postérieures */ pour beaucoup d'utilisateurs, je suis sûr que l'information donnée ci-dessus ne marchera pas, ou sera quelques peu confus étant donné les différences entre les versions et les explications inconsistantes.

Le site web vous indique de télécharger la dernière version depuis la page des instantanés (snapshots).
Ce wiki vous dit de copier beaucoup de fichiers dans des répertoires.
Pour moi(NdT: Qui?), aucun n'a fonctionné et cela a fini par gâcher mes installations de Lazarus.
  1. Premièrement, la page à partir de laquelle je récupérerais est ici. Les autres sites que j'ai essayé ont des problèmes avec les fichiers dans les archives.
  2. Quand vous ouvrez l'archive ci-dessus, vous verrez qu'il y a deux répertoires: "fpc" et "lazarus".
    1. Vous pouvez copier le contenu de "fpc" dans : LAZARUS_DIR\fpc\2.6.0\source\packages\indylaz si vous voulez des choses propres et nettes.
    2. Le répertoire "Lazarus", vous copier dans LAZARUS_DIR\components\indylaz.
    3. Avec ces deux actions, assurez vous qu'il n'y a pas de sous-répertoire dans les répertoires donnés. i.e. LAZARUS_DIR\components\indylaz\lazarus\
  3. Aller dans Lazarus puis sur "Paquet" -> "Ouvrir un fichier de paquet..." et sélectionner le "indylaz.lpk" dans le répertoire LAZARUS_DIR\components\indylaz.
  4. Une fois que le paquet se charge dans votre projet, cliquer sur le bouton "Options", qui ressemble à un paquet cadeau avec un pignon dessus.
  5. Cliquer les "Options du compilateur" à gauche puis cliquer sur le bouton "..." à côté du champ "Autres fichiers unités (-Fu)"

Sélectionner les répertoires "fpc" puis "Lazarus" créés au dessus et cliquer Ok. Lazare va trier le chemin relatif pour vous. Ne pas le changer.

  1. Cliquez sur OK et compiler puis déverser votre bile de colère vers la personne qui vous a mal orienté avec les instructions précédentes, inutiles.

Problème sur Windows 64 bits

Sur Windows 64-bit, la compilation de l'archive mentionnée au-dessus ne fonctionnera pas. Ceci peut être corrigé en éditant IdAntiFreeze, remplaçant :

 type
   TIdAntiFreeze = class(TIdAntiFreezeBase)
   public
     procedure Process; override;
   end;

par:

 type
   TIdAntiFreeze = class(TIdAntiFreezeBase)
   public
     {$IFDEF WIN32}
     procedure Process; override;
     {$ENDIF}
   end;

Problème de fuite de mémoire

Si vous avez des fuites de mémoire dans votre application Indy, c'est parce que vous utilisez les unités IdStack ou IdThread, ou des composants dépendant d'eux. C'est voulu dans la conception, dans Delphi cela est résolu en enregistrant de telles fuites avec le gestionnaire de mémoire. De telles fonctionnalités ne sont pas encore disponibles dans Free Pascal, mais heureusement vous pouvez la corriger de manière assez simple. Dans le fichier IdCompilerDefines.inc, vous devriez remplacer cette ligne :

 {.$DEFINE FREE_ON_FINAL}

par celle-ci:

 {$DEFINE FREE_ON_FINAL}

et recompiler Lazarus et Indy. Les fuites sont parties mais vous devriez lire ces avertissements liés au define dans les unités IdStack.pas et IdThread.pas pour éviter des potentielles fautes de protection générale. Voici le fil de discussion de forum où la correction était mentionnée par l'un des développeurs Indy.

Liens externes