banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#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

 

Pied de page des forums

Powered by FluxBB