voila j'ai creer un btn qui quand je click dessus affiche
dans une message box les donnees presente dans un fichier
batch :
mon code:
Private Sub Command1_Click()
Dim ligne As String
Open "c:\xx.bat" For Input As #1
Input #1, ligne
While Input #1, ligne
MsgBox ("vos choix sont : " & ligne)
Close #1
Wend
End Sub
ca marche , je lis les differentes lignes jusqu'au bout,
mais lorsque je reviens plus tard cliquer sur son bouton
j'ai un message qui dit fichier deja ouvert.
ma methode n'est peut etre pas bonne ?!!!
merci d'une aide, conseil,
fred
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Nicolas Geniteau
Je pense que ce code devrait rectifier l'erreu Private Sub Command1_Click( Dim Fichier, buffer As Strin Fichier = "c:xx.bat Open Fichier For Input As # Do Until EOF(1 Input #1, buffe MsgBox ("Vos choix sont : " & buffer Loo Close # End Sub
Je pense que ce code devrait rectifier l'erreu
Private Sub Command1_Click(
Dim Fichier, buffer As Strin
Fichier = "c:xx.bat
Open Fichier For Input As #
Do Until EOF(1
Input #1, buffe
MsgBox ("Vos choix sont : " & buffer
Loo
Close #
End Sub
Je pense que ce code devrait rectifier l'erreu Private Sub Command1_Click( Dim Fichier, buffer As Strin Fichier = "c:xx.bat Open Fichier For Input As # Do Until EOF(1 Input #1, buffe MsgBox ("Vos choix sont : " & buffer Loo Close # End Sub
Zoury
Salut Fred!
Tu souhaites lire le fichier ligne par ligne ou tout d'un coup? Car il me semblerait agressant pour l'utilisateur de lui balancer chaque ligne une après l'autre à l'aide d'un message box.. :O)
observons un peu ton code..
Open "c:xx.bat" For Input As #1
ici tu ouvres ton fichier.
Je te conseilles vivement d'utiliser la function FreeFile afin d'obtenir le prochain numéro de fichier disponible.. cela te permettra de rendre ton code plus portable en plus de d'éviter des erreurs comme tu obtiens présentement. C'est particulièrement important dans les projets où plusieurs accès à des fichiers sont possibles.
Input #1, ligne
ici tu lis une ligne..
While Input #1, ligne
cette ligne ne compile pas.. :OP mais si elle compilait, tu relirais une ligne.. donc tu aurais pu supprimer la ligne qui précéde ;O)
MsgBox ("vos choix sont : " & ligne)
ici tu devrais enlèver les parenthèses OU ajouter le mot clé "Call" devant l'appelle.. voir la discussion suivante pour plus de détail.. http://groups.google.com/groups?threadm=u9D%24ncOMDHA.1612%40TK2MSFTNGP11.phx.gbl
Close #1
ici tu fermes le fichier..
Wend
et là recommence ta boucle. tu ne peux donc pas relire dans le fichier car ce dernier est fermé.
ca marche , je lis les differentes lignes jusqu'au bout,
si ton code marche, c'est que tu ne nous a pas posté ton code tel quel mais plutôt que tu l'as récrit dans le mail..
Voici donc un exemple démontrant les 2 méthodes : '*** Option Explicit
Private Sub Command1_Click()
' lecture ligne par ligne Call ReadFileLineByLine("c:test.txt")
' lecture complète Call ReadFile("c:test.txt")
End Sub
Private Sub ReadFileLineByLine(ByRef sFile As String)
Dim hFile As Long Dim sLigne As String
If (Not FileExists(sFile)) Then Exit Sub
hFile = FreeFile Open sFile For Input As #hFile Do Until EOF(hFile) Line Input #hFile, sLigne Call MsgBox(sLigne) Loop Close #hFile
End Sub
Private Sub ReadFile(ByRef sFile As String)
Dim hFile As Long Dim sTexte As String
If (Not FileExists(sFile)) Then Exit Sub
hFile = FreeFile Open sFile For Binary As #hFile sTexte = Space$(LOF(hFile)) Get #hFile, , sTexte Call MsgBox(sTexte) Close #hFile
End Sub
Private Function FileExists(ByRef sFile As String) As Boolean On Error Resume Next FileExists = (GetAttr(sFile) And vbDirectory) = 0 End Function '***
Tu souhaites lire le fichier ligne par ligne ou tout d'un coup? Car il me
semblerait agressant pour l'utilisateur de lui balancer chaque ligne une
après l'autre à l'aide d'un message box.. :O)
observons un peu ton code..
Open "c:xx.bat" For Input As #1
ici tu ouvres ton fichier.
Je te conseilles vivement d'utiliser la function FreeFile afin d'obtenir
le prochain numéro de fichier disponible.. cela te permettra de rendre ton
code plus portable en plus de d'éviter des erreurs comme tu obtiens
présentement. C'est particulièrement
important dans les projets où plusieurs accès à des fichiers sont possibles.
Input #1, ligne
ici tu lis une ligne..
While Input #1, ligne
cette ligne ne compile pas.. :OP
mais si elle compilait, tu relirais une ligne.. donc tu aurais pu supprimer
la ligne qui précéde ;O)
MsgBox ("vos choix sont : " & ligne)
ici tu devrais enlèver les parenthèses OU ajouter le mot clé "Call" devant
l'appelle.. voir la discussion suivante pour plus de détail..
http://groups.google.com/groups?threadm=u9D%24ncOMDHA.1612%40TK2MSFTNGP11.phx.gbl
Close #1
ici tu fermes le fichier..
Wend
et là recommence ta boucle. tu ne peux donc pas relire dans le fichier car
ce dernier est fermé.
ca marche , je lis les differentes lignes jusqu'au bout,
si ton code marche, c'est que tu ne nous a pas posté ton code tel quel mais
plutôt que tu l'as récrit dans le mail..
Voici donc un exemple démontrant les 2 méthodes :
'***
Option Explicit
Private Sub Command1_Click()
' lecture ligne par ligne
Call ReadFileLineByLine("c:test.txt")
' lecture complète
Call ReadFile("c:test.txt")
End Sub
Private Sub ReadFileLineByLine(ByRef sFile As String)
Dim hFile As Long
Dim sLigne As String
If (Not FileExists(sFile)) Then Exit Sub
hFile = FreeFile
Open sFile For Input As #hFile
Do Until EOF(hFile)
Line Input #hFile, sLigne
Call MsgBox(sLigne)
Loop
Close #hFile
End Sub
Private Sub ReadFile(ByRef sFile As String)
Dim hFile As Long
Dim sTexte As String
If (Not FileExists(sFile)) Then Exit Sub
hFile = FreeFile
Open sFile For Binary As #hFile
sTexte = Space$(LOF(hFile))
Get #hFile, , sTexte
Call MsgBox(sTexte)
Close #hFile
End Sub
Private Function FileExists(ByRef sFile As String) As Boolean
On Error Resume Next
FileExists = (GetAttr(sFile) And vbDirectory) = 0
End Function
'***
Tu souhaites lire le fichier ligne par ligne ou tout d'un coup? Car il me semblerait agressant pour l'utilisateur de lui balancer chaque ligne une après l'autre à l'aide d'un message box.. :O)
observons un peu ton code..
Open "c:xx.bat" For Input As #1
ici tu ouvres ton fichier.
Je te conseilles vivement d'utiliser la function FreeFile afin d'obtenir le prochain numéro de fichier disponible.. cela te permettra de rendre ton code plus portable en plus de d'éviter des erreurs comme tu obtiens présentement. C'est particulièrement important dans les projets où plusieurs accès à des fichiers sont possibles.
Input #1, ligne
ici tu lis une ligne..
While Input #1, ligne
cette ligne ne compile pas.. :OP mais si elle compilait, tu relirais une ligne.. donc tu aurais pu supprimer la ligne qui précéde ;O)
MsgBox ("vos choix sont : " & ligne)
ici tu devrais enlèver les parenthèses OU ajouter le mot clé "Call" devant l'appelle.. voir la discussion suivante pour plus de détail.. http://groups.google.com/groups?threadm=u9D%24ncOMDHA.1612%40TK2MSFTNGP11.phx.gbl
Close #1
ici tu fermes le fichier..
Wend
et là recommence ta boucle. tu ne peux donc pas relire dans le fichier car ce dernier est fermé.
ca marche , je lis les differentes lignes jusqu'au bout,
si ton code marche, c'est que tu ne nous a pas posté ton code tel quel mais plutôt que tu l'as récrit dans le mail..
Voici donc un exemple démontrant les 2 méthodes : '*** Option Explicit
Private Sub Command1_Click()
' lecture ligne par ligne Call ReadFileLineByLine("c:test.txt")
' lecture complète Call ReadFile("c:test.txt")
End Sub
Private Sub ReadFileLineByLine(ByRef sFile As String)
Dim hFile As Long Dim sLigne As String
If (Not FileExists(sFile)) Then Exit Sub
hFile = FreeFile Open sFile For Input As #hFile Do Until EOF(hFile) Line Input #hFile, sLigne Call MsgBox(sLigne) Loop Close #hFile
End Sub
Private Sub ReadFile(ByRef sFile As String)
Dim hFile As Long Dim sTexte As String
If (Not FileExists(sFile)) Then Exit Sub
hFile = FreeFile Open sFile For Binary As #hFile sTexte = Space$(LOF(hFile)) Get #hFile, , sTexte Call MsgBox(sTexte) Close #hFile
End Sub
Private Function FileExists(ByRef sFile As String) As Boolean On Error Resume Next FileExists = (GetAttr(sFile) And vbDirectory) = 0 End Function '***
"Nicolas Geniteau" (pas ca)> a écrit dans le message de news:
Je pense que ce code devrait rectifier l'erreur Private Sub Command1_Click() Dim Fichier, buffer As String Fichier = "c:xx.bat" Open Fichier For Input As #1 Do Until EOF(1) Input #1, buffer MsgBox ("Vos choix sont : " & buffer) Loop Close #1 End Sub
Hello, la bonne façon est: -------------------------------- Private Sub Command1_Click() Dim Fichier as String Dim Buffer As String Dim Ligne as String Dim fh as Integer
Fichier = "c:xx.bat" fh = Freefile Open Fichier For Input As #fh While Not(Eof(fh)) Line Input #fh, Ligne Buffer = Buffer & Ligne & vbCrLf Wend Close #fh MsgBox ("Vos choix sont : " & vbCrLf & Buffer) End Sub ---------------------------------------------
"Nicolas Geniteau" <nico_ge03@hotmail.com(pas ca)> a écrit dans le message
de news:68F1A6A8-6D50-4E41-870A-F6411BAAD384@microsoft.com...
Je pense que ce code devrait rectifier l'erreur
Private Sub Command1_Click()
Dim Fichier, buffer As String
Fichier = "c:xx.bat"
Open Fichier For Input As #1
Do Until EOF(1)
Input #1, buffer
MsgBox ("Vos choix sont : " & buffer)
Loop
Close #1
End Sub
Hello,
la bonne façon est:
--------------------------------
Private Sub Command1_Click()
Dim Fichier as String
Dim Buffer As String
Dim Ligne as String
Dim fh as Integer
Fichier = "c:xx.bat"
fh = Freefile
Open Fichier For Input As #fh
While Not(Eof(fh))
Line Input #fh, Ligne
Buffer = Buffer & Ligne & vbCrLf
Wend
Close #fh
MsgBox ("Vos choix sont : " & vbCrLf & Buffer)
End Sub
---------------------------------------------
"Nicolas Geniteau" (pas ca)> a écrit dans le message de news:
Je pense que ce code devrait rectifier l'erreur Private Sub Command1_Click() Dim Fichier, buffer As String Fichier = "c:xx.bat" Open Fichier For Input As #1 Do Until EOF(1) Input #1, buffer MsgBox ("Vos choix sont : " & buffer) Loop Close #1 End Sub
Hello, la bonne façon est: -------------------------------- Private Sub Command1_Click() Dim Fichier as String Dim Buffer As String Dim Ligne as String Dim fh as Integer
Fichier = "c:xx.bat" fh = Freefile Open Fichier For Input As #fh While Not(Eof(fh)) Line Input #fh, Ligne Buffer = Buffer & Ligne & vbCrLf Wend Close #fh MsgBox ("Vos choix sont : " & vbCrLf & Buffer) End Sub ---------------------------------------------
Zoury
Salut Jean-Marc! :O)
Line Input #fh, Ligne Buffer = Buffer & Ligne & vbCrLf
<snip>
MsgBox ("Vos choix sont : " & vbCrLf & Buffer)
tu te retrouves avec les contenus entier du fichier... seulement la méthode employé pour y parvenir est très, très lente. La concaténation en VB n'est pas des plus rapides et lorsque l'on concatène une chaine avec elle même pour y ajouter du texte, la vitesse d'exécution décroit proportionnellement avec le nombre d'appelle.. jètes une oeil sur la fonction ReadFile() posté dans mon message pour une des techniques les plus rapides de lecture complète de fichier.
Line Input #fh, Ligne
Buffer = Buffer & Ligne & vbCrLf
<snip>
MsgBox ("Vos choix sont : " & vbCrLf & Buffer)
tu te retrouves avec les contenus entier du fichier... seulement la méthode
employé pour y parvenir est très, très lente. La concaténation en VB n'est
pas des plus rapides et lorsque l'on concatène une chaine avec elle même
pour y ajouter du texte, la vitesse d'exécution décroit proportionnellement
avec le nombre d'appelle.. jètes une oeil sur la fonction ReadFile() posté
dans mon message pour une des techniques les plus rapides de lecture
complète de fichier.
Line Input #fh, Ligne Buffer = Buffer & Ligne & vbCrLf
<snip>
MsgBox ("Vos choix sont : " & vbCrLf & Buffer)
tu te retrouves avec les contenus entier du fichier... seulement la méthode employé pour y parvenir est très, très lente. La concaténation en VB n'est pas des plus rapides et lorsque l'on concatène une chaine avec elle même pour y ajouter du texte, la vitesse d'exécution décroit proportionnellement avec le nombre d'appelle.. jètes une oeil sur la fonction ReadFile() posté dans mon message pour une des techniques les plus rapides de lecture complète de fichier.
Je te conseille plutot un code de ce genre (qui est bien plus rapide) :
Dim k As Integer, strBuffer As String, tblLignes() As String k = FreeFile Open "c:xx.bat" For Binary As #k strBuffer = String$(LOF(k), vbNullChar) Get #k, , strBuffer Close #k tblLignes = Split(strBuffer, vbCrLf): strBuffer = "" For k = 0 To UBound(tblLignes) MsgBox "Vos choix sont : " & tblLignes(k) Next k
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/ http://apisvb.europe.webmatrixhosting.net/
fred a écrit :
salut,
voila j'ai creer un btn qui quand je click dessus affiche dans une message box les donnees presente dans un fichier batch :
mon code:
Private Sub Command1_Click() Dim ligne As String Open "c:xx.bat" For Input As #1 Input #1, ligne While Input #1, ligne MsgBox ("vos choix sont : " & ligne) Close #1 Wend End Sub
ca marche , je lis les differentes lignes jusqu'au bout, mais lorsque je reviens plus tard cliquer sur son bouton j'ai un message qui dit fichier deja ouvert.
ma methode n'est peut etre pas bonne ?!!! merci d'une aide, conseil, fred
Salut,
Je te conseille plutot un code de ce genre (qui est bien plus rapide) :
Dim k As Integer, strBuffer As String, tblLignes() As String
k = FreeFile
Open "c:xx.bat" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
tblLignes = Split(strBuffer, vbCrLf): strBuffer = ""
For k = 0 To UBound(tblLignes)
MsgBox "Vos choix sont : " & tblLignes(k)
Next k
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/
fred <anonymous@discussions.microsoft.com> a écrit :
salut,
voila j'ai creer un btn qui quand je click dessus affiche
dans une message box les donnees presente dans un fichier
batch :
mon code:
Private Sub Command1_Click()
Dim ligne As String
Open "c:xx.bat" For Input As #1
Input #1, ligne
While Input #1, ligne
MsgBox ("vos choix sont : " & ligne)
Close #1
Wend
End Sub
ca marche , je lis les differentes lignes jusqu'au bout,
mais lorsque je reviens plus tard cliquer sur son bouton
j'ai un message qui dit fichier deja ouvert.
ma methode n'est peut etre pas bonne ?!!!
merci d'une aide, conseil,
fred
Je te conseille plutot un code de ce genre (qui est bien plus rapide) :
Dim k As Integer, strBuffer As String, tblLignes() As String k = FreeFile Open "c:xx.bat" For Binary As #k strBuffer = String$(LOF(k), vbNullChar) Get #k, , strBuffer Close #k tblLignes = Split(strBuffer, vbCrLf): strBuffer = "" For k = 0 To UBound(tblLignes) MsgBox "Vos choix sont : " & tblLignes(k) Next k
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/ http://apisvb.europe.webmatrixhosting.net/
fred a écrit :
salut,
voila j'ai creer un btn qui quand je click dessus affiche dans une message box les donnees presente dans un fichier batch :
mon code:
Private Sub Command1_Click() Dim ligne As String Open "c:xx.bat" For Input As #1 Input #1, ligne While Input #1, ligne MsgBox ("vos choix sont : " & ligne) Close #1 Wend End Sub
ca marche , je lis les differentes lignes jusqu'au bout, mais lorsque je reviens plus tard cliquer sur son bouton j'ai un message qui dit fichier deja ouvert.
ma methode n'est peut etre pas bonne ?!!! merci d'une aide, conseil, fred