IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Conversions de mesures


précédentsommaire

V. Conversions et fonctions utilitaires

L'unité ConvUtils fournit plusieurs fonctions globales permettant de manipuler les données dont l'unité de mesure est recensée.

V-A. Opérations arithmétiques

Fonction ConvUnitAdd
Sélectionnez
function ConvUnitAdd(const AValue1: Double; const AType1: TConvType; const AValue2: Double; const AType2, AResultType: TConvType): Double;

Additionne deux mesures. On spécifie le type de mesure pour chacune des valeurs ainsi que le type de mesure du résultat.

Fonction ConvUnitDiff
Sélectionnez
function ConvUnitDiff(const AValue1: Double; const AType1: TConvType; const AValue2: Double; const AType2, AResultType: TConvType): Double;

Même chose, mais la fonction effectue une soustraction.

On peut citer également les fonctions ConvUnitInc et ConvUnitDec qui permettent d'incrémenter et de décrémenter une mesure dans le type de mesure spécifié.

V-B. Comparaisons et tests

Fonction ConvUnitWithinPrevious
Sélectionnez
function ConvUnitWithinPrevious(const AValue, ATest: Double;   const AType: TConvType; const AAmount: Double; const AAmountType: TConvType): Boolean;

Permet de vérifier si la valeur AValue est inférieure à la valeur ATest d'au plus la valeur AAmount. Nous précisons au passage le type d'unité de mesure dans lequel les valeurs sont exprimées.

Fonction ConvUnitWithinNext
Sélectionnez
function ConvUnitWithinNext(const AValue, ATest: Double; const AType: TConvType; const AAmount: Double; const AAmountType: TConvType): Boolean;

Idem que pour ConvUnitWithinPrevious, mais on teste si AValue est supérieur à ATest.

Fonction ConvUnitCompareValue
Sélectionnez
function ConvUnitCompareValue(const AValue1: Double; const AType1: TConvType; const AValue2: Double; const AType2: TConvType): TValueRelationship;

Compare deux valeurs, chacune spécifiée avec son unité de mesure respective (de la même famille), et renvoie un résultat de type TValueRelationship. TValueRelationship comporte 3 valeurs possibles :

  • LessThanValue (= -1)
  • EqualsValue (= 0)
  • GreaterThanValue (=1)
Fonction ConvUnitSameValue
Sélectionnez
function ConvUnitSameValue(const AValue1: Double; const AType1: TConvType; const AValue2: Double; const AType2: TConvType): Boolean;

Cette fonction est un peu plus basique que la précédente, car elle renvoie seulement true ou false selon que les deux valeurs passées en argument sont égales ou non.

Fonction CompatibleConversionTypes
Sélectionnez
function CompatibleConversionTypes(const AFrom, ATo: TConvType): Boolean;

Vérifie si deux types font partie de la même famille. Cela permet d'éviter de demander une conversion qui échouerait en raison de cette incompatibilité.

V-C. Listes de familles et d'unités de mesure

Procédure GetConvTypes
Sélectionnez
procedure GetConvTypes(const AFamily: TConvFamily; out ATypes: TconvTypeArray);

Récupère dans le paramètre ATypes la liste des types de mesure de la famille passée en paramètre (AFamily). TConvTypeArray est un tableau dynamique de TConvType soit un tableau d'entiers.

Procédure GetConvFamilies
Sélectionnez
procedure GetConvFamilies(out AFamilies: TConvFamilyArray);

Récupère la liste des familles recensées dans une variable tableau dynamique.

V-D. Affichage numérique et textuel des mesures

Fonction StrToConvUnit
Sélectionnez
function StrToConvUnit(AText: string; out AType: TConvType): Double;

Fonction intéressante qui permet de convertir une mesure exprimée textuellement en valeur de type TConvType. Par exemple :

 
Sélectionnez
StrToConvUnit('100 mètres', MonNouveauType)

parse la chaîne passée en paramètre et instancie un objet TConvType avec 'mètres' pour description et 100 pour valeur.

Fonction ConvUnitToStr
Sélectionnez
function ConvUnitToStr(const AValue: Double; const AType: TConvType): string;

C'est l'inverse qui se produit : à partir un objet TConvtype passé en paramètre et une valeur, on obtient une chaîne descriptive. Exemple :

 
Sélectionnez
ConvUnitToStr(100, duMeters)

renvoie ‘100 Mètres'

VI. Conclusion

Nous avons fait le tour du système de conversion d'unités de mesure sous Delphi 6, Kylix 2 et aussi, aurait-il fallu ajouter C++Builder 6 puisque, rappelons-le, ce dernier intègre la VCL (Visual Component Library), bibliothèque phare d'objets de Borland.
J'espère que vous aurez appris suffisamment d'éléments pour être capable d'intégrer vos systèmes de conversions dans vos applications. Si vous avez des questions, n'hésitez pas, et postez-les sur le forum Delphi de Developpez, tout le monde en profitera du coup.
Vous gagnerez un petit peu de temps en téléchargeant les sources ici.

Bon courage !


précédentsommaire

Copyright © 2002 Sylvain James. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.