Bonsoir ,
J aurais voulu savoir comment avoir une variable static dans une classe en DELPHI. donc partager la meme valeur dans toute les instances de la classe comme en JAVA.
Cdt
Bonsoir ,
J aurais voulu savoir comment avoir une variable static dans une classe en DELPHI. donc partager la meme valeur dans toute les instances de la classe comme en JAVA.
Cdt
tu dois la mettre après ttes tes fonctions, juste avant implementaion
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 var x: Tx; OleApplication :variant; OleWorkBook :variant; log:textfile; implementation uses creation_dossier, prestataires; {$R *.dfm}
Salut
Dans Delphi (en tout cas jusqu'à la version 7), ce n'est pas possible syntaxiquement mais il est possible de la simuler en partie en s'appuyant sur une variable d'implémentation dans ton unité, je donne un exemple :
L'inconvénient de l'approche réside dans le fait que l'accès à cette variable passe obligatoirement par des instances de la classe.
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
49
50 interface type TTest = class private function GetClassValue: Integer; procedure SetClassValue(Value: Integer); public property ClassValue: Integer read GetClassValue write SetClassValue; end; implementation var ClassVal: Integer; function TTest.GetClassValue: Integer; begin Result := ClassVal; end; procedure TTest.SetClassValue(Value: Integer); begin ClassVal := Value; end; // Mise en oeuvre... procedure TForm1.Btn1Click(Sender: TObject); var T1, T2: TTest; procedure ShowTs; begin ShowMessageFmt('T1.ClassValue= %d.T2.ClassValue= %d.', [T1.ClassValue, T2.ClassValue]); End; begin T1 := TTest.Create; T2 := TTest.Create; try T1.ClassValue := 10; ShowTs; T2.ClassValue := 12; ShowTs; finally T1.Free; T2.Free; end; End;
Pour limiter l'accès à la classe, il faut utiliser des méthodes de classe au lieu de la propriété :
Le choix est guidé par le problème lui-même (truisme !).
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 interface type TTest = class public class function GetClassValue: Integer; class procedure SetClassValue(Value: Integer); end; implementation var ClassVal: Integer; class function TTest.GetClassValue: Integer; begin Result := ClassVal; end; class procedure TTest.SetClassValue(Value: Integer); begin ClassVal := Value; end;
cdlt
e-ric
Merci de vos réponses !!
Je suis sous delphi 7 , j avais oublier de vous le dire. Je regarde ca demain !!!
Merci encore
Cdt
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