Conversion chaine->entier perte d'information

Requêtes de fonctionnalités dans un programme déja existant ou idée d'un nouveau programme.
Ralay
Posts: 8
Joined: 15 Nov 2008, 00:54

Conversion chaine->entier perte d'information

Post by Ralay »

Bonjour,

J'utilise le logiciel depuis moins d'une semaine mais il est plus facile que certain comme "scite" donc je m'habitue assez vite
Un soucis se pose lorsque je veux convertir une chaine en entier
La manipulation est simple, j'extraie un chiffre d'une page internet et le stock dans le presse papier, ctrl+c, et recupération de la variable dans le presse papier, jusque la tout va bien :P
Ensuite ma variable stock la valeur dans le presse papier et ensuite je convertit ma chaine extraite en entier. Le soucis est que ma chaine comprend un "espace" et durant la conversion tout ce qui est après l'espace n'est pas convertit


Ex : $prix <- 55 000€ (type chaine)
conversion de la chaine en entier
affichage du résultat = 55 (type entier)


Donc comment faire pour convertir la totalité de ma chaine, existe t'il une procédure pour copier directement mon chiffre et le stocker ne tant que "entier" ?
Je le veux sous type "entier" car je fais quelques comparaison


Voila j'espére avoir été clair, merci des reponses a venir au pire je peux poster mon code




edit : pour ceux qui se demande pourquoi je ne passe pas par une variable directement de type "entier", car lors de la copie dans le presse papier et la récupération le type entier me stock toute les données avant l'espace (55) et pas les (000), donc en type chaine la totalité de la valeur est stockée (55 000) et je pensé que lors de la conversion le tout allé rester


edit2 : je te tire mon chapeau pour ton logiciel gratuit et qui simplifie énormément la vie a des milliers de passionnés ;)
Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :wink:
User avatar
Jmgr
Admin
Posts: 1651
Joined: 07 Dec 2005, 15:45
Contact:

Re: Conversion chaine->entier perte d'information

Post by Jmgr »

Salut,

tu peux utiliser "replace" pour remplacer ton espace par "rien", et ensuite convertir normalement en entier.

PS : Je suis en train de développer Actionaz 3, qui devrait sortir dans les prochains mois.
Voir la section développement : http://jmgr.info/forum/viewforum.php?f=14
"My software never has bugs. It just develops random features."
Ralay
Posts: 8
Joined: 15 Nov 2008, 00:54

Re: Conversion chaine->entier perte d'information

Post by Ralay »

Merci de ta réponse j'y avais un peu pensé mais pas trop poussé car je me suis retrouvé dessuite, bloqué
Comment matérialiser le "espace" et "rien"
Un truc de ce genre

espace = " "
rien =""
enfin peux tu me donner un plus d'info avec la "replace" car je comprend pas le 'toutes'

Merci
User avatar
Jmgr
Admin
Posts: 1651
Joined: 07 Dec 2005, 15:45
Contact:

Re: Conversion chaine->entier perte d'information

Post by Jmgr »

Et bien tu peut utiliser une fonction, c'est dans Insérer...->Fonction.
Par exemple

Code: Select all

