Page 2 sur 2

MessagePublié: 23 Sep 2010 à 09:15
par Mick
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,

MessagePublié: 23 Sep 2010 à 09:21
par Michael DELIQUE
re,

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

pour le 2 va falloir le coder toi même

MessagePublié: 24 Sep 2010 à 00:51
par roubech
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]

MessagePublié: 24 Sep 2010 à 05:05
par Mick
Merci pour les pistes ...

Je vais mettre cela en place au plus vite.

MessagePublié: 04 Oct 2010 à 19:36
par Mick
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,

MessagePublié: 04 Oct 2010 à 20:42
par roubech
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

MessagePublié: 04 Oct 2010 à 20:50
par Mick
mes respects Mr ...

:wink: