Extraction de données dans un fichier texte

Le
Ekra3008
Bonjour;

J'ai une application développée en VB6 qui lit un fichier texte de
configuration d'un routeur cisco.

Je souhaite extraire une donnée précise dans une ligne de commande de ce
fichier texte et la placer dans une variable.

Cependant, je ne sais pas comment faire

L'information se trouve dans une ligne présentée comme ceci "ip address
192.168.1.1 255.255.255.0"

Je souhaite extraire l'adresse ip

Je remercie d'avance celui qui pourrait éventuellement m'aider

Cordialement
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
LE TROLL
Le #15355591
Bonsoir,

Lire le fichier en mode binaire, jusqu'à ce
que tu trouves le début, puis tu notes le début et
la longueur (fin) de ton info, que tu n'as plus
qu'à conserver (durant la lecture)... Ceci, si le
fichier n'est pas trop gros, à cause du temps...

Sinon, tu peux chercher ligne par ligne en
méthode séquentielle, et tu appliques la méthode
de recherche de chaînes sur chaque ligne, puis tu
finalises comme sus-cité la bonne ligne pour
extraire l'info.

Troisième possibilité, non exhaustives...
avaler tout les fichier dans une variable, et
faire une recherche de chaînes dans cette
dernière, etc...

En fait, la méthode sera celle qui est la plus
rapide et la plus viable quant à la taille, que
nous n'avons pas l'honneur de connaître :o)

Si tu ne sais pas faire, tu me passes ton
fichier, et l'info à extirper, je te fais ça; vois
mon adresse sous-citée. Toutefois, si c'est juste
pour une fois, à la main avec "recherche", tu iras
plus vite...

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Ekra3008" message de news: fm5nob$98g$
| Bonjour;
|
| J'ai une application développée en VB6 qui lit
un fichier texte de
| configuration d'un routeur cisco.
|
| Je souhaite extraire une donnée précise dans une
ligne de commande de ce
| fichier texte et la placer dans une variable.
|
| Cependant, je ne sais pas comment faire
|
| L'information se trouve dans une ligne présentée
comme ceci "ip address
| 192.168.1.1 255.255.255.0"
|
| Je souhaite extraire l'adresse ip
|
| Je remercie d'avance celui qui pourrait
éventuellement m'aider
|
| Cordialement
|
|
|
Jean-marc
Le #15355571
Ekra3008 wrote:
Bonjour;

J'ai une application développée en VB6 qui lit un fichier texte de
configuration d'un routeur cisco.

Je souhaite extraire une donnée précise dans une ligne de commande de
ce fichier texte et la placer dans une variable.

Cependant, je ne sais pas comment faire

L'information se trouve dans une ligne présentée comme ceci "ip
address 192.168.1.1 255.255.255.0"

Je souhaite extraire l'adresse ip

Je remercie d'avance celui qui pourrait éventuellement m'aider

Cordialement



Hello,

C'est tout simple.
Lire d'abord l'entièreté du fichier dans un buffer, puis
récupérer l'ip avec un peu de pattern matching.

Pour lire tout le fichier, tu as une fonction toute
faite dans la FAQ VB : ReadFileToBuffer.
Voici l'adresse:
http://faq.vb.free.fr/index.php?question5

Puis pour extraire ton IP, voici la fonction:

Private Function ExtractIP(ByVal filename As String, ByRef ip_adr As String)
As Boolean
Dim errCode As Integer
Dim errString As String
Dim fileContent As String
Dim Pattern As String
Dim p As Long
Dim tmp As String

ExtractIP = False
fileContent = ReadFileToBuffer(filename, errCode, errString)
Pattern = "ip address"
If errCode = 0 Then
p = InStr(fileContent, Pattern)
If p <> 0 Then
tmp = Mid$(fileContent, p + Len(Pattern) + 1)
tmp = Mid$(tmp, 1, InStr(tmp, " "))
ip_adr = Trim$(tmp)
ExtractIP = True
End If
End If
End Function

Et pour l'utiliser :

Private Sub Command1_Click()
Dim ip As String
Dim ret As Boolean

