SM: un ShowMessage sans InttoStr ni FloattoStr

Soyez le premier à donner votre avis sur cette source.

Vue 391 fois - Téléchargée 11 fois

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

Ajouter un commentaire

Commentaires

Messages postés
1721
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
30 août 2020
3
@ fredelem :
Il faut obligatoirement mettre une note pour pouvoir ajouter un commentaire.
Messages postés
3817
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
29 août 2020
35 >
Messages postés
1721
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
30 août 2020

Salut,

oui c'est pas sympas de forcer la note ainsi
du coup elle ne reflète pas forcément la qualité du code.

On peut proposer des modifications et/ou d'autres voies et vouloir noter à l'issue des changements !!!!

enfin ce que j'en dis ... ^^

Sinon ça fait toujours autant plaisir de te croiser sur ce site qui semble être confiné depuis longtemps ^^

Ils t'ont enfermé avec moi ??? haha
Messages postés
1721
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
30 août 2020
3 >
Messages postés
3817
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
29 août 2020

Salut Cirec,

Moi, j'ai apprécié le côté enthousiaste et pédagogique de ce code, c'est rafraîchissant et ça change des productions récentes.
Je suis d'accord avec toi sur le système de notation.
D'ailleurs, on peut avoir quelque chose à dire sans avoir envie ou se sentir autorisé à mettre une note...
Et des étoiles, ça signifie quoi ? Le grand Charles en avait deux sur son képi, et puis ???
Content d'avoir de tes nouvelles, mais je ne suis pas certain de vouloir être confiné avec toi, déjà qu'avec ma femme... aïe, elle était derrière moi ! ^^
Messages postés
3817
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
29 août 2020
35
si tu veux une fonction un peu plus évoluée
regarde cette fonction "MakeStr" dans ce code :
https://codes-sources.commentcamarche.net/source/34463-multivars-label-avec-libelle-version-d4-et

@+

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.