Bonjour,
Dans certains langages (Windev, .Net,... ) il est possible de faire des indirections sur une variable, c'est à dire accéder à cette dernière (en lecture et en écriture) en construisant son nom dans une chaîne de caractères.
Par exemple :
On supposera 2 TBitBtns sur la Form nommés BTvalid et BTquit.
Ici ce code a peu d'intérêt. On pourrait procéder autrement. Il est là uniquement pour illustrer ma demande.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 var i, nBTvalid, nBTquit : integer; begin for i:=0 to ComponentCount-1 do begin if Components[i] is TBitBtn then ProcIndirection ('n'+TBitBtn(Components[i]).Name)) := i; // Affectation de i aux variables nBTquit, puis nBTvalid // à partir de la chaine 'n'+TBitBtn(Components[i]).Name) end; end;
J'ai trouvé ceci : https://forums.embarcadero.com/threa...threadID=26774 que je n'arrive évidemment pas à transposer à mon problème puisqu'il utilise comme ruse (donc comme contrainte forte), un tableau de pointeurs "liés" au fait que les variables ont dans leur nom, une partie numérique incrémentée de manière continue P1, P2, P3. A la rigueur si je procède ainsi (btXXX0, btXXX1, btXXX2), il n'y a pas besoin d'utiliser les indirections.
Bref, le problème reste "entier". Existe-t-il une réponse envisageable en Lazarus ?
Cordialement. Gilles
Partager