DES THREADS EN 1 CLIN D'OEIL !

Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 - 23 févr. 2009 à 04:11
blueperfect Messages postés 234 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 21 novembre 2013 - 14 mars 2009 à 17:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/49331-des-threads-en-1-clin-d-oeil

blueperfect Messages postés 234 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 21 novembre 2013
14 mars 2009 à 17:09
ça roule, et c'est pour bientôt...
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
14 mars 2009 à 17:07
Ben tu attends qu'ils soient fonctionnels ... y'a pas le feu ...

Cordialement, Bacterius !
blueperfect Messages postés 234 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 21 novembre 2013
14 mars 2009 à 17:01
Je ne veux pas publier mes composants en test !
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
14 mars 2009 à 16:59
Si tu veux publier quelque chose tu publies tout ... ici c'est un site de partage.

Cordialement, Bacterius !
blueperfect Messages postés 234 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 21 novembre 2013
14 mars 2009 à 16:58
Je vais voir ce que je peux publier...
Utilisateur anonyme
14 mars 2009 à 11:03
non pas de BPL ici
un BPL n'est pas différent d'un Exe ou d'une Dll c'est du code compilé et donc par ce fait interdit !!!
blueperfect Messages postés 234 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 21 novembre 2013
4 mars 2009 à 20:27
Peux-t-on ne poster que les BPL ?
blueperfect Messages postés 234 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 21 novembre 2013
3 mars 2009 à 19:11
En fait, le Timer dont je parle ne ferais que simuler le PeekMessage du WinMain, mais au niveau du composant,. Tu peux bien sûr utiliser un OnIdle de TApplicationMessages...

Qui est GrandVizir ?

>> chaque source sur laquelle tu passes, tu glisses un message type "carte de
>> visite",
Je suis très timide...

>> si tu vois ce que je veux dire
J'i surtout une floppée de fonctions et d'objets dépendants les uns des autres, je ne vois pas comment les partager...

Actuellement, j'ai à ma disposition une TPaintBox de mon cru, qui rassemble dans des propriétés des collections de Timer (avec évènements associés) et de Bitmaps (avec évènements associés), ainsi que des mises en formes de toutes sortes...

Je ne peux publier un composant sans les autres...

DH
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
3 mars 2009 à 19:03
"avec un TTimer"
Donc toi tu mettrais un TTimer dans le composant ... mais là aussi tu perds tout l'intêret du TThread. Je vais te raconter une histoire :

Un gars est en train d'essayer de verrouiller un coffre-fort.
Un gars arrive : "pourquoi tu verrouilles le coffre-fort ? Je vais te montrer comment faire."
Le même gars enleve le verrou de ce coffre-fort, le met dans un autre coffre-fort et ferme ce dernier à clé.

Et voilà, en fin de compte c'est plus dur d'aller chercher le contenu du premier coffre fort et c'est stupide.

Les TTimer sont des pompes à CPU, alors associé à un thread ...

"* Si tu fais "dormir" ton thread, quel intérête de ne pas utiliser un TTimer ?"

C'est vrai, je te le concède, j'aurai pu utiliser une fonction de "pause non bloquante", le site en propose deux ou trois.

"* Le Application.ProcessMessages ne veut strictement rien dire, vu que le thread s'éxécute dans un autre contexte que celui de l'application..."

J'ai trouvé ça dans le tutorial de GrandVizir. Je suppose que GrandVizir a une bonne explication à la présence de cette ligne dans son tutorial, donc voilà.

Cordialement, Bacterius !

PS : je ne voudrais pas déclencher de conflit, mais puisque tu as tellement de bonnes idées pourquoi ne pas les proposer sur le site ? A chaque source sur laquelle tu passes, tu glisses un message type "carte de visite", si tu vois ce que je veux dire.
blueperfect Messages postés 234 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 21 novembre 2013
2 mars 2009 à 11:21
Je viens de reparcourir ton code :

procedure TMyThread.Execute; // Boucle du thread
begin
repeat // On répète l'execution du thread ...
Sleep(FInterval); // On attend l'intervalle demandé
Application.ProcessMessages; // On laisse l'application traiter ses messages
Synchronize(CentralControl); // On synchronise avec la méthode principale
until Terminated; // ... jusqu'à ce que le thread soit terminé
end;

