Précédent   Forum des professionnels en informatique > Autres langages > Assembleur
Assembleur Forum d'entraide Assembleur. Avant de poster -> F.A.Q Assembleur Tutoriels Assembleur
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/09/2011, 10h19   #1
Invité de passage
 
Inscription : novembre 2009
Messages : 24
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 24
Points : 4
Points : 4
Par défaut Dépassement de capacité dans une base de données

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.
platon1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 12h11   #2
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 3 709
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Chercheur d'emploi
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2007
Messages : 3 709
Points : 7 268
Points : 7 268
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.
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/09/2011, 18h24   #3
Invité de passage
 
Inscription : novembre 2009
Messages : 24
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 24
Points : 4
Points : 4
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.
platon1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 11h18   #4
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 3 709
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Chercheur d'emploi
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2007
Messages : 3 709
Points : 7 268
Points : 7 268
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 ?
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 14h47   #5
Invité de passage
 
Inscription : novembre 2009
Messages : 24
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 24
Points : 4
Points : 4
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
platon1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/09/2011, 15h01   #6
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 3 709
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Chercheur d'emploi
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2007
Messages : 3 709
Points : 7 268
Points : 7 268
Citation:
Envoyé par platon1 Voir le message
Faut-il mettre "résolu" ?
Oui, en effet.
Tu pourras éventuellement repasser à l'état non résolu ultérieurement, si besoin.

Citation:
Merci encore
À ton service.
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h34.


 
 
 
 
Partenaires

Hébergement Web