ret = ExtractIP("c:fic.cfg", ip)
If ret Then
MsgBox "l'ip est : " & ip
Else
MsgBox "une erreur s'est produite"
End If
End Sub


C'est testé et ça marche, bien sur. Je te laisse juste ajouter
le controle d'erreur et tout ça. La routine, quoi ...

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Ekra3008
Le #15355401
Bonjour;

Je te remercie pour ton orientation. La solution que Jean-Marc me propose me
convient parfaitement donc, je vais l'implémenter et tester le résultat.

Ceci dit juste pour information, le fichier texte comporte cinq lignes donc
très court ce qui n'imposait pas de développer une procédure optimalisant la
rapidité. J'ai juste développé un processus en lecture séquentielle
récupérant ligne par ligne dans un buffer que je traite après en envoyant la
"sauce" dans le mscomm.output (port com rs232).

L'application à pour but de réinitialiser le routeur cisco en configuration
d'usine et de charger un fichier de configuration minimal ne comportant
uniquement une adresse IP pour le reprendre à distance. Ce que je veux
faire, c'est récuperer l'adressse ip de ce fichier texte dans un msgbox pour
contrôle avant de l'injecter dans le routeur.

Voili voilà, encore une fois merci beaucoup pour ton aide. Je m'aperçois que
les news sont visitées pour des âmes de très bonne attention et non de ...

Ekra3008

"LE TROLL" %235JU$
Bonsoir,

Lire le fichier en mode binaire, jusqu'à ce
que tu trouves le début, puis tu notes le début et
la longueur (fin) de ton info, que tu n'as plus
qu'à conserver (durant la lecture)... Ceci, si le
fichier n'est pas trop gros, à cause du temps...

Sinon, tu peux chercher ligne par ligne en
méthode séquentielle, et tu appliques la méthode
de recherche de chaînes sur chaque ligne, puis tu
finalises comme sus-cité la bonne ligne pour
extraire l'info.

Troisième possibilité, non exhaustives...
avaler tout les fichier dans une variable, et
faire une recherche de chaînes dans cette
dernière, etc...

En fait, la méthode sera celle qui est la plus
rapide et la plus viable quant à la taille, que
nous n'avons pas l'honneur de connaître :o)

Si tu ne sais pas faire, tu me passes ton
fichier, et l'info à extirper, je te fais ça; vois
mon adresse sous-citée. Toutefois, si c'est juste
pour une fois, à la main avec "recherche", tu iras
plus vite...

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Ekra3008" message de news: fm5nob$98g$
| Bonjour;
|
| J'ai une application développée en VB6 qui lit
un fichier texte de
| configuration d'un routeur cisco.
|
| Je souhaite extraire une donnée précise dans une
ligne de commande de ce
| fichier texte et la placer dans une variable.
|
| Cependant, je ne sais pas comment faire
|
| L'information se trouve dans une ligne présentée
comme ceci "ip address
| 192.168.1.1 255.255.255.0"
|
| Je souhaite extraire l'adresse ip
|
| Je remercie d'avance celui qui pourrait
éventuellement m'aider
|
| Cordialement
|
|
|




Ekra3008
Le #15355391
Bonjour Jean-Marc;

ce que tu me propose convient parfaitement à ce que je veux faire. Je vais
l'adapter et l'implémenter dans mon code et je te dirai quoi après avoir
tester.

Ceci dit, je te remercie pour ton aide. J'aurais certainement trouvé une
solution avec le temps mais bon...

Comme je l'ai dit au TROLL, l'application remet en configuration d'usine un
routeur cisco et pour pouvoir le prendre à distance en ip, je dois injecter
à l'issue de la réinit, une configuration minimale comportant une adresse
ip. Ce que je veux faire, c'est visualiser l'adresse donc, il me suffit pour
cela, de la récupérer dans un msgbox.

Je te tiens au courant, encore une fois, merci pour ton aide.

Ekra3008




"Jean-marc" de news: 4786976b$0$29257$
Ekra3008 wrote:
Bonjour;

J'ai une application développée en VB6 qui lit un fichier texte de
configuration d'un routeur cisco.

