Types incompatibles : 'Char' et 'String' [Résolu]

Signaler
Messages postés
233
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
26 juin 2011
-
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
-
Bonjour !
J'ai un petit soucis mais malgré mais recherche je n'ai pas trouvé de solution qui marche.

var
MonTableau: array  of String;
S : TSearchRec;
begin
 SetLength(MonTableau,9); //10 lignes
 SetLength(MonTableau[0], 1);//2 colonnes
 Chemin:=IncludeTrailingPathDelimiter(Chemin);

 MonTableau[1,1]:='1';
 MonTableau[2,1]:=Chemin+S.Name;


Et je me retrouve avec > Types incompatibles : 'Char' et 'String'.
J'ai essayé char(Chemin+S.Name) mais je me prend un Transtypage incorrect.


La solution doit être vraiment bête mais je ne la trouve pas.
Merci à ceux qui pourront m'apporter de l'aide.
A voir également:

6 réponses

Messages postés
251
Date d'inscription
dimanche 7 décembre 2003
Statut
Membre
Dernière intervention
11 novembre 2016

Bonjour

l'erreur vient du fait que votre tableau est à une seule dimension
et donc lorsque vous faite montableau[x,1] vous accédez au premier caractère du string de la ligne x
Donc faut définir un tableau à plusieurs dimensions
A+

Salut

Je lui défini bien 2 dimensions
: T'es sur ?

fBalien et f0xi viennent de te répondre 2 fois à cette question :

MonTableau: array of String; => Tableau à une dimension

MonTableau: array of array of String; => Tableau à deux dimension
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
var
MonTableau: array of String;
S : TSearchRec;
begin
 SetLength(MonTableau, 10, 2); //10 lignes, 2 colonnes
 Chemin := IncludeTrailingPathDelimiter(Chemin);

 MonTableau[0, 0] := '1';
 MonTableau[1, 0] := Chemin+S.Name;


un tableau diynamique est toujours indexé à 0!

ici avec SetLength(T, 10, 2) nous aurons l'equivalent de array[0..9, 0..1]
donc bien 10 lignes et 2 colonnes.

ce qui est d'ailleurs inutile puisque tu ne semble jamais avoir besoin de definir d'autres dimensions donc tu pourrai le definir en statique :

var
MonTableau: array[0..9, 0..1] of String;
S : TSearchRec;
begin
 Chemin := IncludeTrailingPathDelimiter(Chemin);
 MonTableau[0, 0] := '1';
 MonTableau[1, 0] := Chemin+S.Name;


________________________________________________________
besoin de câbles audio, vidèo, informatique pas cher ?
Messages postés
233
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
26 juin 2011
2
Du coup j'ai changer ma façon de procéder :
var
  c: Integer;
  MonTableau: array of String;
begin
  For c:=0 To (Form1.CheckListBox1.Items.Count-1) do
  Form1.CheckListBox1.Checked[c] := True;
  SetLength(MonTableau,1,c);

Et je me retrouve face à : ')' attendu(e) mais ',' trouvé(e)

Avez-vous une explication ??
Je lui défini bien 2 dimensions (même sans C ça me met la même erreur).
Messages postés
233
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
26 juin 2011
2
Haaaaaa ok. J'avais pas compris ça comme ça.

Merci !
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
en effet, j'ai oublier de corriger le type dans mon post precedent.


________________________________________________________
besoin de câbles audio, vidèo, informatique pas cher ?