Page 1 sur 1

[..] Problème avec FileReadLine

Posté : ven. 29 janv. 2010 10:59
par shaq
Bonjour,

Pour faire simple, je fais un telnet -f dans un fichier de log et je veux lire celui-ci.

Ce qu'il se passe c'est que la fonction FileReadLine REFUSE de me lire la ligne, il me retourne toujours une erreur, alors que jusqu'à présent ce programme (qui n'affiche pas une msgbox évidemment) fonctionnait du tonnère !

Je précise aussi que je suis administrateur du poste, donc à priori pas de problèmes de droits.

Voici le code :

Code : Tout sélectionner

local $file, $fo, $line, $cmd

$file = "D:\to_delete.txt"
$cmd = "telnet -f " & $file & " server"

Run($cmd)
Sleep(3000)
$fo = FileOpen($file, 0)
If @error Then
    MsgBox(0, "erreur", "erreur : " & @error)
EndIf

$line = FileReadLine($fo)

While Not $line = -1
    MsgBox(0, "ligne", $line)
    $line = FileReadLine($fo)
WEnd

FileClose($fo)
Chose plus étrange encore, mon ancien programme (compilé en .exe) qui utilise exactement à un moment ce même morceau de code, fonctionne encore.

Avez-vous une idée de ce qu'il se passe ?

Edit : Le fichier de log est correctement créé, et je n'ai jamais aucune erreur lors du : $fo = FileOpen($file, 0)
donc il arrive bien à ouvrir le fichier en lecture seule.

Re: [..] Problème avec FileReadLine

Posté : ven. 29 janv. 2010 16:53
par matwachich
Dabord, dis nous exactement quesque "REFUSE" veut dir (donne le code d'erreur retourné par FileReadLine)

Et puis, juste comme ca je dirai que pitetre le fichier est déja ouvert par un autre processus

Re: [..] Problème avec FileReadLine

Posté : lun. 01 févr. 2010 16:37
par shaq
Pour répondre à votre question : le code d'erreure renvoyé par la fonction FileReadLine est : 1

Je précise (c'est vrai que j'aurais du) que le fichier est détruit à chaque début de code, par un if Filexists then FileDelete.

Donc il est recréé à chaque exécution du script.

Re: [..] Problème avec FileReadLine

Posté : mer. 03 févr. 2010 10:34
par matwachich
Regarde ce que dit l'aide sur ton erreur:
Failure: Sets @error to 1 if file not opened in read mode or other error.

Donc, comme ta dit ton fichier est mal/pas ouvert! et pitet même qu'il n'éxiste pas/plus!

Re: [..] Problème avec FileReadLine

Posté : mer. 03 févr. 2010 11:52
par shaq
Le souci c'est qu'il n'y a aucune erreur lors de l'ouverture en lecture seule du fichier. Et ce fichier existe bel et bien. J'ai même essayé de refaire le programme sur un autre PC, c'est pareil. Pourtant cette méthode fonctionnait très bien il y a de ça 3-4 mois ....

la commande telnet -f stock dans un fichier le "retour" de la commande au fur et à mesure des nouvelles lignes, est-ce que ça le gêne d'ouvrir ce fichier (qui visiblement doit déjà être ouvert puisqu'il est incrémenté régulièrement) en lecture seule ?

Mais bon encore une fois, il n'y a pas de retour d'erreur lors du FileOpen.

Re: [..] Problème avec FileReadLine

Posté : mer. 03 févr. 2010 12:21
par GELDROC
esaye dans faire une copie temporaire puis de modifier l'attribut de ton fichier

Re: [..] Problème avec FileReadLine

Posté : jeu. 04 févr. 2010 10:26
par shaq
Je ne comprend pas. Modifier quel attribut ? Pourquoi ?

Si je fais une copie de ce fichier, je pourrais le lire ligne par ligne sans problèmes. J'ai fais le test sur un fichier qui n'est pas en cours d'écriture régulière, et ça fonctionne. Je pense que le souci vient du fait qu'il ne veut pas me lire la ligne d'un fichier "en cours d'utilisation" en quelque sorte. Mais c'est quand même curieux car il arrive bien à l'ouvrir en lecture, pas d'erreur.

Re: [..] Problème avec FileReadLine

Posté : jeu. 04 févr. 2010 13:21
par shaq
Bon ... ben c'est bien ce que je pensai ...

J'ai installé la version : 3.2.12.0 , version que j'utilisai lorsque j'avais codé le programme, et là par miracle le programme refonctionne.