nous avions développé une application utilisant vb6.0 et SQL Server 2000 il y a quelques années. récemment, certains de nos clients nous ont dit que, lors de l’exécution de l’application, certains ordinateurs utilisant Winxp sp2 comme système d’exploitation obtenaient l’erreur suivante lorsqu’ils souhaitaient afficher le formulaire de recherche:
"Erreur d'exécution 380: valeur de propriété non valide"
Qu'est-ce qui cause cette erreur?
Je suppose que votre application utilise une zone d’édition masquée? Il s'agit d'un problème relativement bien connu, documenté par Microsoft ici:
http://support.Microsoft.com/kb/177088
L'article fait référence à VB4 et 5, mais je suis à peu près sûr qu'il en va de même pour VB6.
EDIT
Lors de recherches ultérieures, je trouve des références à ce problème avec d'autres contrôles également. La recompilation de votre application sous Windows XP pour les utilisateurs exécutant XP leur fournira probablement une version opérationnelle, bien que ce ne soit pas une solution idéale ...
Juste pour lancer mes deux cents: une autre cause fréquente de cette erreur dans mon expérience est le code dans l'événement Form_Resize
qui utilise les mathématiques pour redimensionner les contrôles d'un formulaire. Les dimensions de contrôle (Height
et Width
) ne peuvent pas être définies sur des valeurs négatives. Par conséquent, un code semblable à celui-ci dans votre événement Form_Resize
peut provoquer cette erreur:
Private Sub Form_Resize()
'Resize text box to fit the form, with a margin of 1000 twips on the right.'
'This will error out if the width of the Form drops below 1000 twips.'
txtFirstName.Width = Me.Width - 1000
End Sub
Le code ci-dessus générera une erreur "Valeur de propriété non valide" si le formulaire est redimensionné à une largeur inférieure à 1 000 twips. Si tel est le problème, la solution la plus simple consiste à ajouter On Error Resume Next
en première ligne, de manière à ce que ce type d'erreur soit ignoré. C’est l’une des rares situations dans VB6 où On Error Resume Next
est votre ami.
Quelles sont les causes de erreur d'exécution 380 ? Tentative de définir une propriété d'un objet ou d'un contrôle sur une valeur non autorisée. Examinez le code qui s'exécute lorsque votre formulaire de recherche charge (Form_Load, etc.) pour tout code définissant une propriété sur quelque chose qui dépend de valeurs d'exécution.
Mon autre conseil est d’ajouter une gestion des erreurs et une certaine journalisation pour retrouver la ligne exacte à l’origine de l’erreur.
Erl
pour indiquer les numéros de ligne et trouver la ligne exacte - MZTools peut automatiquement mettre des numéros de ligne à votre place. _
On Error Goto Handler
<routine contents>
Handler:
Err.Raise Err.Number, "(function_name)->" & Err.source, Err.Description
Vieux fil, mais voici une réponse.
Polices problématiques avec voyager
c'est à dire. si vous installez une suite corel, supprimez certaines options de langue. Nous avons analysé le problème avec le moniteur de processus et avons trouvé la raison, avec nous c’était ces deux fichiers de polices.
DFKai71.ttf Dfmw5.ttf
Nous avons eu le même problème et il a été résolu en supprimant ces deux fichiers de polices du dossier windows\fonts.
2017 je sais ... mais quelqu'un est confronté à ce problème lors de la maintenance de son code.
Cette erreur s'est produite lorsque j'ai essayé:
maskedbox.Mask = "#.###"
maskedbox.Text = "12345678"
Pour résoudre ce problème, définissez simplement la propriété PromptInclude sur "false".
L'une des raisons de cette erreur est une erreur très stupide dans le code. Si la valeur appropriée n'est pas transmise à une propriété d'ActiveX, cette erreur est également générée.
Comme une valeur vide est transmise à la propriété Font.Name ou une valeur de texte à la propriété Height.
Je pense que le problème réside essentiellement dans le fait de savoir dans quelle version du système d’exploitation le programme a été compilé et dans quelle version du programme d’exploitation exécutez-vous le programme. Un grand nombre de fichiers dll et ocx mis à jour provoquant des erreurs similaires, en particulier lorsque le programme a été compilé sous une version antérieure des fichiers dll et ocx et lors de la configuration, les derniers fichiers dll et ocx sont conservés.
Peut-être que vous localisez à l’écran un contrôle (étiquette, cadre, texte, etc.) hors des bords de l’écran. Si la position d’un contrôle dépend de n’importe quelle variable et que cette variable n’est pas définie correctement au début , vous pouvez avoir ce message d'erreur.
Peut-être que vous avez une résolution d'écran différente sur les deux ordinateurs. Et cela pourrait être la raison.
afin de trouver le bogue du programme, mettez cette ligne dans tous les sous-marins:
si cela corrige le problème, vous devez effacer cette ligne dans chaque sous-fichier, un par un, et vérifier si le problème réapparaît. Lorsque le problème reviendra après la suppression de cette ligne dans un sous-marin concret, vous saurez quel sous-programme stocke le bogue. Cherchez là et vous le trouverez.
Beaucoup de choses vraiment stupides peuvent causer cette erreur. Celle que j'ai rencontrée est une police qui n'est plus incluse dans Windows 8 par défaut - Courier New. L'application VB6 avait son nom codé en dur dans l'un des formulaires, d'où le message au démarrage.
On dirait que les réponses ci-dessus s'appliquent à l'écriture et à la compilation d'un programme, mais j'utilise le logiciel du fournisseur, Catalog.exe
, qui fait partie du catalogue de cartes Voyager
de "Ex Libris" et j'obtiens également l'erreur:
catalog-error.png http://img805.imageshack.us/img805/8275/catalogerror.png
J'ai deux machines Windows 7 32 bits. Le plus récent me donne l'erreur mais sur l'ancien il fonctionne bien. J'ai fait beaucoup de recherches avec Google et voici certaines des choses que j'ai trouvées que les gens disent liées à ce problème. Peut-être qu'une de ces choses aidera à réparer l'erreur pour vous, bien qu'elles n'aient pas fonctionné pour moi:
Run-Time Error 380
(essayez de mettre à jour)sfc /scannow
Run as Administrator
)D'après ce que d'autres disent (comme David M), je pense que cela pourrait être lié à la bibliothèque MSVBM60.DLL
- mais il semble que sur mes deux ordinateurs, ce fichier est exactement le même (même version, même taille, même date, etc.).
Comme ce fichier n’était pas différent, j’ai essayé de trouver quels autres fichiers (dll) l’application pourrait utiliser. J’ai donc lancé Process Explorer de Sysinternals et j’ai jeté un coup d’œil à l’application (elle se charge puis se bloque lorsque "Connecter"), et les captures d’écran ci-dessous sont ce que j’ai trouvé.
screen1.png http://img195.imageshack.us/img195/2231/screen1oo.png
screen2.png http://img88.imageshack.us/img88/2153/screen2ao.png
screen3.png http://img337.imageshack.us/img337/7622/screen3qk.png
Maintenant, je ne suis pas un programmeur Windows/VB, mais un utilisateur expérimenté. Je suis donc à la fin de mes connaissances pour savoir quoi faire. J'ai parlé au fournisseur de logiciels et ils recommandent de réinstaller Windows. Cela fonctionnera probablement, mais cela me dit que ce programme peut fonctionner sous Windows 7, mais que quelque chose sur ce système provoque des erreurs. Enfin, il s’agit d’une image qui a déjà été déployée sur plusieurs ordinateurs. Par conséquent, bien que réinstaller Windows une fois n’est pas si grave, il me permettrait de gagner beaucoup de temps si je pouvais trouver un correctif ou une solution de contournement.
Si vous écrivez un logiciel, ou utilisez un logiciel écrit, qui stocke les coordonnées de la fenêtre du programme ou les tailles à réutiliser lors du démarrage d’un programme, recherchez-y tout événement de taille et de position qui en serait la cause. Je l'ai vu maintes et maintes fois de divers fournisseurs produisant paresseusement du code qui redimensionne et repositionne les contrôles sur un "formulaire" (une fenêtre de programme) en fonction de la taille dudit formulaire. Recherchez dans HKLM\Software\Vendor\Program et HKCU\Software\Vendor\Program. Rechercher des clés spécifiques qui pourraient être offensantes. Une fois, j'avais un magasin de programmes -48000 pour la position de la fenêtre du programme dans des clés appelées WindowsPosX et WindowPosY. Vous pouviez voir le programme démarrer et s'exécuter sur la barre des tâches, mais étant donné que la fenêtre du programme elle-même était inférieure à 48 000 (valeur absolue de -48 000), il était complètement sorti de l'écran. Si vous n'êtes pas à l'aise avec la modification des informations de regstry - la plupart des gens ne le sont pas -, désinstallez le logiciel, utilisez un nettoyeur de registre pour supprimer les entrées non utilisées, puis réinstallez le logiciel et voyez si le problème ne soit pas résolu.