* Si tu fais "dormir" ton thread, quel intérête de ne pas utiliser un TTimer ?
* Le Application.ProcessMessages ne veut strictement rien dire, vu que le thread s'éxécute dans un autre contexte que celui de l'application...

DH
blueperfect Messages postés 234 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 21 novembre 2013
2 mars 2009 à 11:12
En ce qui concerne la TTaskCollection, que j'évoquais dans les commentaires du début, il s'agit d'une gestion avancées de "travaux" du type Fiber...mais qui ce base sur un TTimer, où sur une gestion propre dans le Execute du Thread...

DH

PS : Il est dommage de ne pouvoir joindre de copie d'écran à nos commentaires, Monsieur le WebMaster...

DH
blueperfect Messages postés 234 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 21 novembre 2013
2 mars 2009 à 11:06
Je viens de downloader ton ZIP et de parcourir le source... Si je devais noter, je ne te donnerai que 5/20, malgré la qualité de ce dernier...

En voici les raisons :

Tu utilises un Thread, c'est à dire la capacité d'effectuer un traitement indépendant en parallèle sur ton PC !

Dès que tu appelles la fonction Synchronize, tu perds tout le bénéfice du Thread : cette méthode gèle ton thread jusqu'à basculer l'éxécution sur le thread dît "principal" de la VCL...et rebasculer à la fin de celle-ci... Ce qui revient à deux commutations de contexte (une avant, et une après) pour chaque appel à OnExecute...

Ceci dit, il n'y a pas de solution miracle, et l'utilisation du traitement parallèle est très délicate à appréhender...

Simplement, il faut le "penser" Objet, dans le sens où les données ne sont manipulées que par le Thread, et le composant ne devrait avoir accès qu'au résultat de ces données....

Ainsi, tu ne peux pas utiliser le gestionnaire d'évènement de cette manière (OnExecute)...

L'une des méthodes est la gestion d'une file de messages (un peu comme celle de Windows) propre à ton composant : le thread "Post" un message au compo (pas besoin de Synchronize), et le compo, avec un TTimer, traite les messages du thread... avec ce méchanisme, tu peux en toute sécurité utiliser toutes les données, sans te soucier du fameux basculement de contexte...

Le meilleur exemple est celui-ci :

- modélise des objets 3D
- à chaque objet, son propre thread...
- tu "attaches" une TPaintBox à chaque thread/objet
- chaque thread appellera, dès qu'un changement significatif survient dans ces données, Invalidate de la TPaintBox (Invalidate ne fait que poster WM_INVALIDATE avec le handle du control dans la file des messages de l'application), et c'est Windows qui ce charge du reste... Tes données sont mises à jour dans le thread, et pas besoin d'utiliser Synchronize...

DH
blueperfect Messages postés 234 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 21 novembre 2013
1 mars 2009 à 22:58
En, fait tu découvres l'art du multitâche...
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
26 févr. 2009 à 20:04
Prends du coca light, il paraît qu'il y a des fibres optiques confites dedans ...

Cordialement, Bacterius !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 févr. 2009 à 19:54
je ne sais pas si les sources d'indy 10 sont en clairs ('.pas' et non '.dcu') ou pas , mais il me semble qu'il utilise les Fibers, c'est d'ailleurs un des grands avantages (meilleure performance)...
Maintenant pour s'y retrouver la-dedans ... adieu le lightweight et bonjour l'indigestion !
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
26 févr. 2009 à 19:34
Oui, Nico.
C'était aussi les seuls liens que j'avais trouvés.
Et je trouvais que c'était léger (normal pour des 'lightweight threads' me diras-tu).
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
26 févr. 2009 à 19:26
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
26 févr. 2009 à 18:29
Oui. Et ça pourrait aussi reppésenter un Integer, si on veut.
Mais ici, ConvertThreadToFiber() par exemple, ne renvoie pas un type BOOL mais un pointeur vers un objet Fiber. Il nous faudra d'ailleurs effectuer un transtypage de la valeur renvoyée pour pouvoir l'exploiter.
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
26 févr. 2009 à 18:15
Mais un BOOL peut représenter un pointeur s'il s'agit d'un LongBool (2 mots en mémoire, 32 bits), mais sous forme d'adresse (convertir avec Ptr() ensuite) non ?

