Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1736 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Faire une boucle qui dure quelques secondes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Faire une boucle qui dure quelques secondes

n°1579813
Profil sup​primé
Posté le 27-06-2007 à 11:23:39  answer
 

Bonjour tout le monde
 
Voila je voudrais creer une boucle qui dure quelques secondes.
Voici mon script:
 

Code :
  1. <script language=vbscript>
  2. <!--
  3. Sub buttongReceiptData_OnClick()
  4. objet.Fonctionquicreeundossieryyyymmdd()
  5. if (Month(now) < 10 ) then
  6.  m = "0" + Cstr(Month(now))
  7. else
  8.  m = Cstr(Month(now))
  9. end if
  10. if (Day(now) < 10 ) then
  11.  d  = "0" + Cstr(Day(now))
  12. else
  13.  d  = Cstr(Day(now))
  14. end if
  15. temp = Cstr(Year(now)) + m + d
  16. Open("C:\VIDEOARCHIV\" + temp)
  17. end sub
  18. -->
  19. </script>


 
Le probleme est que le dossier n est pas cree assez rapidement, et lors de l execution de cette ligne:  Open("C:\VIDEOARCHIV\" + temp) , le dossier n est pas present sur mon disque dur.
 
J avais donc pense a une boucle qui dure quelques secondes avant cette ligne, comme ca le dossier aurait le temps d etre cree.
 
Savez vous si une telle chose est possible ?


Message édité par Profil supprimé le 27-06-2007 à 12:16:00
mood
Publicité
Posté le 27-06-2007 à 11:23:39  profilanswer
 

n°1579864
Profil sup​primé
Posté le 27-06-2007 à 12:31:34  answer
 

Ou peut etre un sleep, quelque chose dans le genre ?
 
Je trouve pas :s

n°1579866
Profil sup​primé
Posté le 27-06-2007 à 12:44:27  answer
 

Sachant que le sleep ne fonctionne pas :o
 
genre sleep 1000
 
J ai un message d'erreur: Type mismatch: 'sleep'

n°1579964
jpcheck
Pioupiou
Posté le 27-06-2007 à 15:44:47  profilanswer
 

do while dir(tonfichier)<>""  
loop
:)

n°1580114
Profil sup​primé
Posté le 27-06-2007 à 19:33:20  answer
 

jpcheck a écrit :

do while dir(tonfichier)<>""  
loop
:)


 
Le probleme est que je ne connais pas le nom du fichier, il est cree aleatoirement :o
 
enfin quand je tente ca:
 

