Salut à tous
@ Madeo
J'aurais pourtant juré avoir fait l'essai avec la petite image d'allociné et que ça marchait chez moi ... l'erreur est humaine ... quoiqu'il en soit bien joué.
@ tous a titre d'info, j'ai débuggé la récupération de l'image amazon, mais je crains comme le disait draco31.fr que ceci ne devienne vraiment trop confus. (je m'attaquerais à l'image cinéfil plus tard)
Mais si vous y tenez je mettrais les parties de code à changer.
@ draco31.fr
![wow :wow:](./images/smilies/wow.gif)
... euh ... j'ai pas tout compris !!
Je rigole ... quoique.
Nan sans rire je crois que c'est à peu près ce que j'avais déjà gamberger.
Exemple en programme:
Code: Select all
program Arrondir_Apres_une_Virgule;
var
Source, Source2, Sourceorigin : string;
SourceFloat : Extended;
begin
Source := ''; Source2 := ''; Sourceorigin := ''; SourceFloat := 0;
if Input('Arrondir après une virgule R_F 2006', 'Entrer une valeur décimale :', Source) then
begin
if pos('.',Source) <> 0 then
begin
Source := StringReplace(Source, '.', ','); // Remplace le point par une virgule
end;
Source2 := Source;
Sourceorigin := Source;
Delete(Source2,1,pos(',',Source2)); // Efface tous les caractères avant la virgule (y compris la virgule)
Source2 := '1,'+Source2; // Ajoute "1," à la valeur delete de la Source2
Source2 := FloatToStr(Round(StrToFloat(StringReplace(Source2, ',', '.')))); // Arrondi Source2 sans décimale
if Source2 = '1' then // condition : si la valeur de l'arrondi de Source2 = 1 alors
begin
Source := copy(Source,0,pos(',',Source)+1); // récupère un chiffre après la virgule de Source
SourceFloat := StrToFloat(StringReplace(Source, ',', '.')); // remplace la virgule par un point
ShowMessage('Valeur originale : '+Sourceorigin+ ' Valeur après arrondi : '+FloatToStr(SourceFloat)); // affiche le résultat
end else // si par contre Source2 à une valeur différente de 1 c'est à dire 2 !! ;-) alors
begin
Source := copy(Source,0,pos(',',Source)+1); // récupère un chiffre après la virgule de Source
SourceFloat := StrToFloat(StringReplace(Source, ',', '.')); // remplace la virgule par un point
SourceFloat := SourceFloat + 0.1; // Ajoute mathématiquement 0.1 à la valeur SourceFloat
ShowMessage('Valeur originale : '+Sourceorigin+ ' Valeur après arrondi : '+FloatToStr(SourceFloat)); // affiche le résultat
end;
end; // youhou ... ça marche !! :-)
end.
J'étais tout content d'avoir pondu ce truc là ... avant qu'antp me ruine la baraque avec sa super fonction Trunc.
![crying :cry:](./images/smilies/cry.gif)
...
@ antp
And the winner is .... antp bien sûr
C'est sûr c'est plus rapide que mon truc informe
![sad :(](./images/smilies/sad.gif)
Du coup j'ai fait rapidement un code avec et ça donne ceci :
Code: Select all
program Super_Function_Trunc;
var
valeur, nombre : String;
begin
valeur := '' ;nombre := '';
if Input('Super function Trunc Merci Antp :-)', 'Entrer une valeur décimale :', valeur) then
begin
if pos(',',valeur) <> 0 then
begin
valeur := StringReplace(valeur, ',', '.'); // Remplace la virgule par un point
end;
repeat
if Input('Super function Trunc Merci Antp :-)', 'Nombre de chiffre après la virgule (entre 0 et 2):', nombre) then
begin
if nombre = '0' then
ShowMessage (FloatToStr(Trunc((StrToFloat(valeur)) * 1 + 0.5) / 1));
if nombre = '1' then
ShowMessage (FloatToStr(Trunc((StrToFloat(valeur)) * 10 + 0.5) / 10));
if nombre = '2' then
ShowMessage (FloatToStr(Trunc((StrToFloat(valeur)) * 100 + 00.5) / 100));
end;
until (nombre = '0') or (nombre = '1') or (nombre = '2'); // Attention vous devez imperativement entrer 1 chiffre
end; // entre 0 et 2 sinon vous bouclerez sans fin !! ;)
end.
Enfin j'ai pas perdu mon temps en suant à grosses gouttes sur ma chose ... j'apprends au fur et à mesure ...
![wink ;)](./images/smilies/wink.gif)
Le hic c'est que j'avais déjà bien avancé dans la version du script que j'ai baptisé "Spécial Anton 35". Pour ne pas dire quasiment finie. J'ai même rajouté une option dans le script qui permet d'avoir les résultats avec ou sans chiffre après la virgule et la possibilité de choisir entre 1 ou 2 chiffres de précision après la virgule.
A ce propos Anton 35 si tu passes dans le coin, j'aimerais bien que tu répondes à ma précédente question ^ Up ^.
Merci antp et je crois que je vais remettre les mains dans le moteur (avec ta super fonction Trunc !!) afin d'optimiser la function que j'avais construite à partir de mon programme Arrondir_apres_une_virgule. @+