Types incompatibles : 'Char' et 'String'

Résolu
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 - 31 mai 2010 à 02:07
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 - 1 juin 2010 à 23:05
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

fbalien Messages postés 251 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 11 novembre 2016
31 mai 2010 à 12:37
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+
3
Utilisateur anonyme
1 juin 2010 à 08:56
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
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
31 mai 2010 à 21:11
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 ?
0
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 5
1 juin 2010 à 01:17
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).
0

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

Posez votre question
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 5
1 juin 2010 à 09:39
Haaaaaa ok. J'avais pas compris ça comme ça.

Merci !
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
1 juin 2010 à 23:05
en effet, j'ai oublier de corriger le type dans mon post precedent.


________________________________________________________
besoin de câbles audio, vidèo, informatique pas cher ?
0
Rejoignez-nous