bonjour,
j'ai un problème pour utiliser un property par defaut.
j'ai gardé le minimum de mon code pour avoir un exemple.
quand j'utilise
ça ajoute bien 1 a ma qtt et 300 dans mon montant,
Code : Sélectionner tout - Visualiser dans une fenêtre à part tab_compte.compte[1].ajoute(1,300)
mais si j'utilise le property par defaut en faisant
ça ajoute rien ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part tab_compte[1].ajoute(1,300);
qu'est ce que j'ai pas compris ?
merci
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type ligne_ecriture=record qtt : integer; montant : currency; end; type tcompte=record public jour : ligne_ecriture; procedure init; function get_montant:currency; procedure ajoute(qtt:integer;montant:currency); end; type t_compte=class private function getitem(value:integer):tcompte; public compte : array[1..10] of tcompte; procedure init; property item[value:integer]:tcompte read getitem ; default; end; type TForm2 = class(TForm) end; var Form2: TForm2; tab_compte : t_compte; implementation {$R *.dfm} {------------------------------------------------------------------------} function t_compte.getitem(value:integer):tcompte; begin result := compte[value]; end; {------------------------------------------------------------------------------} procedure Tcompte.init; begin jour.qtt := 0; jour.montant := 0; end; {------------------------------------------------------------------------} procedure t_compte.init; var f : integer; begin for f := 1 to 10 do compte[f].init; end; {------------------------------------------------------------------------} procedure Tcompte.ajoute(qtt:integer;montant:currency); begin jour.qtt := qtt; jour.montant := jour.montant + montant; end; {------------------------------------------------------------------------} function Tcompte.get_montant:currency; begin result := jour.montant; end; {------------------------------------------------------------------------} begin tab_compte := t_compte.Create; tab_compte.init; tab_compte[1].ajoute(1,300); showmessage(currtostr(tab_compte[1].get_montant)); // retourne 0 tab_compte.compte[1].ajoute(1,300); showmessage(currtostr(tab_compte[1].get_montant)); // retourne 300 tab_compte.free; end.
Partager