{#replace(50 000, ,,1)}
remplacera l'espace par "rien" dans 50 000.
Bien entendu tu peux remplacer 50 000 par ta variable.
Cela donnera :

Code: Select all

{#replace({$variable}, ,,1)}
EDIT : Et le "toutes" ça veut juste dire que tu veux remplacer toutes les occurrences (si tu mets 1) de ce que tu veux trouver ou juste la première (si tu mets 0).
"My software never has bugs. It just develops random features."
Ralay
Posts: 8
Joined: 15 Nov 2008, 00:54

Re: Conversion chaine->entier perte d'information

Post by Ralay »

Merci enormément pour l'info de la fonction replace jamais j'aurais pensé au ", ,,'' :D :D
Sinon je soucis ne viens pas de la
Quand on veut faire un changement de type chaine->entier
50 000(chaine) -> 50(entier)

Meme avec la fonction replace, donc je pense que l'espace n'est pas le soucis
Peut être j'utilise mal la fonction ?
$variable change le type "entier"



Nom : variable
Type : entier
Opération : changer le type


Tu as deja convertit une chaine en entier ?
Et la fonction "strtiont" ne m'arrange pas

50 000(chaine) -> 5(entier) je pense quelle compte le nombre de chiffre :wink:

Oui je suis chiant mais certaines fonctions que je ne saisis pas tout




edit : Pourtant lorsque je fais un affichage du type de ma variable il me signale integer, donc je conclue qu'il ma changer le type !
edit2 : La valeur par défaut de la fonction "vartype" n'est elle pas intéger, car des fois ma variable n'a aucune valeur (chaine ou entier) et il 'affiche integer si je lui demande le type de ma variable
User avatar
Jmgr
Admin
Posts: 1651
Joined: 07 Dec 2005, 15:45
Contact:

Re: Conversion chaine->entier perte d'information

Post by Jmgr »

Hm oui en fait strtoint ne fonctionne pas très bien :/

Tu peux contourner le problème en utilisant une action de variable avec "Changer le type".

Exemple :

Code: Select all

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

<script>

    <settings author="jmgr" program="actionaz" program_version="2.0.7.2" script_version="1.0.1.0" os="windows" resolution_x="1024" resolution_y="768" language="fr" actions="3" interval="1000" repeat="1" />

    <actions>

        <action id="10" name="Variable" variable_name="a" variable_type="1" variable_string="50 000" variable_operation="0" />

        <action id="10" name="Variable" variable_name="a" variable_type="1" variable_string="{#replace({$a}, ,,1)}" variable_operation="0" />

        <action id="10" name="Variable" variable_name="a" variable_type="0" variable_int="" variable_operation="3" />

    </actions>

    <notes />

    <labels />

</script>

"My software never has bugs. It just develops random features."
Ralay
Posts: 8
Joined: 15 Nov 2008, 00:54

Re: Conversion chaine->entier perte d'information

Post by Ralay »

Merci
voila j'ai juste rajouter sur ton code des msgbox qui me servent de test
regarde par toi meme

Code: Select all

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<script>
    <settings author="Romain" program="actionaz" program_version="2.0.7.2" script_version="1.0.1.0" os="windows" resolution_x="1280" resolution_y="960" language="fr" actions="6" interval="1000" repeat="1" />
    <actions>
        <action id="10" name="Variable" variable_name="a" variable_type="1" variable_string="50 000" variable_operation="0" />
        <action id="13" name="Boîte de dialogue" messagebox_string="{$a}" messagebox_caption="" messagebox_type="0" messagebox_icon="0" messagebox_yes="0" messagebox_yesgoto="" messagebox_no="0" messagebox_nogoto="" messagebox_time_until_close="" />
        <action id="13" name="Boîte de dialogue" messagebox_string="{#vartype({$a})}" messagebox_caption="" messagebox_type="0" messagebox_icon="0" messagebox_yes="0" messagebox_yesgoto="" messagebox_no="0" messagebox_nogoto="" messagebox_time_until_close="" />
        <action id="10" name="Variable" variable_name="a" variable_type="1" variable_string="{#replace({$a}, ,,1)}" variable_operation="0" />
        <action id="10" name="Variable" variable_name="a" variable_type="0" variable_int="" variable_operation="3" />
        <action id="13" name="Boîte de dialogue" messagebox_string="{#vartype({$a})}" messagebox_caption="" messagebox_type="0" messagebox_icon="0" messagebox_yes="0" messagebox_yesgoto="" messagebox_no="0" messagebox_nogoto="" messagebox_time_until_close="" />
    </actions>
    <notes />
    <labels />
</script>

Le soucis viens des le départ en afficher le type de ta variable $a avant le changement, elle s'affiche deja en "integer" alors que tu la declare en "string"
Soit je capte pas tout, soit ya un soucis



Bon aprés un test je pense ya un soucis dans ton log pour déclarer els variable en tant que "chaine"

Code: Select all

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<script>
    <settings author="Romain" program="actionaz" program_version="2.0.7.2" script_version="1.0.1.0" os="windows" resolution_x="1280" resolution_y="960" language="fr" actions="4" interval="1000" repeat="1" />
    <actions>
        <action id="10" name="Variable" variable_name="a" variable_type="1" variable_string="10 000" variable_operation="0" />
        <action id="10" name="Variable" variable_name="b" variable_type="0" variable_int="20 000" variable_operation="0" />
        <action id="13" name="Boîte de dialogue" messagebox_string="{#vartype({$a})}" messagebox_caption="" messagebox_type="0" messagebox_icon="0" messagebox_yes="0" messagebox_yesgoto="" messagebox_no="0" messagebox_nogoto="" messagebox_time_until_close="" />
        <action id="13" name="Boîte de dialogue" messagebox_string="{#vartype({$b})}" messagebox_caption="" messagebox_type="0" messagebox_icon="0" messagebox_yes="0" messagebox_yesgoto="" messagebox_no="0" messagebox_nogoto="" messagebox_time_until_close="" />
    </actions>
    <notes />
    <labels />
</script>


ou alors comment faire une copie sans passer par le presse papier
Last edited by Ralay on 18 Nov 2008, 23:58, edited 2 times in total.
User avatar
Jmgr
Admin
Posts: 1651
Joined: 07 Dec 2005, 15:45
Contact:

Re: Conversion chaine->entier perte d'information

Post by Jmgr »

Oui à priori #vartype n'est pas très fiable non plus...
Voila, là tu comprends pourquoi j'ai décidé de réécrire Actionaz 3 à partir de 0 :)
Le 2 est assez chaotique et il a hélas de nombreux bugs.

Mais au final tu obtiens bien une variable qui contient ton nombre, non ?

D'ailleurs si tu codes en C++, je cherche des personnes intéressées pour bosser sur le projet (une fois la première version publique terminée) et/ou créer de nouvelles actions.
"My software never has bugs. It just develops random features."
Ralay
Posts: 8
Joined: 15 Nov 2008, 00:54

Re: Conversion chaine->entier perte d'information

Post by Ralay »

au final ma variable ne contient que la moitié de mon nombre (50) pour quelle contienne la totalité elle doit être de type "chaine"
sinon je pense que j'ai réussi en faisait 2copier coller séparé, une pour le "50" un pour le "000"
mais me voila maintenant avec le double de ligne de code pour un résultat plus que moyen



je vois l'ampleur de ta tache et malheureusement je ne peux pas t'aider je ne connais pas le C++
je n'est que de petite connaissances en dev, le php et sql oui mais pas le C++
je veux bien me renseigner pour voir un peu et qui sais peut être je pourrais t'aider




encore merci de ta participation et de tes reponses
User avatar
Jmgr
Admin
Posts: 1651
Joined: 07 Dec 2005, 15:45
Contact:

Re: Conversion chaine->entier perte d'information

Post by Jmgr »

Hm c'est curieux, chez moi avec le code que je t'ai passé il me donne bien 50000 à la fin.

Peut-tu poster le contenu du fichier avec la méthode qui ne produit que la moitié du nombre ?
"My software never has bugs. It just develops random features."
Ralay
Posts: 8
Joined: 15 Nov 2008, 00:54

Re: Conversion chaine->entier perte d'information

Post by Ralay »

Effectivement le résultat est bien 50000 mais le type "entier" n'est pas bon et la condition ne peut donc pas se vérifier

Code: Select all

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<script>
    <settings author="Romain" program="actionaz" program_version="2.0.7.2" script_version="1.0.1.0" os="windows" resolution_x="1280" resolution_y="960" language="fr" actions="12" interval="1000" repeat="1" />
    <actions>
        <action id="10" name="Variable" variable_name="a" variable_type="1" variable_string="50 000" variable_operation="0" />
        <action id="10" name="Variable" variable_name="a" variable_type="1" variable_string="{#replace({$a}, ,,1)}" variable_operation="0" />
        <action id="10" name="Variable" variable_name="a" variable_type="0" variable_int="" variable_operation="3" />
        <action id="13" name="Boîte de dialogue" messagebox_string="{#replace({$a}, ,,1)}" messagebox_caption="" messagebox_type="0" messagebox_icon="0" messagebox_yes="0" messagebox_yesgoto="" messagebox_no="0" messagebox_nogoto="" messagebox_time_until_close="" />
        <action id="13" name="Boîte de dialogue" messagebox_string="{#vartype({$a})}" messagebox_caption="" messagebox_type="0" messagebox_icon="0" messagebox_yes="0" messagebox_yesgoto="" messagebox_no="0" messagebox_nogoto="" messagebox_time_until_close="" />
        <action id="10" name="Variable" variable_name="b" variable_type="1" variable_string="60 000" variable_operation="0" />
        <action id="10" name="Variable" variable_name="b" variable_type="1" variable_string="{#replace({$b}, ,,1)}" variable_operation="0" />
        <action id="10" name="Variable" variable_name="b" variable_type="0" variable_int="" variable_operation="3" />
        <action id="13" name="Boîte de dialogue" messagebox_string="{#replace({$b}, ,,1)}" messagebox_caption="" messagebox_type="0" messagebox_icon="0" messagebox_yes="0" messagebox_yesgoto="" messagebox_no="0" messagebox_nogoto="" messagebox_time_until_close="" />
        <action id="13" name="Boîte de dialogue" messagebox_string="{#vartype({$b})}" messagebox_caption="" messagebox_type="0" messagebox_icon="0" messagebox_yes="0" messagebox_yesgoto="" messagebox_no="0" messagebox_nogoto="" messagebox_time_until_close="" />
        <action id="11" name="Condition" condition_type="2" condition_variable="{$a}" condition_variable2="{$b}" condition_if="1" condition_ifgoto="gagne" condition_else="0" condition_elsegoto="" condition_variable_type="0" condition_content_type="0" />
        <action id="13" name="Boîte de dialogue" messagebox_string="Gagné" messagebox_caption="" messagebox_type="0" messagebox_icon="0" messagebox_yes="0" messagebox_yesgoto="" messagebox_no="0" messagebox_nogoto="" messagebox_time_until_close="" />
    </actions>
    <notes />
    <labels>
        <label action="11" label="gagne" />
    </labels>
</script>
User avatar
Jmgr
Admin
Posts: 1651
Joined: 07 Dec 2005, 15:45
Contact:

Re: Conversion chaine->entier perte d'information

Post by Jmgr »

Pour ton action de condition tu as choisi une comparaison par variable, mais tu as mis le format d'insertion de variable dans du texte. Tu as deux solutions ici, soit changer la comparaison en comparaison par valeur, avec comme type entier, soit de remplacer {$a} et {$b} par a et b.

Voila ton script avec la première solution :
(j'ai aussi ajouté une action "stop" à la fin car l'action de condition a besoin de "sauter" le message "gagné" si on n'a pas gagné)

Code: Select all

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

<script>

    <settings author="jmgr" program="actionaz" program_version="2.0.7.2" script_version="1.0.1.0" os="windows" resolution_x="1024" resolution_y="768" language="fr" actions="13" interval="1000" repeat="1" />

    <actions>

        <action id="10" name="Variable" variable_name="a" variable_type="1" variable_string="50 000" variable_operation="0" />

        <action id="10" name="Variable" variable_name="a" variable_type="1" variable_string="{#replace({$a}, ,,1)}" variable_operation="0" />

        <action id="10" name="Variable" variable_name="a" variable_type="0" variable_int="" variable_operation="3" />

        <action id="13" name="Boîte de dialogue" messagebox_string="{#replace({$a}, ,,1)}" messagebox_caption="" messagebox_type="0" messagebox_icon="0" messagebox_yes="0" messagebox_yesgoto="" messagebox_no="0" messagebox_nogoto="" messagebox_time_until_close="" />

        <action id="13" name="Boîte de dialogue" messagebox_string="{#vartype({$a})}" messagebox_caption="" messagebox_type="0" messagebox_icon="0" messagebox_yes="0" messagebox_yesgoto="" messagebox_no="0" messagebox_nogoto="" messagebox_time_until_close="" />

        <action id="10" name="Variable" variable_name="b" variable_type="1" variable_string="60 000" variable_operation="0" />

        <action id="10" name="Variable" variable_name="b" variable_type="1" variable_string="{#replace({$b}, ,,1)}" variable_operation="0" />

        <action id="10" name="Variable" variable_name="b" variable_type="0" variable_int="" variable_operation="3" />

        <action id="13" name="Boîte de dialogue" messagebox_string="{#replace({$b}, ,,1)}" messagebox_caption="" messagebox_type="0" messagebox_icon="0" messagebox_yes="0" messagebox_yesgoto="" messagebox_no="0" messagebox_nogoto="" messagebox_time_until_close="" />

        <action id="13" name="Boîte de dialogue" messagebox_string="{#vartype({$b})}" messagebox_caption="" messagebox_type="0" messagebox_icon="0" messagebox_yes="0" messagebox_yesgoto="" messagebox_no="0" messagebox_nogoto="" messagebox_time_until_close="" />

        <action id="11" name="Condition" condition_type="2" condition_variable="{$a}" condition_variable2="{$b}" condition_if="1" condition_ifgoto="gagne" condition_else="1" condition_elsegoto="fin" condition_variable_type="1" condition_content_type="0" />

        <action id="13" name="Boîte de dialogue" messagebox_string="Gagné" messagebox_caption="" messagebox_type="0" messagebox_icon="0" messagebox_yes="0" messagebox_yesgoto="" messagebox_no="0" messagebox_nogoto="" messagebox_time_until_close="" />

        <action id="15" name="Stop" />

    </actions>

    <notes />

    <labels>

        <label action="11" label="gagne" />

        <label action="12" label="fin" />

    </labels>

</script>
"My software never has bugs. It just develops random features."
Ralay
Posts: 8
Joined: 15 Nov 2008, 00:54

Re: Conversion chaine->entier perte d'information

Post by Ralay »

Merci pour ta réponse je test cela des que possible, je ne savais pas qu'il fallait mettre un stop pour la condition, merci sa va beaucoup m'aider
extasie
Posts: 37
Joined: 23 Jan 2009, 19:10

Re: Conversion chaine->entier perte d'information

Post by extasie »

Salut, j'arrive pas à remplacer une virgule par rien, si on pouvais m'aider, merci :)

Edit: en fait le gros problème c'est de faire comprendre que la virgule insérer dans une variable n'a rien à voir avec la fonction, car en ce moment, le prog. crois que la virgule rajoute un parametre et donc sa bug :p
Celui qui veut faire quelque chose trouve une solution, celui qui ne veut rien faire trouve une excuse.
User avatar
Jmgr
Admin
Posts: 1651
Joined: 07 Dec 2005, 15:45
Contact:

Re: Conversion chaine->entier perte d'information

Post by Jmgr »

Salut,

Oui je vois bien le problème, mais je n'ai pas de solution à t'apporter hélas :/
"My software never has bugs. It just develops random features."
Post Reply