|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : novembre 2009 Messages : 24 ![]() |
Bonjour à tous,
je ne sais pas sur quel forum poser ma question et je n'ai pas trouvé à ce jour de FAQ pour y répondre. Comme j'ai fait un tout petit peu d'assembleur au début des mini-ordinateurs j'ai pensé que là je pourrais avoir la réponse. j'utilise une base de données spécifique dans laquelle on entre en particulier dans un champ le produit d'un prix unitaire par un nombre d'objets. En sortant un état des des entrées il y a des champs où l'on trouve des valeurs négatives ce qui a priori est impossible. L'entrée est faite en 2 temps : un code barre numérique faisant référence à un objet et un prix unitaire, puis un nombre d'objets entré au clavier. Le SAV du logiciel me dit qu'après l'entrée du prix unitaire, un temps d'inattention et au lieu d'entrer le nombre d'objets on relit le code barre ce qui entraine un prix faramineux qui peut dépasser la capacité de stockage du nombre et changer le bit de signe. On peut concevoir des parades, mais je suis dubitatif sur la possibilité d'avoir accès au bit de signe avec une somme de nombres très grands. Ma question porte donc sur la possibilité de modifier le bit de signe en cas de dépassement de capacité pour le nombre. Merci de votre avis. |
|
|
00
|
|
|
#2 |
![]() ![]() Chercheur d'emploi Inscription : septembre 2007 Messages : 3 709 ![]() |
Bonjour,
Déjà, quel système de base de données utilises-tu ? Un serveur SQL ou un système plus modeste en local ? Ensuite, tout dépend du type de donnée que tu as utilisé pour représenter ton prix. Quand je dis « tu », c'est parce que je ne sais pas si c'est toi qui administres ta base ou si c'est à la charge des concepteurs du logiciels que tu utilises. Soit c'est un nombre flottant (type float ou double), soit c'est un NUMERIC(n,d) avec un nombre de décimales fixées, soit c'est un bête entier sur 32 bits, divisé éventuellement par 100 pour gérer les centimes. Il y a de fortes chances, surtout si le logiciel a été écrit en Java, que les concepteurs se soient arrêtés à la troisième option. Dans ce cas, le bug peut soit se trouver dans la base, soit provenir de la manière dont le programme interprète les nombres. Il faut savoir qu'en binaire naturel, les nombres signés et non signés sont écrits de la même façon, et que c'est la manière dont on les lit qui fait la différence (y compris au niveau du micro-processeur même). C'est de la même façon que sur un compteur kilométrique, « 99999999 » peut représenter soit presque cent millions de kilomètres, soit un seul kilomètre en marche arrière. Sur un int 32 bits signé donc, la gamme des valeurs possibles s'étend de -2.147.483.648 à 2.147.483.647. Les codes barres s'étendant sur 13 chiffres, il est tout-à-fait possible de rentrer dans le domaine des valeurs interdites. Il reste que c'est pour le moins une faiblesse de conception, pour ne pas dire un code très sale. En fonction de tes réponses, j'orienterai ton post vers le bon forum. |
|
|
10
|
|
|
#3 |
|
Invité de passage
![]() Inscription : novembre 2009 Messages : 24 ![]() |
Merci déjà pour cette réponse.
il s'agit du logiciel ELLIPSES de la société TMIC pour la gestion d'une librairie. Normalement je ne rentre pas dans les problèmes techniques de ce logiciel, mais comme j'arrive à des incompréhensions d'utilisation, je cherche à comprendre. c'est je pense un serveur SQL installé en local(3 postes) qui peut être contrôlé à distance par le SAV du concepteur. J'ignore le format du nombre concerné, mais le SAV peut peut-être me le dire, s'il veut bien. J'ai déjà demandé à mon interlocuteur de prévoir quelque chose pour éviter cette situation. Je vais essayer d'en savoir un peu plus. |
|
|
00
|
|
|
#4 |
![]() ![]() Chercheur d'emploi Inscription : septembre 2007 Messages : 3 709 ![]() |
Difficile d'être plus catégorique sans voir les données elles-mêmes, effectivement.
As-tu remarqué d'autres irrégularités, telles que des numéros de code barre aux mauvais endroits, sur les lignes qui contiennent ces prix négatifs ? |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : novembre 2009 Messages : 24 ![]() |
effectivement, il devrait y avoir une valeur de code barre dans le nombre d'objet par exemple. j'ai demandé des informations complémentaires au SAV.
je pense que pour l'instant il vaut mieux clore la discussion. je reviendrai si j'ai d'autres informations. Faut-il mettre "résolu" Merci encore |
|
|
00
|
|
|
#6 |
![]() ![]() Chercheur d'emploi Inscription : septembre 2007 Messages : 3 709 ![]() |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com