Cordialement, Bacterius !
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
26 févr. 2009 à 17:32
Et avec GetCurrentFiber() on a le compte. Que 6 fonctions! :)

Au fait, il me semble qu'il y a des erreurs dans cet article. Il est écrit que plusieurs fonctions renvoient un BOOL. Alors qu'en fait c'est un POINTER...
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
26 févr. 2009 à 17:04
J'avoue, j'ai cherché dans google je ne trouve que des offres de fibres optiques ...
J'ai quand même réussi à dégotter ce site :
http://conferences.codegear.com/article/32225

Il y a un petit article sur les fibers :

Fibers
Fibers are relatively new to Win32 operating systems and are only available on WinNT and above. They are sometimes referred as "lightweight threads" or "user-mode threads". Unlike threads, fibers must be scheduled by the application manually and are not visible by the kernel. Typically, fibers are used for porting from other operating systems where applications contained their own threading systems and did not want to rely on priority based scheduling.

Threads are capable of creating a collection of fibers. Since a fiber is not given a time-slice by the kernel, a fiber runs in the context of a thread.

A fiber, then, is an execution path in a thread. It has stack space, certain registers and whatever data is passed to the fiber upon creation.

At the time of this writing, there is no Delphi class that wraps the fiber APIs. Listed below are the fiber APIs. All functions except GetFiberData() are found in Windows.pas.

function CreateFiber(dwStackSize: DWORD; lpStartAddress: TFNFiberStartRoutine;
lpParameter: Pointer): BOOL; stdcall;
function DeleteFiber(lpFiber: Pointer): BOOL; stdcall;
function ConvertThreadToFiber(lpParameter: Pointer): BOOL; stdcall;
function SwitchToFiber(lpFiber: Pointer): BOOL; stdcall;
function GetFiberData : Pointer; stdcall;

Hmm ça fait 5 routines ça, alors que pour les threads il y en a sûrement plus.
Je sais pas pour vous mais j'ai toujours trouvé les déclarations des paramètres d'API très jolies à la lecture (lparam, dwflags, etc ...).

Cordialement, Bacterius !
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
26 févr. 2009 à 16:45
En effet, Borland n'a jamais jugé utile d'intégrer les Fibers dans l'unité Windows. Je ne comprends pas pourquoi, et je trouve que c'est dommage. D'autant qu'il ne faut que 6 routines pour travailler avec les Fibers.
Bien sûr, on peut toujours se passer des Fibers avec des Threads. Mais parfois, les Fibers simplifient beaucoup la tâche et évite de se casser la tête avec les synchros. Et il est parfois intéressant de disposer de sortes de Threads qui ne peuvent pas être préemptés (interrompus) par le système d'exploitation à tous bouts de champ et n'importe quand...

Il existe cependant un moyen d'utiliser les Fibers avec Delphi. Si ça intéresse, je ferais un petit tuto. Je pense d'ailleurs que ce serait le premier tuto sur les Fibers du WWW!

C'est une bonne motivation quand on sait combien la rédaction d'un tuto me fait ch... lolll
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
26 févr. 2009 à 15:23
Interessant les Fibers ... mais Delphi ne documente pas les TFibers (je ne sais même pas si la classe existe dans D6).

Remarque : je prends du retard dans la mise en ligne du 2eme exemple, car j'ai l'impression que Delphi fait certaines choses en background dans notre application quand on la teste dans l'IDE, ce qui cause des violations d'accès à la fermeture (j'en ai de temps en temps dans l'IDE, jamais en dehors !).

Cordialement, Bacterius !
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
25 févr. 2009 à 16:36
@Bacterius
« 'Les types de thread' je ne comprends pas : tous les threads sont des threads ? ou existe-t-il des threads descendants spécialisés? »

