Gambas France BETA


Pas de compte ? Incription

fichier et tableau

Ce sujet est résolu.

12
AuteurMessages
kwuy33#1 Posté le 10/6/2014 à 16:21:13
Bonjour,
j'ai besoin de faire un .sh qui fait 3 petites choses
- lire un fichier 1.csv compose comme ceci (nombre de champs variables et nombre de lignes variables)
A;B;C;D;E
1;2;3;4;5
a;b;c;d;e
- lire un deuxieme fichier 2.csv (le fichier original contient 148 champs)
C;E;F;G;A;D;B
- j'ai besoin d'inserer la valeur A du fichier 1.csv cad '1' dans la valeur de la colonne A du fichier 2.csv et faire ca pour chaque zone sur x lignes
pour me retrouver avec un fichier 2.csv comme ceci
C;E;F;G;A;D;B
3;5;;;1;4;2
c;e;;;a;d;b

je pensais utiliser les tableaux sans vraiment etre sur ni surtout trop savoir comment....

Merci de vos lumieres.. :scratch: :scratch: :scratch:
Flachy Joe#2 Posté le 10/6/2014 à 19:02:28
Iguane : Il Gambas Uniquement pour Activer ses NEuronesSalut,
j'ai besoin de faire un .sh qui fait 3 petites choses

Je ne crois pas que tu sois sur le bon forum...
;) Flachy Joe ;)
Reivillo#3 Posté le 10/6/2014 à 19:07:32
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Bonsoir kwuy33.

Tes Champs, sont-ils des Mots, des Ensemble de Mots,
séparés par des Points-Virgules <;> ?
Pas facile, à appréhender, ton sujet...
Sans trahir de secret, tu veux aboutir à quoi en fait.
Déplacer le contenu d'un Champs du Fichier X,
vers le contenu d'un champs du Fichier Y. C'est Ça ?

Reivillo.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
Reivillo#4 Posté le 10/6/2014 à 19:26:10
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »@ Flachy Joe, Bonsoir.

Rien n'Interdit d'utiliser du BASH,
dans Gambas( cela devient du Gam<bash> ). :D
J'en utilise souvent, personnellement.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
gambix#5 Posté le 10/6/2014 à 22:29:19
Faire simple !avec des tableaux oui.

ton premier fichier est un index qui définit des valeur pour ABCD

dim aFichier as new string[][]
dim aFichier2 as new string[][]
dim aLigne as string[]
dim s as string

for each s in split(file.load(file1.cvs), "\n")

aLigne = new string[]
aLigne = split(s)
aFichier.add(aLigne)
next

aLigne = new string[]
aLigne = split(split(file.load(file2.cvs), "\n")[0])

aFichier2.add(aLigne)

for j = 1 to aFichier1.max
aLigne = new String[]

for i = 0 to afichier2[0].max

iPos = aFichier1.find(aFichier2[0])
if ipos then
aligne.add(afichier1[j][ipos])
else
aligne.add("")
endif

next

aFichier2.add(aligne)
next


for each aligne in afichier2

s &= aligne.join() & "\n"

next
file.save("file2.cvs",s)


Le code n'est pas fonctionnel car pas testé et tu va avoir a corriger certaines chose, mais ce qui compte c'est le principe.

Moins de texte dans une signature c'est agrandir son espace.
kwuy33#6 Posté le 11/6/2014 à 07:42:01
Reivillo : en fait je veux ecrire ce traitement pour l'integrer en amont d'un job Talend et comme nos jobs s'executent tous sur un serveur linux....
gambix: merci beaucoup pour ta solution je vais l'approfondir

[edit] j'ai un souci avec le file.Load..message d'erreur "objet attendu dans MMain :20
1
2
3
4
DIM aFile AS String[]
DIM fichier AS STRING
fichier = "/usr/local/ETL/CRP/Travaux/Pim/Export/products_export_fr_FR_FAB_2014-06-04_16-08-16.csv"
aFile = Split(File.Load(fichier), "\n")


[edit2] le probleme vient effectivement de la variable string fichier....apparement file.load attend un objet puisque le dialog.path fonctionne correctement sauf que la rien n'est visuel.....
Jack#7 Posté le 11/6/2014 à 09:23:02
bonjour,
après le typage des variables il faut que tu ajoutes cette ligne :
afile = new string[]
Pour un code démocratique nationalisons Gambas.
kwuy33#8 Posté le 11/6/2014 à 09:42:32
en fait l'erreur se situe au niveau de l'execution de la ligne 4.....
Reivillo#9 Posté le 11/6/2014 à 10:12:00
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Tu as oublié le New, devant String[]
(Création d'un Nouvel Objet !)
1
DIM aFile AS NEW String[]

Ta ligne 4, est bonne.
mais corrige,la ligne 1,
pour que l'Objet < aFile >, soit Créé.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
kwuy33#10 Posté le 11/6/2014 à 10:19:30
j'avais corrige dans mon code mais j'ai toujours la meme erreur au meme endroit......j'ai tente de rajoute afile = new string[] avant la ligne
et apres la ligne, meme sentence meme punition....j'arrive vraiment pas a comprendre
Reivillo#11 Posté le 11/6/2014 à 10:26:55
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »
1
2
3
4
DIM aFile AS NEW String[]
DIM fichier AS STRING
fichier = "/usr/local/ETL/CRP/Travaux/Pim/Export/products_export_fr_FR_FAB_2014-06-04_16-08-16.csv"
aFile = Split(File.Load(fichier), "\n")
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
kwuy33#12 Posté le 11/6/2014 à 10:29:40
desole reivillo mais c'est exacctement ce que je fait et l'erreur persiste
Reivillo#13 Posté le 11/6/2014 à 10:52:33
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Teste le code ci-dessous.
Pour l'exemple:
Il liste le Fichier < FMain.class >,
de l'Application en cours, dans la Console de l'IDE...
(Fonctionne très bien ICI, Gambas3.5.3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PUBLIC SUB Button1_Click()

DIM iIdxLine AS INTEGER = 0

DIM aFile AS NEW String[]
DIM fichier AS STRING

fichier = Application.Path & "/.src/FMain.class"
aFile = Split(File.Load(fichier), "\n")
iIdxLine = aFile.Count
WHILE aFile.Count - iIdxLine < aFile.Count
PRINT aFile[aFile.Count - iIdxLine]
DEC iIdxLine
WEND

END
Si tu as toujours une Erreur,
donne-nous le Détail exact.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
kwuy33#14 Posté le 11/6/2014 à 11:50:34
Pas d'erreur sur ton code.....suis aussi en 3.5.3....serais-ce un probleme dans l'ecriture du chemin de fichier ???

[edit] non pas de soucis de ce cote j'ai remplace le chemin dans le code de reivillo et ca fonctionne Grrrr... j'ai regarde mon code en me disant j'ai mal ecris ou declare quelque chose et rien
en tout cas merci reivillo je vais partir sur la base que tu m'as donne
Reivillo#15 Posté le 11/6/2014 à 12:44:30
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »
[edit] j'ai un souci avec le file.Load..message d'erreur "objet attendu dans MMain :20
Je viens de remarquer, qu'il signale l'Erreur, à la Ligne 20.
Qu'as-tu, à cette Ligne 20 ?
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
12