FORUM Tom's Hardware » Programmation » Autre » Erreur QBasic N°6
 

Erreur QBasic N°6

Matériel : carlito Le Bistrot : killerjeff, 1 utilisateur anonyme et 215 utilisateurs inconnus
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : Erreur QBasic N°6
 
Plus d'informations

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


Message édité par sonnie le 07-09-2006 à 16:46:44

pourquoi faire cent fois la même chose ?
Plus d'informations

c'est un peu idiot de passer par un soft externe.

tu sait que les softs qbasic sont presque compatible avec vba ?

Plus d'informations

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

Inside my own Second Life

Quel est le message complet de ton erreur ? Tu as essayé de rechercher sur la base de connaissance de MS à quoi ce message correspond (éventuellement sur le KB anglaise, bien plus fournie) ?

:jap:


---------------
Retrouvez moi sur mon blog : http://www.nicolasullern.net/leblog/
Et aussi sur :
http://www.linkedin.com/in/nicolasullern
http://www.viadeo.com/fr/profile/nicolas.ullern
http://www.copaing.net/johanpirlouit/
zeb
Profil : Modérateur libre
Plus d'informations

C'est peut-être même l'application QBasic qui renvoie 6 ou 55.

(Plz, change le titre, j'ai cru que tu travaillais avec MSDOS 6 ou MSDOS 5.5 :ange: )

Plus d'informations

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

zeb
Profil : Modérateur libre
Plus d'informations

>>autoexec.nt et config.nt
Rien à voir.

Que contient x$ au moment de l'exécution ?

Plus d'informations

salut

x$ contient simplement le n° du disque en hexadécimal, du style 6728-7A1B (c'est un genre de protection simple pour ne pas balader l'exécutable d'un poste à un autre) C'est une chaîne de caractères tirée d'un fichier texte.


Message édité par sonnie le 07-09-2006 à 18:44:14
zeb
Profil : Modérateur libre
Plus d'informations

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).


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.


Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » Autre » Erreur QBasic N°6
 

Annonces Google
Publicité