[REL] [EN] [FR] Centralisation ScorEpioN [-SEN-]

If you made a script you can offer it to the others here, or ask help to improve it. You can also report here bugs & problems with existing scripts.

Vous trouvez ces scripts :

Excellents
87
97%
A améliorer
3
3%
Nuls
0
No votes
 
Total votes: 90

Raoul_Volfoni
Posts: 863
Joined: 2006-08-31 23:58:18

Post by Raoul_Volfoni »

Salut à tous

@ dku
dku wrote:Depuis quelques temps, je n'obtiens plus l'image depuis allocine, y a-t-il une correction ?
La version 52 du 17/07/06 marche. On récupère l'image allociné sans problème. Mais pas les images D'amazon ou cinefil car les pages ont changé.
Si tu as fais des modifs revient en arrière en téléchargeant la version 52 originale disponible sur la 1ère page de ce topic.---> Par ici <---


@ moonlight666
moonlight666 wrote:Y a t il un probleme avec TOUS les scripts amazon actuellement ?? que ce soit le .fr, .de ou .com cela ne fonctionne pas .
Idem pour alapage.
Les pages d'Amazon ont changé. Ce qui explique que les scripts ne marchent plus. J'ai jeté un oeil et travaillé un peu dessus. J'ai réussi à réobtenir la liste des films. Et puis après, j'ai essayé de modifier la récupération des infos sur les pages. Et là, je me suis aperçu qu'il n'y avait plus grand chose à récupérer (par rapport à avant). Mise à part le titre du film, le réalisateur, une image souvent de mauvaise qualité et de temps en temps une description du film il n'y a pas grand chose d'autre. Je ne vois franchement plus l'intérêt d'aller récupérer des infos à partir de ce site.
Sinon je crois que baffab a fait une correction du script d'amazon version "livres" il faudrait peut être s'en inspirer pour la partie dvd.


@ draco31.fr
draco31.fr wrote:cela devient confus !
Je suis d'accord !! :hihi:


@ Anton 35
Anton 35 wrote:yes! merci ca marche "presque comme avant"! je dis presque car lorsque qu'il n'y a pas de note de spectateurs, un "0" est mis par défaut... enfin juste pour chipoter ;)
Peux tu me donner le titre du film qui pose problème car j'ai essayé avec des films qui n'étaient pas encore sortis (genre "happy feet" "Mémoires De Nos Pères" etc ...) et je n'ai pas rencontrer ce genre de problème (c'est rageant ... j'avais essayé de faire gaffe à ce genre de truc !!).
Anton 35 wrote:sinon quelqu'un à regardé pour récupérer les notes du cadre de droite et les utiliser pour les scripts???? :ha:
exemple sur le lien suivant: http://www.allocine.fr/monallocine/reco ... c=3,223114
Euh !! :hum: je n'en vois plus l'intérêt maintenant que cela marche comme ça. Sur la partie cadre on récupérerrait (houlà !!) les valeurs moyennes. Or toi ce qui t'intéresse (si j'ai bien compris !!) c'est de récupérer les valeurs "exactes" (genre : 3,444444 et 3,223114). Ce qui est déjà le cas avec la dernière version du "//rating" (sauf que j'arrondi tous). Le truc qui coince c'est que (perso) je ne vois pas bien comment gérer les décimales. J'aimerais bien n'afficher qu'un chiffre après la virgule (plus lisible) mais la manière pour y arriver m'échappe (mise à part l'astuce de antp :"Si c'est une chaîne, il faut chercher la position de "," ou "." et supprimer ce qui est 2 caractères plus loin."). Donc statu quo pour l'instant. Mais je ne désespère pas ;)
draco31.fr
Posts: 191
Joined: 2005-08-11 19:27:15
Location: Toulouse (31), France

Post by draco31.fr »

