Eof.....

Samuel0210 Messages postés 14 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 11 avril 2005 - 10 mars 2004 à 19:41
cm16 Messages postés 7 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 7 février 2008 - 7 févr. 2008 à 09:20
slt
jémeré" savoir comment marche eof ... voila c tt.
bye et merci davans

11 réponses

juvamine Messages postés 468 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 30 août 2007 2
10 mars 2004 à 19:54
eof pr koi ?? pr un fichier ?? pr un recordset ?? la mdsn est la pr ca
http://msdn.microsoft.com

voila
++
juva

Retrouvez une équipe de développeurs confirmés sur le tchate:
serveur : bastia.zefunChat.net
port : 6667
chan : #programmation
0
Tilois Messages postés 721 Date d'inscription dimanche 10 juin 2001 Statut Membre Dernière intervention 27 mars 2011 7
10 mars 2004 à 20:21
EOF=End of file
C'est utilisé pour le parcours d'un fichier sequentiel pour arreter kan la fin est trouvé a l'aide d'une boucle while ou do
0
cs_michelc Messages postés 27 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 18 mai 2005
11 mars 2004 à 10:17
Enfin,

Pour être plus clair:

Tant que l'on a encore des données Eof=0 et dés que l'on en a plus Eof=1.

Cela marche pour les Recordset ou les fichiers
0
cs_darkbol Messages postés 61 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 6 décembre 2004
23 juin 2004 à 11:01
J'ai mon EOF qui marche pas... ou alors aut chose...

