#1 Mon 19 July 2010 18:08
- jean94
- Participant assidu
- Date d'inscription: 13 Aug 2009
- Messages: 436
[MapBasic v.10] Varriable array
bonjour à tous,
Je commence just a utiliser les variable array et ne suis pas sur de tout bien comprendre.
J'ai ce code qui est supposé Ouvrir un fichier .txt et me créer une table. Je sais qu'il a un autre moyen mais je veux utiliser une variable array. J'ai à résoudre des problèmes similaire
MapInfo me donne l'erreur subscript out of range....
Code:
sub faitTable Dim i as smallint global numCol as smallint global sNewFileName as string 'variable ee global dans sub main dim ColumnAtt() as string dim LineVarChars as string global sNewFilePath as string 'variable en global ReDim ColumnAtt(numCol) i = 1 Open file sNewFilePath as #1 Do while not EOF(1) line input #1,LineVarChars ColumnAtt(i) = LineVarChars i = i + 1 Loop i = 1 Do while i < numCol Alter Table sNewFileName ( add ColumnAtt(i) Char(254) ) Interactive char type column i=i+1 Loop end sub
Merci!
JF
Hors ligne
#2 Mon 19 July 2010 18:20
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic v.10] Varriable array
Bonjour
Il manque quelque chose avant le ReDim ColumnAtt(numCol) qui vise à donner à cette variable array une "dimension/contenance" (à sa création, par défaut sa contenance est nulle)
Pour lui donner comme contenance ne nombre de colonnes de la table (numCol), il faut définir avant ce nombre !
Par TableInfo() ou par NumCols() peu importe mais il faut que numCol ait une valeur (par défaut c'est zéro...!)
ps: sauf dans des projets MapBasic par modules, l'emploi de Global n'est pas nécessaire
Hors ligne
#3 Mon 19 July 2010 18:36
- jean94
- Participant assidu
- Date d'inscription: 13 Aug 2009
- Messages: 436
Re: [MapBasic v.10] Varriable array
Bonjour,
Effectivement mon Numcol est définit dans mon sub main qui n'est pas illustrer ici. C'est pour cela que j'ai garder les "global" plutot que "Dim" pour illustrer ce fait. Et donc numCol > 0 dans ce cas
JF
Hors ligne
#4 Mon 19 July 2010 21:08
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic v.10] Varriable array
Tous les Dim définis avant le Sub Main ont une validité "globale": pas besoin de Global...
Tentez un print numCol avant son usage pour voir si vraiment numCol > 0
D'autre part Open file sNewFilePath devrait être suivi de For Input (lecture) ou For Output (écriture) avant as #1...
Hors ligne
#5 Thu 22 July 2010 15:43
- jean94
- Participant assidu
- Date d'inscription: 13 Aug 2009
- Messages: 436
Re: [MapBasic v.10] Varriable array
Merci Maurice
Il me manquait input de plus comme il n'est pas démontrer ici mais dans une boucle semblable, j'avais un i = i + 1 avant mon alter table ce qui me donnais un "subscript" de 1 supérieur lors de la dernière itération de la boucle ce qui causait une erreur.
JF
Hors ligne