Types incompatibles

sterne29 Messages postés 6 Date d'inscription mardi 31 janvier 2006 Statut Membre Dernière intervention 6 février 2006 - 3 févr. 2006 à 17:37
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 - 4 févr. 2006 à 22:08
Bonjour,
j'ai un problème simple à résoudre pour vous surement mais moi je bloque.

TTablo = array[1..3] ofstring;


Const
TabloL1: TTablo = ('Edit_1', 'Edit_2','Edit_3');
TabloL2: TTablo = ('Edit_a', 'Edit_b','Edit_c');
TabloL2: TTablo = ('Edit_x', 'Edit_y','Edit_z');


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;

Quelqu'un peut m'aider ?
Merci.

6 réponses

sterne29 Messages postés 6 Date d'inscription mardi 31 janvier 2006 Statut Membre Dernière intervention 6 février 2006
3 févr. 2006 à 17:41
ou plutot
VarTablo:='TabloL'+IntToStr(i); //types incompatibles TTablo et String.
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
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:

VarTablo [XX]: ='TabloL'+IntToStr(i);



@+

jlen
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
3 févr. 2006 à 18:04
Salut,
ce que tu demandes est impossible en revanche tu peux faire ceci :

TTablo = array [1..3] of string;


Const
Tablol : Array[1..3] of TTablo =(('Edit_1', 'Edit_2','Edit_3'),
('Edit_a', 'Edit_b','Edit_c'),
('Edit_x', 'Edit_y','Edit_z'));


procedure TForm1.Button1Click(Sender: TObject);
var VarTablo: TTablo;i:Integer;
begin
i:=1;
VarTablo:= TabloL[I];
end;

@+
Cirec
0
sterne29 Messages postés 6 Date d'inscription mardi 31 janvier 2006 Statut Membre Derniè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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
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] of string;
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;

@+
Cirec
0
Rejoignez-nous