Je souhaite extraire une donnée précise dans une ligne de commande de
ce fichier texte et la placer dans une variable.

Cependant, je ne sais pas comment faire

L'information se trouve dans une ligne présentée comme ceci "ip
address 192.168.1.1 255.255.255.0"

Je souhaite extraire l'adresse ip

Je remercie d'avance celui qui pourrait éventuellement m'aider

Cordialement



Hello,

C'est tout simple.
Lire d'abord l'entièreté du fichier dans un buffer, puis
récupérer l'ip avec un peu de pattern matching.

Pour lire tout le fichier, tu as une fonction toute
faite dans la FAQ VB : ReadFileToBuffer.
Voici l'adresse:
http://faq.vb.free.fr/index.php?question5

Puis pour extraire ton IP, voici la fonction:

Private Function ExtractIP(ByVal filename As String, ByRef ip_adr As
String) As Boolean
Dim errCode As Integer
Dim errString As String
Dim fileContent As String
Dim Pattern As String
Dim p As Long
Dim tmp As String

ExtractIP = False
fileContent = ReadFileToBuffer(filename, errCode, errString)
Pattern = "ip address"
If errCode = 0 Then
p = InStr(fileContent, Pattern)
If p <> 0 Then
tmp = Mid$(fileContent, p + Len(Pattern) + 1)
tmp = Mid$(tmp, 1, InStr(tmp, " "))
ip_adr = Trim$(tmp)
ExtractIP = True
End If
End If
End Function

Et pour l'utiliser :

Private Sub Command1_Click()
Dim ip As String
Dim ret As Boolean

ret = ExtractIP("c:fic.cfg", ip)
If ret Then
MsgBox "l'ip est : " & ip
Else
MsgBox "une erreur s'est produite"
End If
End Sub


C'est testé et ça marche, bien sur. Je te laisse juste ajouter
le controle d'erreur et tout ça. La routine, quoi ...

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;






Jean-marc
Le #15355371
Ekra3008 wrote:
Bonjour Jean-Marc;



Hello,

ce que tu me propose convient parfaitement à ce que je veux faire. Je
vais l'adapter et l'implémenter dans mon code et je te dirai quoi
après avoir tester.

Ceci dit, je te remercie pour ton aide. J'aurais certainement trouvé
une solution avec le temps mais bon...

Je te tiens au courant, encore une fois, merci pour ton aide.




Avec plaisir !

Merci à toi pour le retour, c'est toujours agréable!

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Ekra3008
Le #15376431
Bonjour J-M;

J'ai implémenté ton code dans mon application. Après une adaptation mineure
(gestion des erreurs), il fonctionne parfaitement et répond à mes attentes.

Ceci dit, en parcourant le forum, j'ai pu constater que tu interviens
régulièrement et la simplicité de tes interventions sans sous-entendu ou
critique font de toi quelqu'un de fiable !!!

Encore merci

Cordialement


"Jean-marc" de news: 478891b2$0$22313$
Ekra3008 wrote:
Bonjour Jean-Marc;



Hello,

ce que tu me propose convient parfaitement à ce que je veux faire. Je
vais l'adapter et l'implémenter dans mon code et je te dirai quoi
après avoir tester.

Ceci dit, je te remercie pour ton aide. J'aurais certainement trouvé
une solution avec le temps mais bon...

Je te tiens au courant, encore une fois, merci pour ton aide.




Avec plaisir !

Merci à toi pour le retour, c'est toujours agréable!

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;






Jean-marc
Le #15376421
Ekra3008 wrote:
Bonjour J-M;



Hello Ekra,

J'ai implémenté ton code dans mon application. Après une adaptation
mineure (gestion des erreurs), il fonctionne parfaitement et répond à
mes attentes.




Parfait, content d'avoir pu aider :-)

Ceci dit, en parcourant le forum, j'ai pu constater que tu interviens
régulièrement et la simplicité de tes interventions sans sous-entendu
ou critique font de toi quelqu'un de fiable !!!

Encore merci



Et merci à toi pour le sympathique retour, ça fait toujours plaisir :-)

Bien amicalement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Publicité
Poster une réponse
Anonyme