VB : Ouvrir ficher a une certaine ligne du fichier ( )

Résolu
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 - 23 août 2010 à 13:54
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 - 23 août 2010 à 19:03
Bonjour , excuser moi , je programme un gros programme informatique
(j'ai 15 ans) (mon site : http://cpcdos.fr.nf/ ) Microsf01 Cpcdos sf01.

Dans mon programme , j'enregistre les paramètres , la configuration dans plusieurs fichiers avec uniquement un mot ou un chiffre dedans.
Je voudrais enregistrer tous ça dans UN fichier et le lire a une ligne précise.
ex : sur windows 2 le fichier paramètre s'appelle control.ini et dans ce fichier il y a :

5
150
true
true
208
false
windows 2.05
57
0.000587
true
......

et j'ai compris que par-exemple le '5' a la ligne 1 correspond a la sensibilité de la souris le ' true ' a la ligne 3 correspond a quelque chose.

je sais ouvrir et afficher TOUTES les lignes :

[i]Open "c:\config.cfg" For Input As #1
Line Input #1, texte
tout = texte
While Not EOF(1)
Line Input #1, texte
tout = tout + crlf + texte
Wend
Close #1/i
donc dans la variable "tout" il y a tous le contenue du fichier config.cfg

ET moi je voudrais savoir comment lire dans un fichier , UNE ligne précise ,
ex :
config.cfg :

5
8
false
0.815
1
false
true
Sébastien Favier
true


Dans la fichier config.cfg je voudrais récupérer le nom d'utilisateur qui se trouve à la ligne N°9 et le mettre dans une variable user

Comment faire ??? si vous avez pas bien compris , SVP dites le moi pour que je vous explique autrement car ca fait plusieurs jours que je cherche !!!

Merci !


Microsf01 Cpcsoft Cpcdos sf01 Favier Sébastien 01

13 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
23 août 2010 à 14:40
Une bête petite boucle le fait :
Public Function ReadLine(Filename As String, Ln As Integer, ByRef Result As String) As Boolean
'Returns FALSE if the target line was found, otherwise TRUE.
'Renvoit FALSE si la ligne a été trouvée, sinon TRUE.
 Dim FID As Long: FID = FreeFile
 Dim i As Integer, CurLine As String
 Open Filename For Input As FID
  While EOF(FID) = False
   i = i + 1
   Line Input #FID, CurLine
   If Ln = i Then
    Result = CurLine
    Exit Function
   End If
  Wend
 Close FID
 ReadLine = True
End Function


VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
3
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
23 août 2010 à 15:06
et je préfère dans un private sub
Apprends le VB et on verra après pour tes préférences .

Une fois que t'as collé cette fonction dans un module, il te suffit de faire :
Dim taVariable As String
taVariable = ReadLine("nomDuFichier.xyz",1) 'lit la ligne 1 du fichier nomDuFichier.xyz

Il y a quelques cours VB sur Développez.com.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
3
the_little_big_man Messages postés 86 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 14 février 2011
23 août 2010 à 15:26
petite correction dans l'utilisation...
tu dois faire :

ReadLine("nomDuFichier.xyz",1,taVariable)

Readline renvoi un booleen pas un string et la variable qui recoit le résultat est passée en param.
du coup tu récupère ta ligne dans taVariable

petite faute d'inattention de Mr ghuysmans99

A good excercise for the Heart is to bend down and help another up...
3
the_little_big_man Messages postés 86 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 14 février 2011
23 août 2010 à 15:28
et n'oubli pas le call devant ReadLine(...) . inattention de ma part

A good excercise for the Heart is to bend down and help another up...
3

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

Posez votre question
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
23 août 2010 à 14:50
ok mais , ....

tous ce qui est fonction..... j'en sais pas
trop et je ne sais pas comment marche ta réponse
mais sinon explique moi car ca ne fais rien du tout
et je préfère dans un private sub
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
23 août 2010 à 15:01
ok mais , ....

tous ce qui est fonction..... j'en sais pas
trop et je ne sais pas comment marche ta réponse
mais sinon explique moi car ca ne fais rien du tout
et je préfère dans un private sub
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
23 août 2010 à 15:02
dsl pour le double message il y a eu internet ki a planté
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
23 août 2010 à 15:07
dacc mercii !!
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
23 août 2010 à 15:27
ok
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
23 août 2010 à 15:29
ok
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
23 août 2010 à 15:31
A mercii Beaucoup !! Ca fonctionne !!!
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
23 août 2010 à 18:28
Pas de Call ! Tu dois d'abord vérifier si la valeur retournée est False. Si c'est le cas, tu peux utiliser le résultat. Donc comme ça :
Dim Result As String
If ReadLine("tonFichier.xyz", 1, Result) = True Then
 MsgBox "Impossible de lire le fichier ...", vbExclamation
 Exit Sub '(ou) Exit Function
End If
Debug.Print "ligne: " & Result

Désolé pour l'exemple pourri, je pensais encore à la version précédente de la fonction .

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
Cpcdos Messages postés 425 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 28 octobre 2016 1
23 août 2010 à 19:03
oki
0
Rejoignez-nous