Il y a les Fibers, effectivement. Ce sont des Threads dont on maîtrise la planification. Ca peut être utile dans certaines circonstances...
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
25 févr. 2009 à 12:06
Salut,
merci à tous :)
Je viens de finir un 2eme exemple pour les threads (il suffit de modifier une constante et oh ! magie : plusieurs threads apparaissent sans effort.
Dès que j'ai internet sur mon PC je vous le met.
Indice : c'est une animation ...

Cordialement, Bacterius !

PS : dès que j'aurai quelques composants sympas comme ça, je les mettrai tous sur 1 onglet et j'en ferai un pack.
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
25 févr. 2009 à 11:51
@exar:
non plus simple, un bon nettoyage du pc que je viens d'emprunter..
cs_exar Messages postés 286 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 22 avril 2012 1
25 févr. 2009 à 11:39
CANTADOR: c'est sans doute à cause du fluide... ;o)
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
25 févr. 2009 à 11:32
ça va tellement vite que la note ne s'est pas inscrite!
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
25 févr. 2009 à 11:30
Si tu viens d'une galaxie située à 123.698.227 années-lumière, tu dois au moins avoir 123.698.227 ans !

hé non raté, car j'ai pris un raccourci par les trous noirs pour ressortir par celui énorme de la voie lactée !
Et en fait je me déplace en temps réel sans énergie baignant dans un fluide comme la pensée..

Et me voilà frais comme un gardon juste pour mettre un 10/10 à Bactérius qui le mérite bien.

cantador
cs_exar Messages postés 286 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 22 avril 2012 1
25 févr. 2009 à 05:30
Nicolas___: bien l'article explique justement que la célérité de la lumière est une limite: "relève de la science-fiction", "Enfin, il existe d'autres phénomènes supraluminiques qui sont des objets définis par la pensée et dont la présentation succincte permet simplement de mettre en exergue l'impossibilité pour l'information ou l'énergie de se déplacer plus vite que c", "en aucun cas des particules de masse non-nulle ne se déplacent réellement à des vitesses supérieures à c. Il n'y a donc pas violation du postulat de la relativité restreinte", ...
Bon, on n'est pas ici pour discuter de mécanique relativiste...
Et tu as bien raison de noter, j'ai complètement oublié ! Je m'en vais réparer cette erreur de ce pas !
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
25 févr. 2009 à 03:42
@ exar : http://fr.wikipedia.org/wiki/Vitesse_supraluminique
la vitesse de la lumière n'est peut être pas un problème ...

@bacterius :
Salut , c'est vrai que c'est assez sympa ce petit code... ça me fait penser à quelques astuces que j'utilise ;)
c'est sur que pour ton age , c'est prometteur , même tes explications sont claires et "sympa" à lire.
il y a du boulot et ça se ressent...

une petite note pour l'égo (ça fait pas de mal ;) ) : 9/10
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
25 févr. 2009 à 01:54
Et si Cantador se déplacait à l'aide d'une matière inconnue ayant une vitesse indéfinie ? (donc de la téléportation ... ou alors rien du tout). Supposons qu'il ait passé 8 ans sur sa galaxie et qu'il fête son 100eme anniversaire sur Terre ^^

Cordialement, Bacterius !
cs_exar Messages postés 286 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 22 avril 2012 1
24 févr. 2009 à 23:31
Bacterius: et à propos d'âge, le tien n'est pas correct sur ton profil ! TU n'as pas 108 ans ! Si tu viens d'une galaxie située à 123.698.227 années-lumière, tu dois au moins avoir 123.698.227 ans !
cs_exar Messages postés 286 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 22 avril 2012 1
24 févr. 2009 à 23:28
Cantador: ce n'est pas ce que je voulais dire. J'ai d'abord regardé le code, puis, comme je l'ai trouvé bien écrit, je suis allé sur le profil de Bacterius pour aller voir ses autres posts. Là, j'ai vu son âge et j'ai été assez étonné... Rien de plus.
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
24 févr. 2009 à 22:03
"les types de thread" je ne comprends pas : tous les threads sont des threads ? ou existe-t-il des threads descendants spécialisés ? Ou parles-tu des priorités ?
Pour l'exemple il est vrai que j'aurai pu trouver mieux :/
Je vais y réfléchir tout en réflechissant pourquoi mon composant en test ne veut pas recevoir mon message windows personnalisé ...

Cordialement, Bacterius !

PS : pour les 1 centime par membre : on va vite être décus, il y a environ 100.000 membres "actifs", le reste sont des comptes automatiques ou des gens qui ont posé 1 question il y a 5 ans ...
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
24 févr. 2009 à 21:31
@exar:la jeunesse n'est pas un handicap..
@bacterius:
Je peux pas..j'ai planté grave mon pc et je comptais sur la quête pour m'en acheter un aussi..
avec 10 000 € ça fait largement 10 PC..donc..
non je déconne mais pour le don par si sûr que ça ne marcherait pas pour un jeune et brillant informaticien..
qui sait ? mais faudrait que Nix soit d'accord..
pour le compo, je te fais signe
En tout cas déjà il s'installe bien et il faut maintenant trouver un bon exemple probant qui fasse varier les temps selon les types de thread à moins que tu en fournisses un ce qui serait plus simple.

cantador
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
24 févr. 2009 à 17:20
Ca fait 10.000 euros. On peut avoir un bon PC avec ça :)
Mais je doute que 1 million de membres veuillent faire la démarche pour m'offrir 1 centime chacun ^^
Et Cantador, tu as testé mon composant à présent. Qu'en penses-tu ?