Anton 35 wrote:sinon quelqu'un à regardé pour récupérer les notes du cadre de droite et les utiliser pour les scripts???? :ha:
exemple sur le lien suivant: http://www.allocine.fr/monallocine/reco ... c=3,223114
Euh !! :hum: je n'en vois plus l'intérêt maintenant que cela marche comme ça. Sur la partie cadre on récupérerrait (houlà !!) les valeurs moyennes. Or toi ce qui t'intéresse (si j'ai bien compris !!) c'est de récupérer les valeurs "exactes" (genre : 3,444444 et 3,223114). Ce qui est déjà le cas avec la dernière version du "//rating" (sauf que j'arrondi tous). Le truc qui coince c'est que (perso) je ne vois pas bien comment gérer les décimales. J'aimerais bien n'afficher qu'un chiffre après la virgule (plus lisible) mais la manière pour y arriver m'échappe (mise à part l'astuce de antp :"Si c'est une chaîne, il faut chercher la position de "," ou "." et supprimer ce qui est 2 caractères plus loin."). Donc statu quo pour l'instant. Mais je ne désespère pas ;)
Pourquoi as-tu besoin d'arrondir les notes ? AMC ne le fait pas automatiquement avant de le stoquer dans le champ note ?

Sinon, tu peux regarder ces fonctions (pas sûr quelles soient présentent dans l'éditeur d'AMC)
* CurrencyDecimals
* Format
* FormatFloat
* TFloatFormat
antp
Site Admin
Posts: 9642
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

C'est pour les stocker dans les commentaires, non ?
Sinon CurrencyDecimals c'est pour les valeurs de type monétaires, Format existe pas dans les scripts, par contre pour Format Float il faudrait tester.

Sinon pour ce que j'ai dit :

Code: Select all

p := Pos(',', Note);
if p > 0 then
  Note := Copy(Note, 1, p + 2); // +2 pour 2 décimales
Raoul_Volfoni
Posts: 863
Joined: 2006-08-31 23:58:18

Post by Raoul_Volfoni »

@ draco31.fr
draco31.fr wrote:Pourquoi as-tu besoin d'arrondir les notes ? AMC ne le fait pas automatiquement avant de le stoquer dans le champ note ?
J'arrondis les notes tout d'abord afin de retrouver des valeurs similaires au site d'Allociné. Sur le site d'Allociné lorsqu'un film obtient une note de 2,50001 il obtient en réalité sur le site 3 étoiles. Mais lorsqu'il obtient 2,49999 il obtient en fait 2 étoiles sur le site.

J'ai donc gardé cette logique.

