[0.9.29] Indirection sur une variable ?
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.
Code:
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; |
Ici ce code a peu d'intérêt. On pourrait procéder autrement. Il est là uniquement pour illustrer ma demande.
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" :mouarf:. Existe-t-il une réponse envisageable en Lazarus ?
Cordialement. Gilles