Je voudrais ne permettre le stockage de lignes que sur celles commencant par un blanc (j'ai mis "espace" keyascii = 32)

voici mon code :
Dim texte As String, retour As String, tout As String, keyascii As Integer
 	Open "H:\Surfin project of the fire\Charisma2Surfer\test00.dat" For Input As #1
Line Input #1, texte
retour = Chr$(13) + Chr$(10)
tout = texte
While Not EOF(1)
Select Case keyascii
Case 32
    Line Input #1, texte
    tout=tout+retour+texte
Case Else
keyascii = 0
End Select
    Wend
    Open "H:\Surfin project of the fire\Charisma2Surfer\test01.dat" For Output As #2
    Print #2, tout


d'avance merci

"j'aime bien les EOF...:-|
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_michelc Messages postés 27 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 18 mai 2005
23 juin 2004 à 13:21
C'est la programmation la plus bizare que j'ai jamais vue:
- tu utilise une valeur qui ne change pas dans un select case (keyascii tu l'a trouvé où ?).
- Admettons que KeyAscii à une valeur de départ 32 (en admettant que cela arrive) on va lire tout le fichier et la c'est bon. sinon on entre dans une boucle infini puisqu'il n'y a plus de lecture de fichier et donc de ce fait Eof(1) est toujours vrais
- tu met tout ce que contient un fichier dans une variable texte pour après le stocker dans un autre fichier. Et si ton fichier fait plusieurs centaines de Mega tu crois que cela va tenir dans une variable texte théoriquement limitée à 65000 caractères environs.

Tu te complique la vie pour faire du code qui marche pas et j'ai l'impression que tu aligne du code sans savoir ce que tu fais...

Je vais essayer de t'aider.

Tu veux copier tout ce qui existe d'un fichier à un autre à condition que la ligne lue ait un premier caractère "Espace". Regarde:

' Initialisation des variables avec juste ce qu'il faut.
Dim texte As String ' Chaine temporaire où sera lue la ligne
Dim H_Fichier1 as Integer ' Handle de fichier1 et 2 pour faire plus propre
Dim H_Fichier2 as Integer

' Recupération d'un numéro de handle libre et ouverture du 1er fichier
H_Fichier1=freefile
Open "H:\Surfin project of the fire\Charisma2Surfer\test00.dat" For Input As #H_Fichier1

' Recupération d'un numéro de handle libre et ouverture du 2eme fichier
H_Fichier2=freefile
Open "H:\Surfin project of the fire\Charisma2Surfer\test01.dat" For Output As #H_Fichier2

' Ici on lit et on écrit directement si la condition convient. Pas de variable bizare, c'est direct
While Not EOF(H_Fichier1)
Line Input #H_Fichier1, texte
If left(texte,1)<>"" then print #H_Fichier1, texte
Wend

'on oublie pas de fermer les fichiers
Close(#H_Fichier2)
Close(#H_Fichier1)
0
cs_michelc Messages postés 27 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 18 mai 2005
23 juin 2004 à 13:24
Oupss...

petite erreur dans le code, il faut lire:

While Not EOF(H_Fichier1)
Line Input #H_Fichier1, texte
If left(texte,1)<>"" then print #H_Fichier2, texte
Wend
0
cs_darkbol Messages postés 61 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 6 décembre 2004
23 juin 2004 à 14:26
euh j'avoue que j'ai fait n'importe koi...

je pensais que keyascii lisait le caractère ASCII correspondant mais j'ai un peu fait n'importe quoi avec mon select...

Avec ton approche (c vrai ke c bcq plus simple), il me dit "attempt to read a past end of file" sur le
Line Input #H_Fichier1, texte

ca veut dire kil plante au retour à la ligne?

Pour situer le contexte, je dois convertir un fichier ASCII type

!Coordinate System:
! Projection System ID: 0 Initialized Quick: 0
! Secondary Horizontal: Units: m Per/Meter: 1
! Geodetic Datum: EUROP50 Ellipsoid: INTNL
! Projection Method: Transverse Mercator
! Central Meridian: 3
! Base Parallel: 0
! Scale Factor: 0.9996
! FALSE Easting: 500000 m
! FALSE Northing: 0 m
! User Horizontal: Units: m Per/Secondary: 1
(T1,F20.5,T25,F16.5)
->0004
507210.7 6245180.0
507207.6 6247034.5
511326.2 6247043.5
511331.1 6245188.5
507210.7 6245180.0

en un autre fichier ASCII type bln comme suit :

5
507210.700000000 6245180.00000000
507207.600000000 6247034.50000000
511326.200000000 6247043.50000000
511331.100000000 6245188.50000000
507210.700000000 6245180.00000000

voilà. Mais merci bcq pour ton aide, c vraiment très précieux comme apport...

(ca se voit tant ke ca que je débute en prog?)

Au moins, j'ai le mérite d'avoir étonné... (hum..)

"j'aime bien ceux qui maitrisent... :-)
0
cs_darkbol Messages postés 61 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 6 décembre 2004
24 juin 2004 à 09:06
Rebonjour,

Il semble que ce soit mon fichier test00.dat qui est endommagé...

Pourriez vous m'en dire un peu plus sur la fonction LEFT; est ce que celle ci cherche un espace dans la ligne entière ou juste sur le premier caractère de la ligne.
Dans le premier, cela expliquerait pourquoi tout le premier fichier est entièrement recopié.

D'où ma question, comment ne valider la conditino que sur le premier caractère?

Merci!

"j'aime bien les nuages... :-|
0
cs_michelc Messages postés 27 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 18 mai 2005
24 juin 2004 à 10:11
la fonction left permet de récupérer les n caractères à gauches du texte ex:

texte="ABCDE"

toto=Left(texte,2) donne toto="AB"

donc si on veut comparer le premier caractère avec un espace on lit le premier caractere a gauche avec left(texte,1) avec le caractère voulu
0
bottnerl Messages postés 8 Date d'inscription samedi 8 mai 2004 Statut Membre Dernière intervention 15 avril 2007
31 déc. 2004 à 15:06
j'ai enregistré un son codé en ADCPM pour un message vocal dans un fichier sequenciel et la probleme que j'ai c'est qu'il rencontre des EOF en cours de route. Donc le fichier se referme.
il faudrai que je filtre ces EOF indesirables mais je ne connais pas le code ou les codes ASCII du ou des caracteres qui generent un EOF. Quelqu'un les connais il?
0
cm16 Messages postés 7 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 7 février 2008
7 févr. 2008 à 09:20
Je trouve cela déjà bien que certains prennent le temps de répondre a ce genre de question.
Comment voulez vous qu'une recherche permette de trouver des réponses, quant cela est orthographié incorrectement.

Les mots correctements orthographiés permettent de comprendre correctement les questions et d'avoir une réponse correspondante. Vous n'êtes pas sur un téléphone portable.
0
Rejoignez-nous