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
![]()
M E N S . A G I T A T . M O L E M
Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal
"La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."
Merci de vos réponses !!
Je suis sous delphi 7 , j avais oublier de vous le dire. Je regarde ca demain !!!
Merci encore
Cdt
Partager