begin process at 2010 02 09 23:59:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Système

 > 

Fichier & Disque

 > 

Fin de lecture fichier prématurée


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Fin de lecture fichier prématurée

lundi 13 novembre 2006 à 21:46:57 | Fin de lecture fichier prématurée

PatDeLaYaute

Bonsoir tout le monde,

voilà j'ai une fonction qui lit un fichier texte, jusque là pas de problème, j'ai déclaré toutes mes variables, ouvert mon fichier, (voir code pour les septiques)

        F = FreeFile
        Open CheminAcces & TabFichierPRJ(i) For Input As #F

            G = FreeFile
            Open CheminAcces & "prjTmp\" & TabFichierPRJ(i) For Output As #G

            TextePRJtmp = ""

            Do While Not EOF(F)
                Line Input #F, Texte
                Texte = RTrim(Texte)

                If Trim(Texte) <> "" Then
                    If Mid(Texte, 1, 1) <> "'" Then
                        If InStr(1, Texte, "Begin VB.") = 0 Then
VerifSautDeLigne:
                            If Mid(Texte, Len(Texte), 1) = "_" Then
                                Line Input #F, TexteTmp
                                Texte = Mid(Texte, 1, Len(Texte) - 1) & TexteTmp
                                GoTo VerifSautDeLigne
                            End If
                        End If
                    End If
                End If

                Print #G, Texte

            Loop
        Close #F
        Close #G


Le problème c'est qu'arrivé à la ligne 4434 (sur les 5902) la boucle se termine ! et donc il me manque une bonne partie de mon fichier. Et ce problème n'apparait que sur un seul fichier! (le plus gros (276ko)
Je précise que même en supprimant la fonction présente dans la boucle le résultat est le même.

Si quelqu'un a une idée du problème.
Merci d'avance

PatDeLaYaute
lundi 13 novembre 2006 à 22:25:34 | Re : Fin de lecture fichier prématurée

dthuler

Réponse acceptée !

Salut,

Quel genre de fichier lis-tu, des fichiers ASCII ?
As-tu vérifié si ta ligne 4434 ne contient pas un caractère spécial ?
Quelle est sa particularité, as-tu essayé de l'effacer pour tester si ça passe ?

David

lundi 13 novembre 2006 à 23:32:22 | Re : Fin de lecture fichier prématurée

PatDeLaYaute

Salut David,

