begin process at 2012 02 05 00:24:10
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Composants

 > DES THREADS EN 1 CLIN D'OEIL !

DES THREADS EN 1 CLIN D'OEIL !


 Information sur la source

Note :
9,75 / 10 - par 4 personnes
9,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Composants Classé sous :TThread, Thread, Composant, Liste, Pointeur Niveau :Initié Date de création :23/02/2009 Date de mise à jour :23/02/2009 12:29:41 Vu / téléchargé :3 601 / 439

Auteur : Bacterius

Ecrire un message privé
Commentaire sur cette source (44)
Ajouter un commentaire et/ou une note

 Description

Bonjour,
je vous présente, après une longue absence de Codes-Sources, ma nouvelle unité.
Alors il s'agit d'une unité contenant plusieurs choses :
- un composant TThreadComponent : n'a-t-on jamais rêvé pouvoir faire un thread aussi rapidement ? - bon j'arrête mes louanges - Il suffit de définir l'intervalle, la priorité du thread et son état (Actif/Inactif), et vous pouvez alors remplir les évènements OnExecute (chaque fois que le thread s'execute), OnResume (quand le thread démarre ou redémarre) et OnSuspend (quand le thread s'arrête). Il est utilisable directement dans la palette ou bien dynamiquement, et est aussi facile d'utilisation qu'un Timer.
- une classe TThreadListEx : une classe encapsulant une TList, et en l'utilisant avec sagesse pour créer une liste de TThreadComponent fonctionnelle et stable (du moins j'espère, je n'ai pas encore eu de violations d'accès, mais il y a sûrement quelques points que j'ai mal saisi sur les pointeurs ...).

Vous trouverez de nombreuses notions dans ce code, allant de la simple déclaration d'une classe à la création de propriétés tableau, en passant par diverses choses utiles et variées, pour tous les goûts.

Bref, j'ai fourni un exemple qui se propose de comparer les performances des threads selon leur priorité (oui j'ai rien trouvé de mieux ...), avec une gestion dynamique des TThreadComponent et TThreadListEx (pour bien tout avoir). Bien sûr je n'ai pas pu utiliser toutes les fonctionnalités de mon unité, je vous laisse découvrir le reste !
J'ai bien tout commenté, j'ai fait une belle icône de palette pour le composant, j'ai inclus un paquet pour rapidement installer le composant si il vous plaît, et voilà ça sera tout pour cette source (du moins pour cette première version) !

J'espère que vous apprécierez :)


 Conclusion

Tous commentaires, remarques, critiques, conseils, etc ... ici !

Cordialement, Bacterius !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

23 février 2009 12:29:41 :
// Mise en page

 Sources du même auteur

Source avec Zip Source avec une capture RAYTRACING EN DELPHI (PROGRESSIVE PATH TRACING)
Source avec Zip Source avec une capture MOTEUR PHYSIQUE 2D CHIPMUNK.. EN DELPHI!
Source avec Zip Source avec une capture DOWNSAMPLING OU COMMENT BIEN OPTIMISER LE CODE
Source avec Zip Source avec une capture FACTORISATION ET TEST DE PRIMALITÉ 32 BITS ULTRA OPTIMISÉ
Source avec Zip LECTEUR DE FICHIER MULTIMÉDIA RIFF

 Sources de la même categorie

Source avec Zip MOVCONTROL par abmed1963
Source avec Zip Source avec une capture PACKAGE DE COMPOSANTS CINDY V4.41 par MAURICIO
Source avec Zip Source avec une capture DBNAVIGATORPLUS par pascal1541
Source avec Zip Source avec une capture EVALUATION D' EXPRESSIONS MATHÉMATIQUE (MÉTHODE RPN) par MAURICIO
Source avec Zip Source avec une capture COMPOSANT TQPROGRESSBAR UNE BARRE DE PROGRESSION... par yanb

 Sources en rapport avec celle ci

Source avec Zip JEU DE MOT MOTUS par philouchess
Source avec Zip RUMMIKUB DES CHIFFRES CONTRE ORDINATEUR par Toidil
Source avec Zip Source avec une capture DOWNSAMPLING OU COMMENT BIEN OPTIMISER LE CODE par Bacterius
Source avec Zip Source avec une capture PROJETS DÉMO DU PACK DE COMPOSANTS CINDY V4.30 par MAURICIO
Source avec Zip TMICROTIMER - TIMER À LA MICROSECONDE ! par Bacterius

Commentaires et avis

Commentaire de Bacterius le 23/02/2009 04:11:06

Woah la mise en page de la description a bien été massacrée.
Codé sous Delphi 6 Personal Edition.

Cordialement, Bacterius !

Commentaire de cantador le 23/02/2009 15:18:50 administrateur CS

..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...

Commentaire de blueperfect le 23/02/2009 15:44:30

L'étape suivante est la TTaskCollection, qui sera alors plus performante qu'une batterie TTimer !

Commentaire de exar le 24/02/2009 10:12:16

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 !

Commentaire de Bacterius le 24/02/2009 12:11:55

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à.

Commentaire de cantador le 24/02/2009 16:43:20 administrateur CS

@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.)
@+

Commentaire de Bacterius le 24/02/2009 17:20:55

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 !

Commentaire de cantador le 24/02/2009 21:31:58 administrateur CS

@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

Commentaire de Bacterius le 24/02/2009 22:03:07

"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 ...

Commentaire de exar le 24/02/2009 23:28:58

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.

Commentaire de exar le 24/02/2009 23:31:17

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 !

Commentaire de Bacterius le 25/02/2009 01:54:07

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 !

Commentaire de Nicolas___ le 25/02/2009 03:42:11 9/10

