Bonjour à tous,
Je débute en Delphi (mais pas en programmation ca fait 12 ans que je bosse sur d'autres langages) et là je dois intervenir sur un projet en Delphi.
Pour rendre mes tests plus surs, je veux passer par un peu de programmation objet, et comme çà une fois mon objet testé et validé, le reste suivra.
Alors j'ai tenté une premiere classe de Calcul toute bete, le principe : on a un objet, deux champs privés et deux propriétés (X et Y).
Je veux simplement que lorsqu'on fixe la propriété X çà calcule Y automatiquement, pour l'instant c'est simple c'est 100 - X.
J'ai fait donc un Calcul.pas avec ça dedans :
Et à coté j'ai juste un Form tout simple avec un bouton :
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 unit Calcul; interface type TCalcul = class private pName : string; pX : Integer; pY : Integer; procedure SetX(Value: Integer); function GetX() : Integer; procedure SetY(Value: Integer); function GetY() : Integer; published property X: Integer read GetX write SetX; property Y: Integer read GetY write SetY; public constructor Create(AName : string); destructor Destroy; override; end; implementation constructor TCalcul.Create(AName : string); begin inherited Create; pX := 0; pY := 0; pName := AName; end; destructor TCalcul.Destroy(); begin inherited Destroy; end; function TCalcul.GetX() : Integer; begin Result := pX; end; procedure TCalcul.SetX(Value : Integer); begin pX := Value; pY := 100 - pX; end; function TCalcul.GetY() : Integer; begin Result := pY; end; procedure TCalcul.SetY(Value : Integer); begin pY := Value; pX := 100 - pY; end; end.
Ca fonctionne bien, quand je clique sur mon bouton j'obtiens bien 80 dans le libellé de mon bouton.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 procedure TForm1.Button1Click(Sender: TObject); var C : TCalcul; s : string; begin C.Create('Test'); C.X := 20; s := IntToStr(C.Y); Button1.Caption := s; end;
Par contre quand je quitte le projet en débug par le croix ou ALT+F4, crac j'ai droit à une erreur "Exception EAccessViolation in module Project2.exe" etc...
J'ai tenté un peu de debug mais je vois pas trop, le projet est vraiment simple... Ca manque de Destroy sur la classe ? de FreeMem ?
J'ai testé en Delphi 5 et 6, mais çà plante pareil.
Bref j'ai besoin de vous
D'avance merci !
Partager