SM: un ShowMessage sans InttoStr ni FloattoStr

Description

Je n'ai pas pu participer à la discussion car le bouton [Ajouter un commentaire]
refuse de m'obéir et je ne vois aucun bouton marqué [Donner une note].
Merci de toutes façons à Cirec.

- - - - - - - -

Vous le savez, bien sûr, si on veut qu'un ShowMessage affiche les valeurs de 2
variables (X, entier, et Y, flottant), il faut écrire :
ShowMessage ('X vaut '+inttostr (x) +'et Y vaut '+floattostr (y) ;
Avec Sm, il suffit d'écrire :
Sm ('X vaut ', X, 'et Y vaut ', Y) ;

Voilà, c'est pas grand-chose mais personnellement, depuis que j'ai cette
possibilité de remplacer le long mot "Showmessage" par le petit mot "Sm" et de ne
plus avoir à taper des "inttostr", des 'floattostr" et des "Booltostr", je trouve
la programmation plus agréable. Je vous conseille donc de lancer le programme
"Tester" pour voir ce que vous en penserez.
Vous pourrez vérifier qu'avec SM, on a moins de travail et que le fait d'avoir
la source du programme permet de changer la couleur, la position, la fonte, et la
taille de la fonte du SM.
Vous savez tout. Inutile de lire plus loin. A votre place, je dézipperais le
fichier, je lancerais Tester.Dpr et je verrais un peu la fonction Sm. Car ce qui
suit est un peu casse-tête et peut attendre plus tard pour être lu.

Pour écrire cette procédure Sm, il m'a fallu utiliser des variants. Tout le monde
ne le sait pas, les variants sont des variables dont la nature n'est pas définie
une fois pour toute. Ils peuvent être des nombres, puis devenir des strings,
puis redevenir des nombres, éventuellemet des booléens, etc...
Par exemple, on peut écrire :
var x : variant ;
begin
x : =-1 ; // x devient un byte
x : =inttostr (x) ; // x devient une string
x : =strtobool (x) ; // x devient un booléen
end ;

La procédure Sm se trouve dans l'unité MesUtils. Au début, telle que je l'avais
écrite, il fallait tout mettre entre crochets :
Sm ( ['X vaut ', X, 'et Y vaut ', Y] ) ;
Puis l'idée m'est venue de créer une procédure surchargée sans crochets pour 2
arguments par exemple :

PROCEDURE Sm (Const C1 : Variant ; Const C2 : Variant) ; Overload ;
Begin
Sm ( [C1, C2] ) ; // On appelle la version mère avec crochets qui accepte jusqu'à 255 arguments
End;

Personnellement, j'apprécie de pouvoir me passer des crochets.
J'ai créé 8 procédures surchargées pour aller de 1 à 8 variants, puis 2 autres
(en les appelant SM2 car Delphi ne m'a pas permis de créer plus de 9 SM) pour
aller de 9 à 10 variants.

Si vous le souhaitez, vous pouvez en créer plus.

Un variant ne peut pas être une adresse. Si vous voulez afficher l'adresse de la
variable X, il faut écrire :
Sm ('L''adresse de la variable X est ', Adr(x) ) ;
La fonction Adr(x) se trouve, comme Sm, dans l'unité MesUtils.

Si vous pensez que l'unité MesUtils risque de vous être quelquefois utile, je vous
conseille de la mettre dans le répertoire Lib de votre Delphi. Comme ça, vous
n'aurez pas besoin de la recopier dans vos prochains projets. Pensant que vous
le ferez, j'ai laissé mes utilitaires persos dans l'unité, dont forcément certains,
très simples, que probablement vous avez déjà.. Vous les découvrirez en lisant le
fichier. Rien ne vous empêche d'en enlever ou d'en ajouter.

Après avoir essayé Tester.Dpr, virez-le ainsi que Unit1.Pas, puis envoyez
MesUtils.Pas et MesConsts.Pas dans le répertoire Lib de votre Delphi (chez moi,
c'est "C:Program FilesBorlandDelphi7Lib" mais Delphi7 a presque 20 ans d'âge !)
. Si vous ne savez pas où est le vôtre, cliquez dans l'IDE sur "Outils", puis sur
"Options d'environnement', puis sur "Variables d'environnement", puis dans le
petit menu déroulant, placez-vous sur "Delphi" et validez. A la valeur affichée,
ajoutez (dans votre tête) "Lib" et vous aurez le chemin de la librairie.

Bon courage.

PS: Si vous voulez rester fidèle à ShowMessage tout en ayant quelques avantages de
SM, si vous avez ajouté MesUtils à la liste des "Uses" , il vous suffira d'écrire:
Sm0(['x vaut ',x,' y vaut ',y,' z vaut ',z etc... ]);

Avec des crochets, vous pourrez mettre autant d'arguments que vous voudrez...
Si vous ne voulez pas avoir à taper des crochets, il vous faudra créer des
overloads de Sm0 comme ceux que j'ai créés pour Sm. J'ai créé les 3 premiers.
Et si vous voulez positionner vos ShowMessage, je vous signale l'existence du mot
ShowmessagePos

Codes Sources

A voir également

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.