Code :
  1. <script language=vbscript>
  2. <!--
  3. Sub buttongReceiptData_OnClick()
  4. objet.Fonctionquicreeundossieryyyymmdd()
  5. if (Month(now) < 10 ) then
  6.  m = "0" + Cstr(Month(now))
  7. else
  8.  m = Cstr(Month(now))
  9. end if
  10. if (Day(now) < 10 ) then
  11.  d  = "0" + Cstr(Day(now))
  12. else
  13.  d  = Cstr(Day(now))
  14. end if
  15. temp = Cstr(Year(now)) + m + d
  16.         do while dir("C:\VIDEOARCHIV\" + temp + "\*.jpg" ) <> "" 
  17.         loop
  18. Open("C:\VIDEOARCHIV\" + temp)
  19. end sub
  20. -->
  21. </script>


 
Internet Explorer me sort le message d erreur suivant : Error: Type mismatch: 'dir'
 
 :pt1cable:


Message édité par Profil supprimé le 27-06-2007 à 19:33:33
n°1580137
galopin01
Posté le 27-06-2007 à 21:51:11  profilanswer
 

Oups !


Message édité par galopin01 le 27-06-2007 à 21:54:08
n°1580172
jpcheck
Pioupiou
Posté le 28-06-2007 à 00:03:17  profilanswer
 

deja, j'avais po vu que c'était pour vbscript... galopin tu as une idée ?

n°1580182
galopin01
Posté le 28-06-2007 à 05:44:28  profilanswer
 

Non, j'étais parti sur DoEvents, mais vbscript n'est pas ma tasse de thé, c'est pourquoi j'ai supprimé...

n°1580189
masklinn_
Posté le 28-06-2007 à 08:06:30  profilanswer
 

galopin01 a écrit :

Non, j'étais parti sur DoEvents, mais vbscript n'est pas ma tasse de thé, c'est pourquoi j'ai supprimé...


Code :
  1. Function GoSleep(seconds)
  2.    '
  3.    ' Check the Windows Script Host Version.
  4.    '
  5.    wsv = WScript.Version
  6.    '
  7.    ' If it's 5.1 or newer, use the built-in Sleep command,
  8.    ' since it might be more reliable or better-performing.
  9.    '
  10.    if wsv >= "5.1" then
  11.       WScript.Sleep(seconds * 1000)
  12.    else
  13.      '
  14.      ' If the version isn't at least 5.1, use a quick-and-dirty
  15.      ' method of determining the elapsed time since the function
  16.      ' was called.
  17.      '
  18.      startTime = Time() ' gets the current time
  19.      endTime = TimeValue(startTime) + TimeValue(elapsed) ' calculates when time is up
  20.      '
  21.      ' While the current time is less than the calculated end time,
  22.      ' add zero to x.
  23.      '
  24.      While endTime > Time()
  25.          '
  26.          ' If there's nothing in here but a comment, the while
  27.          ' doesn't seem to process correctly, so we'll just tell
  28.          ' VBScript that we need it to let Windows do other things
  29.          ' for a little while...
  30.          '
  31.          DoEvents
  32.      Wend
  33.    end if
  34. End Function

n°1580422
Profil sup​primé
Posté le 28-06-2007 à 15:11:01  answer
 

Salut :)
 
Alors voila mon code:
 
 

Code :
  1. <script language=vbscript>
  2. <!--
  3. Function GoSleep(seconds)
  4.   wsv = WScript.Version
  5.   if wsv >= "5.1" then
  6.      WScript.Sleep(seconds * 1000)
  7.   else
  8.     startTime = Time()
  9.     endTime = TimeValue(startTime) + TimeValue(elapsed)
  10.    
  11.     While endTime > Time()
  12.         DoEvents
  13.     Wend
  14.   end if
  15. End Function
  16. Sub buttongReceiptData_OnClick()
  17. objet.Fonctionquicreeundossieryyyymmdd()
  18. GoSleep(3)
  19. if (Month(now) < 10 ) then
  20.  m = "0" + Cstr(Month(now))
  21. else
  22.  m = Cstr(Month(now))
  23. end if
  24. if (Day(now) < 10 ) then
  25.  d  = "0" + Cstr(Day(now))
  26. else
  27.  d  = Cstr(Day(now))
  28. end if
  29. temp = Cstr(Year(now)) + m + d
  30. Open("C:\VIDEOARCHIV\" + temp)
  31. end sub
  32. -->
  33. </script>


 
Ca ne fonctionne toujours pas, message d'erreur: Object required:'WScript'
 
J'oublie peut etre d'inclure quelque chose ? Ou alors j'insere la fonction au mauvais endroit ?


Message édité par Profil supprimé le 28-06-2007 à 15:12:38
mood
Publicité
Posté le 28-06-2007 à 15:11:01  profilanswer
 

n°1580432
MagicBuzz
Posté le 28-06-2007 à 15:18:29  profilanswer
 

regarde "objet.Fonctionquicreeundossieryyyymmdd()" histoire de la faire tourner en synchrone surtout.
 
effectivement, si tu crées un dossier avec FSO par exemple, t'as pas de problème, car "CreateDirectory()" te rend la main quand le répertoire est effectivement créé.

n°1580438
Profil sup​primé
Posté le 28-06-2007 à 15:23:33  answer
 

MagicBuzz a écrit :

regarde "objet.Fonctionquicreeundossieryyyymmdd()" histoire de la faire tourner en synchrone surtout.
 
effectivement, si tu crées un dossier avec FSO par exemple, t'as pas de problème, car "CreateDirectory()" te rend la main quand le répertoire est effectivement créé.


 
Elle tourne en synchrone oui  :jap:

n°1580440
MagicBuzz
Posté le 28-06-2007 à 15:29:17  profilanswer
 

Ben c'est bizarre ton histoire... Si c'est synchrone, alors à la sortie de l'appel le répertoire doit être créé, sinon y'a un léger souci...

n°1580447
Profil sup​primé
Posté le 28-06-2007 à 15:35:41  answer
 

MagicBuzz a écrit :

Ben c'est bizarre ton histoire... Si c'est synchrone, alors à la sortie de l'appel le répertoire doit être créé, sinon y'a un léger souci...


 
Oui, le dossier est correctement cree, c'est juste qu'avec la suite du script quand je clique sur le bouton, le dossier n'a pas le temps d'etre cree lorsque la ligne qui l'ouvre s'execute tu vois ?

n°1580461
MagicBuzz
Posté le 28-06-2007 à 15:44:40  profilanswer
 

non justement je vois pas :o
 
tu me dis que la fonction qui crée le dossier est synchrone. donc si c'est le cas, c'est impossible ce que tu me dis, puisque la fonction rendra la main quand le dossier aura effectivement été créé sur le disque, et pas avant...
 
pour moi c'est dans ta fonction qu'il faut que t'aille voire ce qu'il se passe


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Faire une boucle qui dure quelques secondes

 

Sujets relatifs
[PHP] Problème de boucle et menuBoucle sur fonction mail()
boucle for a l'interieur d'un select case possible en vb6?[RESOLU][aide] probleme de boucle
Problème de création de bouclesréutiliser une variable dans une boucle --> global?
Executer une action toute les X secondes[C] Boucle while qui bug!
Conversion durées -> secondes sur un fichier avec sed[Résolu]Boucle et lecture de fichiers...
Plus de sujets relatifs à : Faire une boucle qui dure quelques secondes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR