Parcours d'un fichier texte

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Messagepar Mick » 23 Sep 2010 à 09:15

Je sais j'abuse ...

la méthodologie

1 récupération du fichier --> correspondrait à quel fonction LS ?
2 traitement du fichier en mémoire --> correspondrait à quel fonction LS ?
3 renvois du contenu dans le fichier --> correspondrait à quel fonction LS ?


Merci,
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

Messagepar Michael DELIQUE » 23 Sep 2010 à 09:21

re,

pour 1 et 3 voir les tips que je t'ai passé.

pour le 2 va falloir le coder toi même
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar roubech » 24 Sep 2010 à 00:51

tu peux ouvrir 2 fichiers en parallèle
[syntax="LotusScript"]Dim nFileNumIn as Integer
Dim nFileNumOut as Integer
Dim sFilePathIn as String
Dim sFilePathOut as String
Dim sLineIn as String
Dim sLineOut as String
sFilePathIn = "data.txt"
sFilePathOut = "data_modifie.txt"[/syntax]
le 1er en lecture
[syntax="LotusScript"]Open sFilePathIn for Input as nFileNumIn [/syntax]
le 2nd en ecriture
[syntax="LotusScript"]Open sFilePathIn for Output as nFileNumOut [/syntax]
tu parcours le premier pour le lire ligne par ligne
[syntax="LotusScript"]While not Eof(nFileNumIn)
Line Input nFileNumIn, sLineIn
' ...
Wend[/syntax]
Tu fais ta transformation sur la chaine de texte
[syntax="LotusScript"] sLineOut = left(sLineIn,5)+"452"+right(sLineIn,length(sLineIn)-5)[/syntax]
Et tu écris la nouvelle ligne dans le nouveau fichier
[syntax="LotusScript"] print nFileNumOut, sLineOut[/syntax]
A la fin, tu fermes les 2 fichiers
[syntax="LotusScript"]close nFileNumIn
close nFileNumOut[/syntax]

Mais si j'ai bien suivi, pour la transformation, ça ne concerne que les lignes commençant par E
[syntax="LotusScript"] if Left(sLineIn,1) = "E" Then
sLineOut = ' ....
Else
sLineOut = sLineIn
End if[/syntax]
Et en plus, il faut d'abord séparer la ligne en 3 chaines distinctes.
Si ta ligne est découpée avec un séparateur bien défini comme un espace (ou un ; pour le format csv)
[syntax="LotusScript"] Dim values as Variant
values = split(sLineIn, " ")[/syntax]
ou si elle est découpée en fonction de la position
[syntax="LotusScript"] Dim values as Variant
values(0) = Mid(sLineIn, 1, 5)
values(1) = Mid(sLineIn, 5, 10)
values(2) = Mid(sLineIn, 15, 10)[/syntax]
si tu veux remplacer l'info du milieu values(1) qui vaut par exemple "0000000000" par "00000007" sachant que tu as le nombre 7 dans une variable newValue, il te faut alors ajouter le nombre de zero adéquate, ou autre technique, tu ajoutes les 10 "0" devant ton nombre et tu ne prend que les 10 derniers caractères
[syntax="LotusScript"] sLineOut = "E" & values(0) & Right("0000000000" & newValue, 10) & values(2)[/syntax]
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar Mick » 24 Sep 2010 à 05:05

Merci pour les pistes ...

Je vais mettre cela en place au plus vite.
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

Messagepar Mick » 04 Oct 2010 à 19:36

je ne vois pas ... mais ça doit être trop simple ...

Dim fileRead As Integer
Dim fileWrite As Integer
Dim Chemin As String

RepStr = "C:\"

fileRead = Freefile()
fileWrite = Freefile()

chemin = repStr+"logivif.txt"
Filw = "C:\logMPO.txt"

Open chemin For Input As fileRead
Open "c:\logmpo.txt" For Output As fileWrite

L'agent se plante donc sur la le OutPut avec le message :
Illegal File Number

Qu'est ce que j'ai mal fait ?

Thanks,
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

Messagepar roubech » 04 Oct 2010 à 20:42

fait ton freefile juste avant de l'utiliser, pas les 2 freefile puis les 2 open
car Notes t'attribut un numero, si tu l'utilise pas, il le recycle
freefile
open
freefile
open
aide a écrit:Use FreeFile when you need a file number (to open a file)
http://publib.boulder.ibm.com/infocente ... CTION.html
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar Mick » 04 Oct 2010 à 20:50

mes respects Mr ...

:wink:
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

Précédent

Retour vers Développement