EXTRAIRE UN CHIFRE D'UN STRING APRÈS UNE CERTAINE POSITION
fabiin
Messages postés329Date d'inscriptionmercredi 4 avril 2001StatutMembreDernière intervention 8 décembre 2009
-
2 juin 2002 à 18:06
fabiin
Messages postés329Date d'inscriptionmercredi 4 avril 2001StatutMembreDernière intervention 8 décembre 2009
-
2 juin 2002 à 18:06
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
fabiin
Messages postés329Date d'inscriptionmercredi 4 avril 2001StatutMembreDernière intervention 8 décembre 20096 2 juin 2002 à 18:06
ah ouais g fai pleisn de conneries
merci
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 2 juin 2002 à 15:00
Et si au lieu d'une fonction tu déclarais une procédure avec un paramètre var de type différent dans chaque déclaration et que tu déclarais chaque procédure comme overload :
procedure ExtraireChiffreApres(Source: string; Dep: integer; out Valeur : integer);overload;
procedure ExtraireChiffreApres(Source: string; Dep: integer; out Valeur : int64);overload;
procedure ExtraireChiffreApres(Source: string; Dep: integer; out Valeur : Real);overload;
Ainsi (valable à partir de Delphi 4), le compilateur reconnait quelle procédure appeler en fonction du type du paramètre "valeur".
Qu'en penses-tu ?
Dernière chose, où est déclarée la fonction Mid dans : "valu := mid(Source,a,1)[1];"
Elle n'existe pas dans D4 mais peut être remplacée par Copy.
Autre proposition pour améliorer la lisibilité, au lieu de :
if ((Ord(valu)>=48) and (Ord(valu)<=57)) or (Ord(valu)=45) then
mettre :
if valu in ['0'..'9','-'] then
Reconnais que c'est nettement plus lisible et plus facile à comprendre !
Enfin, pour éviter les plantages violents, il serait bon d'utiliser StrToIntDef au lieu de StrToInt. Ainsi :
Result := strtoint(num);
devient
Result := StrToIntDef(num, 0);
Et tu es assuré d'une valeur de retour même dans le cas où tu renvoies un type réel comme résultat dans le paramètre Valeur puisqu'il y a compatibilité de type dans ce sens.
2 juin 2002 à 18:06
merci
2 juin 2002 à 15:00
procedure ExtraireChiffreApres(Source: string; Dep: integer; out Valeur : integer);overload;
procedure ExtraireChiffreApres(Source: string; Dep: integer; out Valeur : int64);overload;
procedure ExtraireChiffreApres(Source: string; Dep: integer; out Valeur : Real);overload;
Ainsi (valable à partir de Delphi 4), le compilateur reconnait quelle procédure appeler en fonction du type du paramètre "valeur".
Qu'en penses-tu ?
Dernière chose, où est déclarée la fonction Mid dans : "valu := mid(Source,a,1)[1];"
Elle n'existe pas dans D4 mais peut être remplacée par Copy.
Autre proposition pour améliorer la lisibilité, au lieu de :
if ((Ord(valu)>=48) and (Ord(valu)<=57)) or (Ord(valu)=45) then
mettre :
if valu in ['0'..'9','-'] then
Reconnais que c'est nettement plus lisible et plus facile à comprendre !
Enfin, pour éviter les plantages violents, il serait bon d'utiliser StrToIntDef au lieu de StrToInt. Ainsi :
Result := strtoint(num);
devient
Result := StrToIntDef(num, 0);
Et tu es assuré d'une valeur de retour même dans le cas où tu renvoies un type réel comme résultat dans le paramètre Valeur puisqu'il y a compatibilité de type dans ce sens.
May Delphi be with you.