Ce qui fait qu'avec le script on a bien un truc du genre :
"Note de la presse : 2/4 Note des spectateurs : 3/4 (580 critiques : 316 ****, 138 ***, 78 **, 40 *, 8 °)" (c'est à dire comme avant)
et non pas :
"Note de la presse : 2,49999/4 Note des spectateurs : 2,50001/4 (580 critiques : 316 ****, 138 ***, 78 **, 40 *, 8 °)"

Et puis j'arrondis également parce que sinon le calcul de la moyenne avant l'intégration dans le champ note ne marche pas (en l'état) avec des décimales. Le script pour l'instant travail en String et Integer.
Mais je travaille dessus. (j'y suis presque, mais d'ailleurs tout ceci ne concerne que Anton 35 qui en avait fait la demande et pour qui je m'amuse à galérer ... :D ... Sauf si evidemment ça intéresse d'autres personnes)
draco31.fr wrote:Sinon, tu peux regarder ces fonctions (pas sûr quelles soient présentent dans l'éditeur d'AMC)
* CurrencyDecimals
* Format
* FormatFloat
* TFloatFormat
J'avais déjà regarder grâce à ton post sur Aide pour créer un script Mais rien ne marche.
CurrencyDecimals antp a expliquer pourquoi et les autres ne sont pas reconnus par les scripts. Merci quand même.

@ antp
antp wrote:Sinon pour ce que j'ai dit :

Code: Select all

p := Pos(',', Note);
if p > 0 then
  Note := Copy(Note, 1, p + 2); // +2 pour 2 décimales


Merci pour le bout de code(c'est effectivement pour stocker dans les commentaires), mais j'avais déjà planché sur le sujet !!
Quand j'ai un truc dans le ciboulo !! :lol: ... Voilà ce que ça donnait

Code: Select all

program UnChiffreApresLaVirgule;
  var
  stringValue ,Decimal : string;
begin
begin
  // valeur des chaines
  stringValue := '2,551';

  // Copie la valeur du début jusqu'à la virgule puis 1 chiffre après la virgule
  Decimal := copy(stringValue,0,pos(',',stringValue)+1);
  
  // Affiche la valeur StringValue avant et après conversion (manque evidemment l'arrondi : affiche 2,5 au lieu de 2,6)
  ShowMessage('Valeur avant conversion = '+stringValue+ '    Valeur après conversion = '+Decimal);
end;
end.
Mais comme je l'ai mis dans les commentaires du code cela ne permet evidemment pas d'arrondir à la valeur supérieure. J'ai bien une vague idée de comment faire mais c'est long à expliquer et puis il se fait tard ... :o ... @+
Mandeo
Posts: 1
Joined: 2006-10-22 13:46:42

Post by Mandeo »

Raoul_Volfoni wrote:Salut à tous

@ dku
dku wrote:Depuis quelques temps, je n'obtiens plus l'image depuis allocine, y a-t-il une correction ?
La version 52 du 17/07/06 marche. On récupère l'image allociné sans problème. Mais pas les images D'amazon ou cinefil car les pages ont changé.
Si tu as fais des modifs revient en arrière en téléchargeant la version 52 originale disponible sur la 1ère page de ce topic.---> Par ici <---
Je confirme, chez moi il est impossible de récupérer l'image allocine, et j'ai bien la version 52 du 17/07/06.
De plus, j'obtiens une erreur "HTTP/1.0 400 Bad Request" lors de la phase "importing picture from internet".

edit : j'ai trouvé où ça clochait.
le script buggait uniquement pour la petite image.

Solution : remplacer la ligne 1372 par

Code: Select all

       delete(Line,1, pos('<td valign="top" width="120">', Line));
lovia
Posts: 3
Joined: 2006-10-22 18:28:33

Post by lovia »

Pour ma part le script allocine plante lors de la recuperation de l'image du film avec ce message : http:/1.0 408 Request time out

Il ya til une solution à ce problème svp ?
draco31.fr
Posts: 191
Joined: 2005-08-11 19:27:15
Location: Toulouse (31), France

Post by draco31.fr »

@ Raoul Volfoni
Pour l'arrondi il faudrait utiliser le modulo et la division 'entière' (me rappelle plus le nom des fonctions en delphi)

Pour expliquer : tu divise ta valeur pas 0,1 : tu récupère le quotient (entier)
si le modulo et suppérieur à 0,05 tu ajoute 1 au quotient sinon rien
tu divise ton quotient par 10 pour récupéré la note arondi à 1 chiffre après le virgule.
(PS: c'est quand même étonnant qu'il n'y ait pas une fonction 'basique' qui fasse ça !)
antp
Site Admin
Posts: 9642
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

Division entière avec un nombre à virgule :??: Le modulo est toujours un entier également.

Puis diviser par 0,1 revient à multiplier par 10.

Et pour finir, la fonction Round existe... d'ailleurs Raoul_Volfoni a bien dit qu'il avait su la faire fonctionner.

Cette fonction fait un arrondi scientifique (arrondi au pair le plus proche si .5)
Pour l'arrondi commerical habituel il faut faire Trunc(valeur+0.5)

Et dans les deux cas, si on veut quand même garder des décimales, il faut multiplier puis diviser (c'est peut-être ce que tu voulais expliquer, mais ça me semble super complexe pour un truc tout simple, tes explications :p )
Trunc(valeur * 10 + 0.5) / 10
pour 1 décimale
Raoul_Volfoni
Posts: 863
Joined: 2006-08-31 23:58:18

Post by Raoul_Volfoni »

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: ... euh ... j'ai pas tout compris !! :lol:
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. :cry: ... :D

@ antp

And the winner is .... antp bien sûr :grinking:
C'est sûr c'est plus rapide que mon truc informe :(
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 ... ;)
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. @+
Anton35
Posts: 46
Joined: 2005-11-03 16:30:47

Post by Anton35 »

@ Raoul_Volfoni
Raoul_Volfoni wrote:A ce propos Anton 35 si tu passes dans le coin, j'aimerais bien que tu répondes à ma précédente question ^ Up ^.
Salut! désolé pour le temps de réponse... ;) dis-moi, je vois que tu travaille tard: ton message date de 3h40!!! :hum:

Donc voici quelques films qui sont notés "0" par défaut (je pense que ta relance concerne cette question), mais il est vrai que ce n'ai pas le cas sur tous les films...:
- Le Sang des Vikings
- Mee-Shee, le secret des profondeurs
- Village police
- Le Quatrième étage
- Outside providence
...
mais c'est pas très grave, c'est juste pour chipoter... :)

Sinon l'autre demande qui concerne la note (pour éclairer ma requête), je voudrait ne pas arrondir la note sur 4 mais sur 10,
ex:
2,49999 -> 2/4 donc 5/10
2,50001 -> 3/4 donc 7.5/10
moi je voudrais:
2.49999 -> 6/10
2,50001 -> 6/10
Je trouve cette notation plus précise... mais je sens que ca va faire mal au cheveux :D

@+
Raoul_Volfoni
Posts: 863
Joined: 2006-08-31 23:58:18

Post by Raoul_Volfoni »

Salut Anton35
Anton 35 wrote:dis-moi, je vois que tu travaille tard
Je vois pas le temps passé en travaillant sur ta version de script ... :p
Nan ... en fait il m'arrive d'avoir des horaires un tantinet décalés :/
Anton35 wrote:mais c'est pas très grave, c'est juste pour chipoter...
Si c'est grave !! ;)
Sérieusement j'avais essayé de faire gaffe et j'avais bien fait concernant les notes presse mais j'ai oublié un petit truc concernant les notes public.

A ce propos quand il n'y a pas de note, tu dois également avoir le champ note qui se rempli avec la valeur 3.7 non ?

Je ne vais pas remettre encore une fois la totalité de la partie //Rating film du script (ça devient fouillis). Pour ceux que ça intéresse de corriger cette partie, remonter voir mon post précédent concernant la notation j'y ai changé le code. Je cherche un moyen de ne pas intégrer de note dans ce champ lorsqu'il n'y a justement pas de note mais pour l'instant je sèche car les trucs que je trouve mettent le brin dans le script.
Anton 35 wrote:Sinon l'autre demande qui concerne la note (pour éclairer ma requête), je voudrait ne pas arrondir la note sur 4 mais sur 10,
ex:
2,49999 -> 2/4 donc 5/10
2,50001 -> 3/4 donc 7.5/10
moi je voudrais:
2.49999 -> 6/10
2,50001 -> 6/10
Je trouve cette notation plus précise... mais je sens que ca va faire mal au cheveux grin :D
J'ai prévu ça ... c'est a dire que pour des notepresse=2,55 et notepublic=2,917933 sur le site d'allociné tu auras des notes dans la partie commentaires de cette manière : (Tu pourras même choisir la précision après la virgule (1 ou 2 chiffres) ou pas de chiffre après la virgule du tout.) Donc tu pourras avoir ceci :
Note de la presse : 6/10 Note des spectateurs : 7/10 (1645 critiques : 675 ****, 466 ***, 274 **, 154 *, 76 °)
ou ceci
Note de la presse : 6,4/10 Note des spectateurs : 7,3/10 (1645 critiques : 675 ****, 466 ***, 274 **, 154 *, 76 °)
ou cela
Note de la presse : 6,38/10 Note des spectateurs : 7,29/10 (1645 critiques : 675 ****, 466 ***, 274 **, 154 *, 76 °)

J'ai une version qui je l'espère marche (je voulais retravaillé dessus en y intégrant plutôt la "super fonction trunc" d'antp mais je n'ai pas trop le temps...). Je te contacterais par MP pour te filer cette version afin que tu puisses la tester dans tous les sens. Alors surveille tes MP. :p et de mon côté j'attendrais tes résultats (en MP evidemment).

P.S : Quand à mes cheveux ... je n'en ai plus a force de travailler sur ta version ... :hihi: @+
Last edited by Raoul_Volfoni on 2006-10-26 11:43:17, edited 1 time in total.
draco31.fr
Posts: 191
Joined: 2005-08-11 19:27:15
Location: Toulouse (31), France

Post by draco31.fr »

moi je verrai un truc du genre :

Code: Select all

// precision : +2 = précision à 100,0 (10^2), -3 = précision à 0,001 (10^-3), 0 = précision unité (10^0 = 1)
function arrondi(nombre: real ; precision: int) : real ;
var
temp : real ;

begin
  temp := nombre / power(10, precision) ;
  temp := round(temp) ;
  result := temp * power(10, precision) ; 
end
Et une fonction qui convertit la ',' en '.' et en float pour être utilisable ensuite.

Code: Select all

function convert_STF (ligne : string ) : real
begin
  if pos(',',ligne)>0
    then ligne := stringreplace(ligne,',','.');
  result := StrToFloat(ligne);
end
Utilisation :

Code: Select all

Note := FloatToStr(arrondi((convert_STF('2,55422'),-1));
Il devrait donner : '2,6' :grinking:

EDIT: modif de float --> real (tic de langage :hihi: )
Last edited by draco31.fr on 2006-10-25 22:40:24, edited 3 times in total.
antp
Site Admin
Posts: 9642
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

Pour l'exposant c'est la fonction Power(10, exposant).
draco31.fr
Posts: 191
Joined: 2005-08-11 19:27:15
Location: Toulouse (31), France

Post by draco31.fr »

lol, c'est ce que j'étais en train de chercher mais je trouvais pas ;)
Raoul_Volfoni
Posts: 863
Joined: 2006-08-31 23:58:18

Post by Raoul_Volfoni »

@ draco31.fr

C'est gentil de vouloir m'aider mais j'avoue que je n'ai pas très bien compris le but de ta démarche.

D'abord avec la version de delphi dont nous disposons pour faire les scripts,
on ne peut pas déclarer une "function" comme étant de type Float mais extended.

Ensuite ta dernière ligne est :
Note := FloatToStr(arrondi((convert_STF('2,55422'),-1));
mais elle devrait être :

Code: Select all

Note := '2,55422';
Note := FloatToStr(arrondi(StrToFloat(convert_STF(Note)),-1));
Puisque la valeur ligne de la fonction convert_STF est de type string. mAis que la function elle renvoie une valeur de type float.

Et enfin tout ceci ne sert à rien puisque la fonction Power n'est pas reconnue. :(

Alors pourquoi faire en trois lignes qui ne marche pas ce que antp a fait en une ligne et qui marche !!? :hum:
Je crois qu'on a définitivement réglé le problème de l'arrondi après une virgule. (A moi d'intégrer la "Super Fonction Trunc" d'antp lorsque j'aurais le temps)
J'ai déjà la tête suffisamment embrouillée comme ça ... :p ... pas la peine d'en rajouter :hihi: ... merci quand même @+
draco31.fr
Posts: 191
Joined: 2005-08-11 19:27:15
Location: Toulouse (31), France

Post by draco31.fr »

1- Je n'ai pas testé si la fonction 'power' était reconnue.
2- Je ne vois pas où est le problème avec la déclaration 'function' ?? si ça marche pas remplace 'float' par 'real'.
3- Ma fonction permet de choisir la précision à laquelle tu veux faire ton arrondi sans avoir à réécrire une ligne différente à chaque fois.
Cependant je n'ai jamais dit proposer un code meilleur que celui de Antp : il est seulement différent !
4- Pour ma dernière ligne ma fonction 'convert_STF' retourne un 'float' donc mon code me semble fonctionnel et pas le tien. (le 'StrToFloat' est déjà intégré à la fonction).

Et en remplaçant 'power' par ** ou ^ ça marche pas ?
Raoul_Volfoni
Posts: 863
Joined: 2006-08-31 23:58:18

Post by Raoul_Volfoni »

draco31.fr wrote:2- Je ne vois pas où est le problème avec la déclaration 'function' ?? si ça marche pas remplace 'float' par 'real'.
J'ai dit en haut qu'il fallait remplacer Float par Extended ... mais real marche également.
draco31.fr wrote:3- Ma fonction permet de choisir la précision à laquelle tu veux faire ton arrondi sans avoir à réécrire une ligne différente à chaque fois.
Il faudra de toute façon que je mette des conditions pour entrer la valeur de precision. Comme j'ai déjà une option pour préciser si je veux ou non des chiffres après la virgule avec les valeurs (0 = pas de virgule)(1 = 1 chiffre après la virgule)(2 = 2 chiffres après la virgule) ce qui serait pratique serait de pouvoir intégrer ces valeurs directement dans une fonction qui me permette d'arrondir avec une valeur de précision (ce que tu voulais faire et ce que j'ai essayé de faire sans succès)
draco31.fr wrote:4- Pour ma dernière ligne ma fonction 'convert_STF' retourne un 'float' donc mon code me semble fonctionnel et pas le tien. (le 'StrToFloat' est déjà intégré à la fonction).
Dans la précipitation j'en ai oublié en cours de route je voulais écrire

Code: Select all

Note := FloatToStr(arrondi(StrToFloat(FloatToStr(convert_STF(Note))),-1));
!! :hum: !! Du coup effectivement c'est un peu idiot ... :/ ... Y a comme double emploi ... J'ai merdé (qui a dit "une fois de plus" !!) parce que j'avais décomposé ton idée et c'est pas la meilleure que j'ai eu :D

Code: Select all

program Power_Draco31_fr;
var
Note : string;
//----------------------------------------------
// precision : +2 = précision à 100,0 (10^2), -3 = précision à 0,001 (10^-3), 0 = précision unité (10^0 = 1)
function arrondi(nombre: extended ; precision: integer) : extended;
var
temp : extended;
begin
  temp := nombre / Power(10, precision) ;
  temp := round(temp) ;
  result := temp * Power(10, precision) ;
end;
//----------------------------------------------
function convert_STF (ligne : string ) : extended;
begin
  if pos(',',ligne)>0 then
  ligne := stringreplace(ligne,',','.');
  result := StrToFloat(ligne);
end;
//---------------------------------------------
begin
Note := '2,55422';
//Note := FloatToStr(convert_STF(Note));// si on retire FloatToStr ça marche plus ... mon erreur vient de là
//Note := FloatToStr(arrondi(StrToFloat(Note),-1));
//Note := FloatToStr(arrondi(StrToFloat(FloatToStr(convert_STF(Note))),-1));
Note := FloatToStr(arrondi((convert_STF(Note)),-1));
ShowMessage (Note);
end.
Avec ** et ^ ça ne marche pas non plus.
D'ailleurs j'ai essayé de trouver un site sur les opérateurs mathématiques en delphi mais j'ai pas trouvé grand chose. De toute façon apparement la pluspart des opérateurs en Delphi sont gérés dans une unité appelée Math.pas.
antp
Site Admin
Posts: 9642
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

En Delphi c'est Power pour les exposants.
En Pascal ça ne semble pas exister... http://www.midnightbeach.com/jon/pubs/c ... nentiation

Si ça n'existe pas dans les scripts, il faudra que je le rajoute. En attendant il va faloir multiplier dans une boucle je pense.
Il ne faut pas oublier que ces scripts c'est pas Delphi complet, c'est une version basique/simplifiée du Pascal Objet utilisé dans Delphi.

"float" n'est pas un type Delphi/Pascal.
En Delphi il y a :
"Single", 4 octets (équivalent du "Float" du C il me semble)
"Double", 8 octets
"Extended", 10 octets
et "Real" qui par défaut équivaut à "Double".
Maintenant je ne sais pas ce qui existe dans le moteur de script...
draco31.fr
Posts: 191
Joined: 2005-08-11 19:27:15
Location: Toulouse (31), France

Post by draco31.fr »

Pour la précision tu peux aussi faire une demande et stoquer la valeur de l'utilisateur de manière permanente, ensuite tu fais un test pour savoir si il a déjà donné qqch, et tu ne redemande pas si il a déjà donné sa précision une première fois !
Pour savoir comment faire cela : tu peux regarder le script Allociné de ScorEpioN qui normalement affiche la licence lors de la première utilisation et pas ensuite si elle a été acceptée.

Pour que la fonction 'Power' soit reconnu, on peut la déclarer nous même comme l'a suggéré Antoine :

Code: Select all

function Power(base : real ; puissance : int): real ;
var
  temp : real
begin
  temp := base
  if puissance > 0 then
  begin
    for 2 to puissance do
      temp := temp * base ;
  end
  else
  begin
    if puissance = 0 then
     temp := 1
    else
      for puissance to 0 do
        temps := temp / base ;
   end
  result := temps ;
end
PS: Pas testé mais je pense que ça devrait marcher :??:
Par contre ne marche pas avec les puissances fractionnaires (comme 1/2 - racine carré)
lovia
Posts: 3
Joined: 2006-10-22 18:28:33

Post by lovia »

lovia wrote:Pour ma part le script allocine plante lors de la recuperation de l'image du film avec ce message : http:/1.0 408 Request time out

Il ya til une solution à ce problème svp ?
Excusez moi d'insister mais le script Allocine ne fonctionnant pas pour la recuperation d'image j'aimerai savoir sil y avait une correction de faite
Post Reply