informatixo
Messages postés129Date d'inscriptionmercredi 4 février 2004StatutMembreDernière intervention25 juillet 2012
-
21 mai 2005 à 13:19
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
24 mai 2005 à 19:57
J'ai réalisé une fonction EstNumerique en m'inspirant d'une solution
que delphiprog avait donné dans un post, donc ne vous étonnez pas de ce
nom.
Je réalise sur une fiche un formulaire d'ajout d'un fournisseur et je
contrôle dans les edit si c'est du numérique ou du texte et dès fois
comme par exemple pour le code postal la longueur de la chaîne pour que
ce ne soit pas différent de 5, etc.
Et j'ai justement un problème avec la fonction length, voilà le code qui me pose problème :
Quand je veux compiler, le deboger de delphi s'arrête sur cette ligne
en me place le curseur entre le ">" et le "5" en me disant :
"Opérateur non applicable à ce type d'opérande".
Pour m'en sortir j'ai essayé de faire un "not Length(txtCodePostal.Text)=5" mais ça m'affiche le même message d'erreur.
Quelqu'un a t-il une idée pour me sortir de ce problème ? Merci d'avance.
informatixo
Messages postés129Date d'inscriptionmercredi 4 février 2004StatutMembreDernière intervention25 juillet 20121 21 mai 2005 à 13:55
merci delphiprog,
Le coup des paranthèses est magique c'était juste ça. Par contre pour
ma fonction EstNumerique et après réflexion je n'ai pas besoin du "not"
puisqu'elle me renvoie true ou false. J'ai un peu différé de votre
exemple dans un post en ce sens que j'ai pas tenté la conversion en
integer mais en currency.
Je pense que la fonction en elle-même sera plus parlante :
======================================
function EstNumerique(strTexte:String):boolean;
begin
Result:=True;
try
StrToCurr(strTexte);
except
Result:=False;
end;
end;
======================================
J'ai mis cette fonction dans une nouvelle unité. A mon sens le fait de
tenter la conversion en currency me permet de gérer la virgule.
Quel est votre avis ?
En tous les cas merci de votre aide et d'avoir poster cette fonction dans un autre post.
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 22 mai 2005 à 23:43
Au risque d'avoir l'air d'insister, informatixo, voilà ce que je
voulais exprimer, avec un bout de code tourné de manière concrète et
amusante (?).
var
SoldeDeMonCompteBancaire: Byte; // (lol !)
DistanceConcessionnaireFerrari: LongWord;
// ce qui suit n'est pas terrible :
if (JeSuisPleinAuxAs(SoldeDeMonCompteBancaire) := True) and (DistanceConcessionnaireFerrari < 500) then
ShowMessage('Tiens, je pense que je vais m'offrir une Ferrari !');
// il vaut mieux coder ainsi :
if JeSuisPleinAuxAs(SoldeDeMonCompteBancaire) and (ConcessionnaireFerrari < 500) then
ShowMessage('je crois que je vais m'offrir une Ferrari');
// et pour tester le contraire, version pas terrible :
if (JeSuisPleinAuxAs(SoldeDeMonCompteBancaire) : = False) and (DistanceConcessionnaireFerrari > 500) then
ShowMessage('Je vais peut-être garder la Peugeot un an ou deux...');
// il vaut mieux faire :
if not (JeSuisPleinAuxAs(SoldeDeMonCompteBancaire)) and (DistanceConcessionnaireFerrari > 500) then
ShowMessage('Je vais peut-être garder la Peugeot un an ou deux...');
De même que, dans la vie, on ne dit pas "si ma tante en avait était vrai, je l'appellerais Tonton", mais "si ma tante en avait, je l'appellerais Tonton".
Ca permet de mieux coder, et d'envisager d'autres usages utiles des booléen, comme les basculeurs logiques.
Tiens, médite celle-là : "porte ouverte = pas porte ouverte", soit en code :
roud59
Messages postés99Date d'inscriptionjeudi 16 septembre 2004StatutMembreDernière intervention26 juillet 20072 23 mai 2005 à 11:04
Pour Jappee : je me permets un petit commentaire :
Le contraire de (A et B) est (non A) OU (non B). Tu aurais dû écrire
if (JeSuisPleinAuxAs(SoldeDeMonCompteBancaire) := False)ou (DistanceConcessionnaireFerrari > 500) then
ShowMessage('Je vais peut-être garder la Peugeot un an ou deux...');
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 23 mai 2005 à 14:29
Oui, roud59, complètement d'accord !
Merci de nous l'avoir fait remarquer.
Il s'agit hélas d'une erreur d'inattention, car je me suis plus
intéressé au premier terme de la condition qui appuyait la
démonstration, en négligeant quelque peu la logique globale.
Heureusement que je programmais pas pour l'Agence Spatiale Européenne à
cette-heure là, je sais pas vers quoi on le dirigeait, le lanceur.
Sûr que sur Jupiter ils captaient Canal Satellite, mdr
Désolé si j'ai embrouillé les choses en pensant les clarifier...
En fait, roud59, en regardant mieux mon code, je n'ai pas commis
l'erreur dont tu me fais le reproche, car dans les 2 dernières
propositions, j'ai inversé le sens de l'opérateur, et mis > 500 à la place de < 500 !
Mais j'admets que la 2ème condition est de toute manière ridicule et de nature à embrouiller,
car si tu as les moyens de te payer une Ferrari et que tu aimes ça, tu
vas sans doute parcourir les 1000 km qui te séparent du plus proche
concessionnaire. Quand à l'entretien, je suppose que le mécano vient
réparer sur site, au besoin ????
Sinon tu achètes la "Revue Technique", mdr, et tu mets le mains dans le cambouis.
Bonne prog', faut pas mollir pour si peu, diantre !
roud59
Messages postés99Date d'inscriptionjeudi 16 septembre 2004StatutMembreDernière intervention26 juillet 20072 24 mai 2005 à 16:53
Japee : la petite erreur d'inatention ne concerne pas l'opérateur (j'ai remarqué l'inversion de la comparaison qui équivaut à la négation) mais le AND qui doit être transformé en OR. Une telle erreur arrive à tout le monde; mais tout le monde n'est pas capable comme toi d'animer ce forum avec des exemples simples, concrets et amusants, et ça c'est important!
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 24 mai 2005 à 19:57
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient
.
Nous avons déjà eu l'occasion de féliciter Japee pour ses talents de pédagogue. Quand il allie l'humour à la programmation, il est impayable. Un vrai plaisir à lire ce Japee