Bonjour a tous comment faire pour envoyer un message a toutes les instances d'une Classe donné dans mon programme.
Bonjour a tous comment faire pour envoyer un message a toutes les instances d'une Classe donné dans mon programme.
je pense qu'il faut les recenser (liste) à la création (style Create(AOwner)) puis parcourir la liste pour envoyer à chacune
pour récupérer un pointeur sur l'instance dans le create, utiliser EAX :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 constructor TMyClass.Create(AOwner: TObjectList); var P: Pointer; begin inherited; asm mov EAX, P // ou dans l'autre sens... end; AOwner.Add(P); end;
Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
. Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !
Bon je passerai sur le fait que c'est d'une mauvaise conception admirable ... Voici une solution :
Le constructeur de la classe en question va se recenser dans une liste privée de l'unité, et le destructeur va s'en retirer. C'est ce que disait Tourlourou, mais en plus complet.
Et EAX c'est vraiment pas le truc : il existe la référence Self !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 unit Unit1; uses Contnrs; type TMaClass = class public constructeur Create; destructor Destroy; override; procedure TonMessage(Parametres); class procedure TonMessagePourTous(Parametres); end; implementation var MesObjets : TObjectList; constructor TMaClasse.Create; begin inherited; MesObjets.Add(Self); end; destructor TMaClasse.Destroy; begin MesObjets.Remove(Self); inherited; end; procedure TMaClasse.TonMessage(Parametres); begin end; class procedure TMaClasse.TonMessage(Parametres); var I : integer; begin for I := 0 to MesObjets.Count-1 do TMaClasse(MesObjets[i]).TonMessage(Parametres); end; initialization MesObjets := TObjectList.Create(False); finalization MesObjets.Free; end.
sjrd, ancien rédacteur/modérateur Delphi.
Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
Découvrez Mes tutoriels.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager