Overload (étude) et tests isnumeric

Soyez le premier à donner votre avis sur cette source.

Vue 5 120 fois - Téléchargée 185 fois

Description

Bonjour,

Depuis (très) peu de temps sur Delphi 7, je poste une source qui est pratiquement une demande d'aide déguisée avec un exemple simple : une conversion de type numérique en string.

Le problème initial était :
Peut-on faire un overload avec :
- une déclaration de fonction avec le type du paramétre voulu (ici integer)
- et l'autre déclaration avec un type de paramètre variant

et que la bonne fonction soit appelée selon le type de paramètre ?

Les tests montrent que la fonction déclarée avec un paramètre de type variant ne supplente pas celle déclarée avec un type integer, si le parmètre passé est entier.

L'autre problème consistait à tester si le paramètre variant est numérique ou non.

Conclusion :


Pour appeler la fonction définie avec le paramètre integer, cliquez sur le bouton "Num"
Pour appeler la fonction définie avec le paramètre variant, cliquez sur le bouton "txtBox". Le paramètre passé sera le texte du textbox.

Merci aux gourous du Delphi (et aux autres bien entendu !) de me dire si cette méthode est viable ou si il vaut l'éviter.

++
Moustachu

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1079
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
1 janvier 2012

Mauricio>tu as tout à fait raison, c'est bien plus simple ! Mais il y a un truc de bizarre c'est que chez moi ça compile.

Je pense que la source n'a pas trop d'intérêt du coup, je vais la retirer.

++
Moustachu
Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Ça ne compile pas non plus sous Delphi7.
Il faut enlever OVERLOAD et ça marche.

Il te faut simplement voir si tu peux convertir la variable type variant en integer comme tu le fais avec ta fonction IsNumeric. Donc, t' as resolu toi-meme le probleme ou alors g rien compris.
A+
Messages postés
1079
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
1 janvier 2012

>jmp77. Merci de ton commentaire. L'exemple donné est effectivement celui de la conversion FloatToStr, pour illustrer ce que je souhaitais faire :

L'appel ce cette fonction est effectué depuis un programme que je ne controle pas (càd : c'est pas moi qui le code).

Si l'appel de la fonction est effectué avec des paramètres d'un autre type qu'integer, je voulais tester si la conversion en numérique (du paramètre) était possible avant de lever une erreur.

La fonction que je code n'est, bien sûr, pas une simple conversion.

Donc sous Delphi 6 cela ne compile pas ?

Merci du conseil, je vais effectivement alléger le zip.

++
Moustachu
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
5
Hello,

ALors pour ma part j'utilise delphi 6 et voici les erreurs que j'ai à la compilation de ton projet :
[Conseil] Unit2.pas(20): La valeur affectée à 'Value' n'est jamais utilisée
[Erreur] Unit2.pas(24): Directive de compilation incorrecte : 'OVERLOAD'
[Erreur] Unit2.pas(29): Directive de compilation incorrecte : 'OVERLOAD'
[Erreur fatale] Unit1.pas(7): Impossible de compiler l'unité utilisée 'Unit2.pas'

Si je comprends bien tu veux convertir des nombres en str alors pourquoi n'utilises tu pas la fonction FloatToStr tout simplement.

Sinon petit remarque que les admins vont te faire je pense c'est que quand tu fournis une source tu ne dois fournir que les fichier .dpr, .pas, .dfm avant de soulager les serveurs.

Bonne prog,
JMP77.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.