cs_Sipat
Messages postés71Date d'inscriptionmardi 26 octobre 2004StatutMembreDernière intervention15 avril 2007
-
4 nov. 2004 à 13:42
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 2006
-
4 nov. 2004 à 14:44
La fonction
shell "command.com /c dir /b /od c:\pat.* > c:\pat.txt,vbhide
Fonctionne très bien mais j'ai remarqué qu'il lui falait du temps
c'est a dire qu'il faut un petit temps d'arrêt entre :
Private Sub Form_Load()
shell "command.com /c dir /b /od c:\pat.* > c:\pat.txt,vbhide
End Sub
Private Sub Form_Activate()
Dim tout, texte As String
On Error Resume Next
Open "c:\PAT.txt" For Input As #1
Line Input #1, texte
List1.AddItem (texte)
tout = texte
If Len(tout) <> 0 Then
While Not EOF(1)
Line Input #1, texte
List1.AddItem (texte)
tout = tout + (Chr$(13) + Chr$(10)) + texte
Wend
End If
Close #1
End Sub
Il faut deux lancement pour avoir la bonne liste dans mon contrôle ListBox.
si je place un stop juste aprés la commande Shell et que je rappuis sur exécuté ce délais suffit pour que command.com se referme ou laisse la main.
J'ai essayé une boucle pour ralentir placé au dessous de la commande shell :
Dim x, z As Integer
Dim t, i As String
For z = 1 To 200
For x = 1 To 1000
i = x
Next x
Next z
Le ralentissement permet lors du lancement du programme d'avoir exactement les valeurs du fichier pat.txt dans ma listbox
Bien sur l'affichage de form1 mais plus de temps pour s'afficher .
Comment éviter ce désagrément?
Je voulais employer la fonction Shell sur msdn il y a un exemple ou on peu mettre un temps (wait) qui pourrait être intéressant pour mois mais je ne comprends pas.
Encore merci pour la réponse
A bienôt.
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 4 nov. 2004 à 14:44
*ton pb c'est que Shell() lance la commande que tu lui transmet en argument et rend la main aussitot après le lancement à la suite du code VB, sans attendre que la commande ne se soit terminer (~ lancement en tache de fond).
Pour résoudre le pb il te faut une version synchrone de Shell. Va voir dans mes sources, j'ai ce qu'il te faut.
La solution de thierrydelepine est pas bete mais pas élégante et pas sûre, car tu ne peux pas prévoir le temps que mettra ton Dir à s'executer !!!!