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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VB : Fonctionnement d'un "On error goto next" pour récupérer ceci

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VB : Fonctionnement d'un "On error goto next" pour récupérer ceci

n°132521
Un4GivN
Posté le 30-04-2002 à 06:19:57  profilanswer
 

Private Sub Drive1_Change()
 
On Error GoTo apra
Dir1.path = Drive1.Drive
 
apra:
Dir1.path = "c:\"
 
End Sub
 
******************************
 
Si je prend un lecteur de cd vide, je reçois tout de même une erreur irrécupérable ( Error 68 : Device unavailable ).
 
Comment je peux faire ? Ça devrait pas être trop dur mais je vois vraiment pas comment faire. :(

mood
Publicité
Posté le 30-04-2002 à 06:19:57  profilanswer
 

n°132559
karlkox
Posté le 30-04-2002 à 10:07:19  profilanswer
 

Private Sub Drive1_Change()
 
On Error GoTo apra
Dir1.path = Drive1.Drive
 
apra:
    select case err.number
        case 68: Dir1.path = "c:\"
    end select
 
End Sub

n°132685
Carbon_14
Posté le 30-04-2002 à 13:57:24  profilanswer
 

Ne pas oublier l'exit sub avant l'étiquette (sinon, on y passe sans erreur) et de mettre On Error Goto 0 en quittant le module, sinon, la prochaine erreur sera bien déroutée dans un autre Sub et provoquera un symptôme étrange car voudra "sauter" ici.  
 
Sauf erreur de vieux souvenirs de VB3, je vois ça comme (copyright Karlkox):
Private Sub Drive1_Change()  
 
On Error GoTo apra  
Dir1.path = Drive1.Drive  
On Error GoTo 0
exit sub
 
apra:  
   select case err.number  
       case 68: Dir1.path = "c:\"
   end select  
   Resume next ' on passe à la ligne qui suit l'erreur
End Sub

n°132864
Un4GivN
Posté le 30-04-2002 à 18:48:29  profilanswer
 

essayez le code que vous venez de me donner... je reçois exactement la même erreur à la meme ligne :(

n°132903
jray
Posté le 30-04-2002 à 20:43:48  profilanswer
 

Un4GivN a écrit a écrit :

essayez le code que vous venez de me donner... je reçois exactement la même erreur à la meme ligne :(  




 
Chez moi, le code focntionne parfaitement. J'ai juste ajouté une ligne pour que ce soit encore mieux (mise à jour du contrôle "drive1" en "C:\" en cas d'erreur.
 
Tu as quel VB et quel système d'exploitation ?
 
Private Sub Drive1_Change()
 
On Error GoTo apra
Dir1.Path = Drive1.Drive
 
On Error GoTo 0
Exit Sub
 
apra:
  Select Case Err.Number
      Case 68:
      Drive1.Drive = "c:\"
      Dir1.Path = "c:\"
  End Select
  Resume Next
 
End Sub

n°132911
Un4GivN
Posté le 30-04-2002 à 21:46:46  profilanswer
 

jai vb6, winXP pro Fr... ca ne fonctionne tjrs pas :(

n°133230
Carbon_14
Posté le 02-05-2002 à 08:54:27  profilanswer
 

Ca doit venir de Win XP !  :(  :(  
 
J'ai un pb analogue avec le C sous Win 2000. La détection du caractère "removable" de mon ZIP. Sous tous Windows (3.11/95/98, NT pas encore vérifié), ZIP vide reconnu comme "removable". Sous 2K, si vide : vide. La mode a changé. :fou:  
 
Cf site microsoft ?? Y a peut-être truc à changer (acheter un VB plus récent ??). Si le prog est compilé sous un autre Windows, ça fait pareil (si oui, c'est intrinsèque à XP) ?

n°133269
Carbon_14
Posté le 02-05-2002 à 10:01:32  profilanswer
 

Si c'est insortable, faudrait essayer (j'ai recopié de mon code C)
 
UINT    uErrMode; (int en VB ça doit aller)
 
     // Empêche message du système quand y a erreur
     uErrMode = SetErrorMode(SEM_FAILCRITICALERRORS);
 
Accès à la fonction qui "craint" avec déroutage classique par On Erroro Goto en VB (retour de valeur en C)
 
     // revalide le déroutement d'erreur comme était avant
     SetErrorMode(uErrMode);
 
Ca empêche un message du système quand y a un disque absent par ex. On veut récupérer l'erreur (elle vient après) mais Windows prend les devants avec un massif : "lecteur non disponible" avec un gros "MessageBeep".
 
Faudrait que je cherche (guère le temps ce matin) la valeur symbolique de SEM_FAILCRITICALERRORS dans les fichiers .h.

n°133286
Carbon_14
Posté le 02-05-2002 à 10:36:39  profilanswer
 

Les variables sont dans winbase.h
 
#define SEM_FAILCRITICALERRORS      0x0001
#define SEM_NOGPFAULTERRORBOX       0x0002
#define SEM_NOALIGNMENTFAULTEXCEPT  0x0004
#define SEM_NOOPENFILEERRORBOX      0x8000
 
int ErrM
ErrM = SetErrorMode(1)
..
fonction critique
..
SetErrorMode(ErrM)  
 
devrait peut-être aider à intercepter l'interception Windows.
(Faut quand même les On Error Goto pour les traîter quand on a "la main" ).


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

  VB : Fonctionnement d'un "On error goto next" pour récupérer ceci

 

Sujets relatifs
[PHP] htaccess: récuperer le login dans un script chez free[JavaScript] Recuperer en JS une fenetre ouverte avec window.open
[C++ + XML] Recuperer les donnees dans une struc ?[JAVA] comment recuperer le navigateur par defaut du systeme ???
[Perl] Récuperer l'année d'un fichier ...VB6 - Récupérer la liste des fichiers d'un répertoire donné
[oracle SQL] comment recuperer la taille d'un champ ds une table ?[C] Récupérer espace disque
[PHP] Récupérer un taux de change automatiquement[java] recuperer des images sur le net?
Plus de sujets relatifs à : VB : Fonctionnement d'un "On error goto next" pour récupérer ceci


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