Cordialement, Bacterius !
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
24 févr. 2009 à 16:43
@Bacterius :
on va se cotiser pour t'offrir un ordinateur..
Imagine 1 000 000 de membres qui donne 0,01 € chacun.
Je te laisse faire le calcul..(ça fait réver.)
@+
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
24 févr. 2009 à 12:11
Merci beaucoup Exar, oui j'ai réellement 15 ans (enfin 15 et demi maintenant) ^^ Mais franchement j'adore la programmation, et quand on aime :)

@Blueperfect : euh oui encore un message mystérieux, peux-tu expliquer ton idée ? La TTaskCollection ? Une batterie de timers ?

@Cantador : Huhh les composants Jedi touchent à a peu près tout ce qu'on peut trouver dans un ordinateur, de toute façon je n'ai jamais pu installer leurs composants (me manque l'update 2 pour Delphi 6 qui requiert une inscription que je n'arrive pas à effectuer ...), donc ça a fait baisser mon estime à leur égard :/ Pour moi un pack interessant est d'abord un pack que l'on peut installer en deux clics, pas un batch qui nous demande stupidement l'update 2 ... qui n'est sûrement pas vraiment nécessaire.
Et puis autant le refaire même si il existe dans la palette JV Threading, c'est ça qui me fera la main je pense (plutôt que de passer mon temps utile à chercher ce qui n'a pas été fait).

Sinon je pensais à inclure l'évènement OnTerminate, quand le thread se termine, j'ai vu que le thread avait déjà un gestionnaire tout chaud tout frais pour nous, mais je n'arrive pas à le faire fonctionner. Je l'assigne bien, mais il n'est jamais exécuté.
Et je ne peux pas en faire un moi-même puisque je ne sais pas quand un thread se termine.

Cordialement, Bacterius !

PS : Désolé si je ne réponds pas très vite aux messages, j'ai un problème d'internet assez grave (c'est plus moi qui décide quand ça se connecte ou déconnecte maintenant ...), donc voilà.
cs_exar Messages postés 286 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 22 avril 2012 1
24 févr. 2009 à 10:12
Bien foutu ! Mais tu as réellement 15 ans ? J'ai des collègues qui ont plus que ça en "expérience" et qui ne sont pas capables de pondre un code correct !
blueperfect Messages postés 234 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 21 novembre 2013
23 févr. 2009 à 15:44
L'étape suivante est la TTaskCollection, qui sera alors plus performante qu'une batterie TTimer !
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
23 févr. 2009 à 15:18
..après une longue absence de Codes-Sources..
On s'est aperçu de rien !
normal tu était en état "threading"..

Je vais tester ton compo bien que tu noteras qu'il existe déjà la palette Jv Threading..
...hmmhhh...
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
23 févr. 2009 à 04:11
Woah la mise en page de la description a bien été massacrée.
Codé sous Delphi 6 Personal Edition.

Cordialement, Bacterius !
Rejoignez-nous