procedure TForm1.TestClick(Sender: TObject);
var VarTablo: TTablo;i:Integer;
begin
i:=1;
// je voudrais donner à VarTablo la valeur TabloL1 à partir d'une chaine de caractères
VarTablo:='TabloL'+i; //types incompatibles TTablo et String.
end;
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 3 févr. 2006 à 17:58
salut,
tu as declare TTablo = array[1..3] of string; puis VarTablo: TTablo
quand tu écris VarTablo:='TabloL'+IntToStr(i); tu essaies
d'ecrire dans l'ensemble du tableau or c'est l'élélment du tableau qui
est un string il faut donc ecrire:
sterne29
Messages postés6Date d'inscriptionmardi 31 janvier 2006StatutMembreDernière intervention 6 février 2006 4 févr. 2006 à 18:43
Désolé, je ne recommencerai plus.
J'avais simplifié mon exemple et je ne peux pas utiliser la méthode de cirec.
Ce que je voulais éviter d'écrire c'est :
if i=1 and j='L' then VarTablo:=TabloL1;
if i=1 and j='G' then VarTablo:=TabloG1;
...
if i=9 and j='G' then VarTablo:=TabloG9;
if i=9 and j='C' then VarTablo:=TabloC9;
Je voulais seulement simplifier ces 27 lignes par :
VarTablo:=????('Tablo'+(j)+IntToStr(i))
sachant que j peut avoir la valeur L, G ou C et i la valeur 1à 9.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 4 févr. 2006 à 21:13
Salut,
dans ce cas il te faut crée un composant pour pouvoir utiliser FindComponent
Mais bon créer un composant à partir d'un Tableau je ne suis pas sur que ce soit un bon choix, enfin pourquoi pas
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 4 févr. 2006 à 22:08
Salut,
Voici un exemple de ce que tu devras déclarer :
Type TTablo = Class (TComponent)
public { Déclarations publiques }
Tablo : array[1..3] ofstring;
End;
var Form1: TForm1;
TabloL1, TabloL2, TabloL3 : TTablo;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin TabloL1 : = TTablo.Create(Self); // pour Chaque Tableau il faudrat répéter l'opération
With TabloL1 do Begin Tablo[1] := 'Edit_1';
Tablo[2] := 'Edit_2';
Tablo[3] := 'Edit_3';
Name := 'TabloL1';
End ;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin TabloL1.Free;
end;
// tous ça pour pouvoir écrire ce qui suit je ne suis pas sur que tu sois gagnant
procedure TForm1.Button1Click(Sender: TObject);
begin With TTablo(FindComponent('Tablo'+'L'+'1'))Do Edit1.Text : = Tablo[1];
end;