Erreur QBasic N°6
Dernière réponse : dans Programmation
Bonjour à tous,
en VBA je lance depuis Excel un exécutable créé en QBasic qui doit transformer les données d'un fichier source et écrire les résultats dans un fichier cible.
Sur 3 postes ça fonctionne bien (2 en XP pro et 1 en XP home)
Sur 2 autres ça ne passe pas (1 en XP pro et 1 en XP home) : la fenêtre dos m'affiche l'erreur 6. Si j'appuie sur entrée c'est l'erreur 55 qui apparait... Je ne trouve pas la définition des erreurs 6 et 55 donc j'ai du mal à savoir ce qui les cause.
A noter que jusqu'à maintenant je n'avais noté aucun problème sous Windows 98 SE. Sur XP ça ne passe pas sur tous les postes : s'agit-il d'une question de configuration ?...
Merci pour votre aide
en VBA je lance depuis Excel un exécutable créé en QBasic qui doit transformer les données d'un fichier source et écrire les résultats dans un fichier cible.
Sur 3 postes ça fonctionne bien (2 en XP pro et 1 en XP home)
Sur 2 autres ça ne passe pas (1 en XP pro et 1 en XP home) : la fenêtre dos m'affiche l'erreur 6. Si j'appuie sur entrée c'est l'erreur 55 qui apparait... Je ne trouve pas la définition des erreurs 6 et 55 donc j'ai du mal à savoir ce qui les cause.
A noter que jusqu'à maintenant je n'avais noté aucun problème sous Windows 98 SE. Sur XP ça ne passe pas sur tous les postes : s'agit-il d'une question de configuration ?...
Merci pour votre aide
Autres pages sur : erreur qbasic
Lassé par la pub ? Créez un compte
Bonjour Batchy,
j'ai effectivement remarqué sur quelques exemples que l'écriture QBasic est proche du VBA.
Je l'aurais bien "réécrit" mais dans le cas présent je ne dispose pas des sources. Je dois donc cerner le problème assez finement pour en parler aux gens qui ont développé ce petit utilitaire.
Si dans un premier temps quelqu'un pouvait me dire à quoi correspondent ces erreurs 6 et 55 ça me relancerait je crois...
Merci
j'ai effectivement remarqué sur quelques exemples que l'écriture QBasic est proche du VBA.
Je l'aurais bien "réécrit" mais dans le cas présent je ne dispose pas des sources. Je dois donc cerner le problème assez finement pour en parler aux gens qui ont développé ce petit utilitaire.
Si dans un premier temps quelqu'un pouvait me dire à quoi correspondent ces erreurs 6 et 55 ça me relancerait je crois...
Merci
Bonjour à tous,
je me suis procuré ce qui semblent être les sources du programme Qbasic qui me pose problème.
Apparemment l'erreur 6 est en fait un overflow.
Voici le code correspondant :
DEF FNK0 = ((LTRIM$(RTRIM$((LEFT$(RIGHT$(x$, 9), 4) + RIGHT$(RIGHT$(x$, 4), 4))))) <> HEX$(inf03# - AGECPT#))
plus tard on test cette expression FNK0 et c'est à ce moment que provient l'erreur d'overflow sur certains postes en XP.
J'ai regardé les fichiers autoexec.nt et config.nt et ils sont identiques sur les postes où ça passe normalement et sur ceux qui provoquent l'erreur
Si quelqu'un a une idée de la provenance du problèmes à la vue de ces nouveaux éléments je serais ravie qu'on me vienne en aide.
Merci à tous
je me suis procuré ce qui semblent être les sources du programme Qbasic qui me pose problème.
Apparemment l'erreur 6 est en fait un overflow.
Voici le code correspondant :
DEF FNK0 = ((LTRIM$(RTRIM$((LEFT$(RIGHT$(x$, 9), 4) + RIGHT$(RIGHT$(x$, 4), 4))))) <> HEX$(inf03# - AGECPT#))
plus tard on test cette expression FNK0 et c'est à ce moment que provient l'erreur d'overflow sur certains postes en XP.
J'ai regardé les fichiers autoexec.nt et config.nt et ils sont identiques sur les postes où ça passe normalement et sur ceux qui provoquent l'erreur
Si quelqu'un a une idée de la provenance du problèmes à la vue de ces nouveaux éléments je serais ravie qu'on me vienne en aide.
Merci à tous
Eh, eh, ça sent le numéro de série de volume ça
Analysons ta fonction
Elle est en deux partie, la première met en forme une chaîne de caractères, la seconde transforme en Hexa deux nombres.
Il n'est pas impossible que l'overflow provienne de la seconde partie, mais c'est peu probable.
Pour vérifier, si tu peux, remplace la fonction FNK0 par ce qui suit et constate que ça ne plante plus (ou pas).
/!\ Ce n'est pas la solution mais un *truc* pour vérifier où n'est pas le problème.
Concernant la muise en forme de la chaîne de caractères, regardons un peu ça :
1 1'
------------ -------------
LTRIM$(RTRIM$(LEFT$(RIGHT$(x$, 9), 4) + RIGHT$(RIGHT$(x$, 4), 4)))
---------------------- -----------------------
2 2'
Entrée : 6728-7A1B
1 : Prendre les 9 derniers caractères de 6728-7A1B (->6728-7A1B)
2 : Puis en prendre les 4 premiers (->6728)
1' : Prendre les 4 derniers caractères de 6728-7A1B (->7A1B)
2' : Puis en prendre les 4 premiers (->7A1B)
+ : Concaténer les deux (->67287A1B)
xTRIM : Virer les espaces avant et après (->67287A1B)
Quelques commentaires : j'espère que vous avez virer celui qui à écrit ça !
On doit virer les espaces avant, pas après.
La fonction parait vraiment chiadée mais en fait elle est toute conne :
C'est tellement mal foutu de ce côté que je suis tenté de croire que le problème est là.
Si jamais la chaîne x$ fait moins de 4 caractères au départ, je ne sais pas ce que renvoye un LEFT 4 ou un RIGHT 4.
Peut-être bien un Erreur 6 Overflow.
Analysons ta fonction
Elle est en deux partie, la première met en forme une chaîne de caractères, la seconde transforme en Hexa deux nombres.
Il n'est pas impossible que l'overflow provienne de la seconde partie, mais c'est peu probable.
Pour vérifier, si tu peux, remplace la fonction FNK0 par ce qui suit et constate que ça ne plante plus (ou pas).
DEF FNK0 = "X" <> HEX$(inf03# - AGECPT#)
/!\ Ce n'est pas la solution mais un *truc* pour vérifier où n'est pas le problème.
Concernant la muise en forme de la chaîne de caractères, regardons un peu ça :
1 1'
------------ -------------
LTRIM$(RTRIM$(LEFT$(RIGHT$(x$, 9), 4) + RIGHT$(RIGHT$(x$, 4), 4)))
---------------------- -----------------------
2 2'
Entrée : 6728-7A1B
1 : Prendre les 9 derniers caractères de 6728-7A1B (->6728-7A1B)
2 : Puis en prendre les 4 premiers (->6728)
1' : Prendre les 4 derniers caractères de 6728-7A1B (->7A1B)
2' : Puis en prendre les 4 premiers (->7A1B)
+ : Concaténer les deux (->67287A1B)
xTRIM : Virer les espaces avant et après (->67287A1B)
Quelques commentaires : j'espère que vous avez virer celui qui à écrit ça !
On doit virer les espaces avant, pas après.
La fonction parait vraiment chiadée mais en fait elle est toute conne :
DEF FNK0 = (LEFT$(LTRIM$(RTRIM$(x$)), 4) + RIGHT$(LTRIM$(RTRIM$(x$)), 4) <> HEX$(inf03# - AGECPT#))
C'est tellement mal foutu de ce côté que je suis tenté de croire que le problème est là.
Si jamais la chaîne x$ fait moins de 4 caractères au départ, je ne sais pas ce que renvoye un LEFT 4 ou un RIGHT 4.
Peut-être bien un Erreur 6 Overflow.
Lassé par la pub ? Créez un compte
)