merci beaucoup, effectivement cette ligne ('Print #F, "�1A;") comporte un particularité. Il s'agit d'un caractère qui indique la fin d'un fichier, mais je ne pensais pas qu'il puisse avoir cet effet lors d'une simple lecture et surtout rencontré dans ce contexte.

Pour info je suis en train d'écrire une application pour traduire mon logiciel (post compliation) et donc je manipule les fichiers sources.

C'était bête comme chou, mais fallait y penser !

Merci

PatDeLaYaute
lundi 13 novembre 2006 à 23:34:20 | Re : Fin de lecture fichier prématurée

Renfield

Administrateur CodeS-SourceS

Je pense qu'effectivement cette ligne contient un caractère que VB interprete comme une fin de fichier....

le plus simple, surement, si tu ne peux pas agir sur le fichier d'entrée, est de le lire en entier (ou par blocs)
et de jouer avec, après, en mémoire... (plus de lecture ligne a ligne)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
lundi 13 novembre 2006 à 23:39:30 | Re : Fin de lecture fichier prématurée

jack

Administrateur CodeS-SourceS
Salut
Non, les caractères spéciaux seraient lus, mal interprétables, mais lus (comme n'importe quel code ascii)
Je pense que ton problème vient du fait que tu lises une première ligne, mais que, à l'intérieur de ta boucle, tu lises à plusieurs reprises de nouvelles lignes dans le fichier.
Le "Not EOF(f)" ne fonctionnera que lorsque l'instruction Loop sera rencontrée.
Dans cette fameuse boucle de lecture interne, tu sautes avec un Goto à une ligne antérieure.
Le problème, c'est que cette ligne est à l'extérieur du If --> VB ne sait accumuler une cascade de 16 If-Then (il me semble)
Arrivé à cette limite, le programme se plante, et ma boule de cristal me dit que tu as un "On Error Resume Next" quelque part ...
Essaye de remplacer le If-Goto-EndIf par un Do While - Loop, ça t'obligera à équilibrer les syntaxes qui marchent par couple, un truc du genre :
   If InStr(1, Texte, "Begin VB.") = 0 Then
      Do While Mid(Texte, Len(Texte), 1) = "_"
         Line Input #F, TexteTmp
         Texte = Mid(Texte, 1, Len(Texte) - 1) & TexteTmp
      Loop
   End If

Et, pour info :
Mid(Texte, Len(Texte), 1) --> Right(Texte, 1)
Mid(Texte, 1, Len(Texte) - 1) ---> Left(Texte, Len(Texte) - 1)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on
lundi 13 novembre 2006 à 23:57:53 | Re : Fin de lecture fichier prématurée

PatDeLaYaute

Que de réponses,

Le problème maintenant est résolu, car le caractère incriminé étant dans un ligne de code mise en commentaire, je l'ai donc supprimé et plus de soucis.

Jack => merci pour la limite de 16 If que je ne connaissais pas et l'optimisation du code!
Je serais pointilleux je mettrais une boucle au lieu du if et du saut, en même temps cette fonction permet de ramener à une seule et unique ligne les codes que l'on écrit sur plusieurs lignes avec un _ , je crois que rare sont ceux qui fassent des lignes de codes aussi longues !
Ah et si je peux me permettre, il faudrai donner un petit coup de chiffon sur ta boule de cristal , car je n'ai aucun "on error resume next" dans ma fonction, je n'aime pas trop cette instruction.

Merci a tous

PatDeLaYaute


Cette discussion est classée dans : fichier, problème, input, end, texte


Répondre à ce message

Sujets en rapport avec ce message

lecture fichier excel [ par manud31 ] Voici mon code Private Sub Form_Load() On Error Resume Next 'les erreurs sont ignorées crlf = Chr$(13) + Chr$(10) Open "D:\ valeur_du_pas.xls" For Inp socket : problème de latence entre la réception des données et l'écriture dans un fichier. [ par floxone ] Salut,Je suis en train de développer un client ftp de base afin de manipuler les sockets en .net. J'ai un problème : quand je rapatri un .zip, il faut [Vb .Net] Problème d'écriture de fichier texte [ par Neow26 ] Salut à tous,Donc voila mon problème : je souhaiterais écrire un fichier texte contenant des instructions ftp à executer à partir d'un fichier .batMon problème import fichier texte [ par tedparker ] Bonjour,j'importe directement un fichier texte contenant des enregistrements dont les champs sont séparés par des points-virgules (un csv en fait).Tou Problème fichier texte ANSI-Unicode [ par aurelien2723 ] Salut!Je fais un petit programme en VB6, sous Windows XP.J'ai un soucis avec le type d'encodage d'un fichier texte.Il me faut en sortie un fichier Uni connection fichiers texte [ par antoine_ferard ] J'ai un problème concernant la connection "multi-utilisateurs" à une table"access" attachée à un fichier texte.Est-il possible de se connecter à plusi lecture de fichier texte et concatenation [ par SEBOBS ] bonjour, je lis un fichier texte, les donnees ont  la forme suivante : a,b,c,d,e,f j ai sur plusieurs ligne a,b,c,,e, et a,b,c,d,, ou a,b,c sont ident Probleme fin de fichier texte [ par Jeremy014 ] Bonjour,J'ai fait une macro sous excel pour lire un fichier texte et en extraire des informations.J'ai presque tout le temps une erreur car je pense q Problème d'accent sous DOS [ par Henkala ] Bonjour,Je génère à partir de VB 2008 express le fichier texte suivant :Lines6.Insert(10, <font color="#a3151 extraction des information d'un fichier [ par pegguy ] Private Sub Form_Load()'0n Error Resume Next 'Les erreurs sont ignorees'Open "c:\it\stat\STAT01-05 2001\stat26e.txt" For Input As #1Open "c:\it\stat\S


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales