|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Fin de lecture fichier prématurée [ Système / Fichier & Disque ] (PatDeLaYaute)
Informations & options pour cette discussion
|
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 #GLe 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
|
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
|
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é dans : fichier, problème, input, end, texte
Répondre à ce message
Sujets en rapport avec ce message
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
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
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
Problème de virgule... [ par gmni ]
Salut,Voici le code que j'utilise pour afficher le contenu d'un fichier texteligne par ligne dans une ListBox :########################Dim Ligne As St
Encore un drole de fichier texte [ par crocmorts ]
1ere ligne :" DATE ","HEURE"," POSTE","NU.COMPOSE"," ANNUAIRE EXTERNE ","DUREE DE","DUREE DE C"2eme ligne:"01/05/02","01:08","201 ","6
Lire un fichier texte à partir d'une certaine ligne [ par crocmorts ]
Salut, voila mon probleme, je souhaiterais lire un fichier texte à partir d'une ligne X. J'ai recherché ds le forum mais j'ai pas trouvé mon bonheur.
Problème string fichier texte [ par Juliendu88 ]
Bonjour j'ai un gros problème avec un fichier texte qui contient des lignes de 134 caractères, jessaie de lire ligne par ligne en mettant chaque ligne
Fichier texte [ par xavier77 ]
Salut, J'ouvre un fichier texte et je le lie ligne par ligne : NumFichier = FreeFileOpen App.Path & "\toto.txt" For Input As #NumFichierDo While EO
virgule dans fichier texte -> Va à la ligne ??? [ par globule ]
Bonjour,J'ouvere un fichier texte (j'ai besoin d'analyser ligne par ligne ce fichier)Open "c:\monFichier" For Input As #1Do While Not EOF(1) Input
Convertir un fichier ASCII [ par darkbol ]
Bonjour, j'aimerais savoir comment d'un fichier ascii type : !Coordinate System: ! Projection System ID: 0 Initialized Quick: 0! Secondary Horizonta
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|