@ 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  

Commentaire de exar le 25/02/2009 05:30:16 10/10

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 !

Commentaire de cantador le 25/02/2009 11:30:01 administrateur CS

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

Commentaire de cantador le 25/02/2009 11:32:49 administrateur CS 10/10

ça va tellement vite que la note ne s'est pas inscrite!

Commentaire de exar le 25/02/2009 11:39:30

CANTADOR: c'est sans doute à cause du fluide... ;o)

Commentaire de cantador le 25/02/2009 11:51:08 administrateur CS

@exar:
non plus simple, un bon nettoyage du pc que je viens d'emprunter..

Commentaire de Bacterius le 25/02/2009 12:06:51

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.

Commentaire de Caribensila le 25/02/2009 16:36:06 10/10

@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...

Commentaire de Bacterius le 26/02/2009 15:23:16

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 !

Commentaire de Caribensila le 26/02/2009 16:45:02

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

Commentaire de Bacterius le 26/02/2009 17:04:20

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 !

Commentaire de Caribensila le 26/02/2009 17:32:04

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...

Commentaire de Bacterius le 26/02/2009 18:15:45

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 !

Commentaire de Caribensila le 26/02/2009 18:29:33

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.

Commentaire de Nicolas___ le 26/02/2009 19:26:57

j'espère ne pas mettre de connerie mais sur msdn

Fibers : http://msdn.microsoft.com/en-us/library/ms682661(VS.85).aspx

Using Fibers : http://msdn.microsoft.com/en-us/library/ms686919(VS.85).aspx

Commentaire de Caribensila le 26/02/2009 19:34:30

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).

Commentaire de Nicolas___ le 26/02/2009 19:54:49

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 !  

Commentaire de Bacterius le 26/02/2009 20:04:53

Prends du coca light, il paraît qu'il y a des fibres optiques confites dedans ...

Cordialement, Bacterius !

Commentaire de blueperfect le 01/03/2009 22:58:35

En, fait tu découvres l'art du multitâche...

Commentaire de blueperfect le 02/03/2009 11:06:32

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

Commentaire de blueperfect le 02/03/2009 11:12:55

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

Commentaire de blueperfect le 02/03/2009 11:21:27

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

Commentaire de Bacterius le 03/03/2009 19:03:00

"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.

Commentaire de blueperfect le 03/03/2009 19:11:41

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

Commentaire de Bacterius le 03/03/2009 19:37:37

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

Ben publies-le avec les autres ...

GrandVizir est un membre du site, tu trouveras vite ses tutoriaux sur delphifr.com (il en a fait la majorité).

Cordialement, Bacterius !

Commentaire de blueperfect le 04/03/2009 20:27:04

Peux-t-on ne poster que les BPL ?

Commentaire de cirec le 14/03/2009 11:03:25 administrateur CS

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 !!!

Commentaire de blueperfect le 14/03/2009 16:58:06

Je vais voir ce que je peux publier...

Commentaire de Bacterius le 14/03/2009 16:59:51

Si tu veux publier quelque chose tu publies tout ... ici c'est un site de partage.

Cordialement, Bacterius !

Commentaire de blueperfect le 14/03/2009 17:01:43

Je ne veux pas publier mes composants en test !

Commentaire de Bacterius le 14/03/2009 17:07:51

Ben tu attends qu'ils soient fonctionnels ... y'a pas le feu ...

Cordialement, Bacterius !

Commentaire de blueperfect le 14/03/2009 17:09:09

ça roule, et c'est pour bientôt...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Soit le Thread, soit l'UDP [ par stailer ] Salut tout le monde,J'ai un petit problème avec mon appli en développement :J'utilise un thread dans lequel s'éxecute une connexion à des serveurs par retailler et copier une image sans utiliser TImage [ par skrol29 ] Bonjour,Je développe une mini visionneuse de fichier JPG en Delphi.En bas de l'image en cours, j'affiche une ribambelle horizontale qui contient toute TComponent et application console. [ par tombarbette ] Bonjour, Je voudrais savoir comment mettre un TComponent non-bloquant dans une application console. J'ai essayer avec ou sans thread, en empêchan Composant pour faire une liste d'image : Besoin d'orientation [ par Francky23012301 ] Salut à tous,Je cherche à faire un composant dans lequel on pourrait ajouter des images les unes à cotés des autres par le biais d'une procédure du ty COMPOSANT [ par selma-elec ] bonjour à tous.j'ai créé un nouveau composant sur la base d'un TEDIT.COMMENT FAIRE pour avoir une nouvelle propriété de ce composant qui sera un choix IdFtp ou autre composant FTP avec thread [ par cybersky ] Bonjours tout le monde ma question est simple comment faire pour que je puisse telecharger plusrieurs fichiers en meme temps avec Indy pour le ftp doi Faire apparaître une liste de choix...dans une liste? [ par Cacharodon ] Bonjour à tous,Je souhaiterais faire apparaître une liste de choix quand je clique sur un élément d'une liste...En gros, l'idéal ce serait une sorte d Thread erreur [ par jmp77 ] Bonjour,Voilà j'ai un souci avec un thread. J'essaye de lancer une connection ole avec excel depuis un thread mais j'ai une erreur lors de la création Recuperer le nom d'un composant cliqué [ par hierroc ] Voila: Je suis sûr que c'est un problème tout con, mais je crée dynamiquement une série d'images dans une form, et je leur affecte une fonction dans l composant Transparent [ par sellig ] Bonjour a tous,Je recherche un composant TradioGroup avec une Transparence. pouvez vous m'aider?Sellig en + Grand


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,170 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales