Bonjour tout le monde,
Voici mon problème j'ai une class avec une 30aine de propriétés de types différents ( TColor, integer, ennumérés ) avec les mêmes traitements à faire sur chacune. Entre autre, une chose simple: savoir si la propriété à été modifiée ou pas. Et donc ça m'embète franchement de me tapper 30 accesseurs ( et de compiler 30 méthodes ) qui sont identiques aux types près alors que par exemple un DWord ça reste un DWord. J'ai donc pensé a mettre tous les types de même taille dans un tableau de record variables.
Et j'ai testé cette "solution" pour le Set:
Bon, évidement ça ne marche pas ( il faut un type à l'accesseur, et il pas moyen de caster dans les write ) donc j'aurais voulu savoir si quelqu'un saurait comment gruger le compilateur ou tout du moins si quelqu'un vois une autre solution ?
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 TAnyDWord=Record Case Integer Of 0: ( Int: Integer; ); 1: ( Ptr: Pointer; ); 2: ( Clr: TColor; ); End; TTestClass = class(TObject) private FAssigned: DWord; // verrif quelles propriétés sont assignées. FTest: Array[0..2] Of TAnyDWORD; Procedure SetDWORD(Index: Integer; Const Value); public Property a: Integer Index 0 Read FTest[0].Int Write SetDWord; Property b: Pointer Index 1 Read FTest[1].Ptr Write SetDWord; Property c: TColor Index 2 Read FTest[2].Clr Write SetDWord; end; Procedure TTestClass.SetDWord(Index: Integer; Const Value); Begin FAssigned:=FAssigned Or (1 shl Index); DWord(FTest[index]):=DWord(Value); End;
Petite précision tout de même, je tiens à garder les types différents aux propriétés.
Désolé de ne pas être très clair. Merci d'avance a ceux qui répondront ^^
Partager