Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Mettre une variable dans une chîne de caractère
Ray Hors ligne Membre Points: 1338 Défis: 18 Message

Mettre une variable dans une chîne de caractère

Posté le 10/04/2013 18:09

Salut à tous, aujourd'hui, pendant que je programmais le créateur/éditeur de cartes pour mon Robscape 2, je me suis heurté à un obstacle : mettre le contenu d'une variable dans une chaîne de caractère :
S->Str 6
Voilà le code que j'ai essayé...
Déjà, j'ai une petite question, est-ce que c'est possible au moins ? Ou alors il faut un code spécial, ou faire une série de conditions qui risque de ne pas en finir ?
Merci d'avance si vous pouvez m'aider !


Ne0tux Hors ligne Membre d'honneur Points: 3493 Défis: 265 Message

Citer : Posté le 10/04/2013 18:36 | #



Voici le code que j'utilise personnellement, à enrichir suivant tes besoins :

""->Str 1
For 1->Y To 1+Intg log Z
StrMid("0123456789",1+Int (10Frac (Z/10^Y)),1)+Str 1->Str 1
Next


Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Dark storm Hors ligne Labélisateur Points: 11541 Défis: 176 Message

Citer : Posté le 10/04/2013 18:42 | #


Ce code ne marche qu'avec les entiers naturels, mais est très performant
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Ray Hors ligne Membre Points: 1338 Défis: 18 Message

Citer : Posté le 10/04/2013 18:50 | #


Merci pour le code, mais j'ai deux questions :
Qu'est-ce qui doit être mis dans les variables Y et Z, et là je viens de tester avec le chiffre 3 et il m'a mis "3456789" (je m'y suis surement mal pris).
Projets que je soutiens
Masquer
Dark storm Hors ligne Labélisateur Points: 11541 Défis: 176 Message

Citer : Posté le 10/04/2013 18:54 | #


Dans Y rien, dans Z le nombre à transférer
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Ray Hors ligne Membre Points: 1338 Défis: 18 Message

Citer : Posté le 10/04/2013 18:59 | #


En tout cas ça marche pas j'ai "3456789" alors que je veux juste "3"
Projets que je soutiens
Masquer
Ne0tux Hors ligne Membre d'honneur Points: 3493 Défis: 265 Message

Citer : Posté le 10/04/2013 20:22 | #



Tu as bien mis "StrMid" ?

Si tu veux rentrer un nombre décimal ou même complexe il suffit de découper ton nombre en "morceaux" (partie réelle, partie imaginaire, partie entière, partie décimale) et de les faire passer un à un par cette petite boucle qui a pour paramètre la variable Z, celle que tu souhaites mettre dans une Str. Entre chaque étape il te suffit d'ajouter tantôt une virgule, tantôt, un "+i" etc...


Ajouté le 10/04/2013 à 20:28 :

Au fait, vérifie que tu as bien été chercher la fonction \"Intg\".

Et le \"/\" symbolise un \"divisé\".

Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Ray Hors ligne Membre Points: 1338 Défis: 18 Message

Citer : Posté le 10/04/2013 20:30 | #


C'est bon, j'avais oublié le ",1" à la fin du StrMid...
Donc là ça marche, sauf quand j'essaye de mettre 33 il me met 3.
Je pense que je vais devoir remplacer ce "1" par une formule qui remplace le "1" par un "2" quand on arrive à 10 (si c'est possible).
Projets que je soutiens
Masquer
Ne0tux Hors ligne Membre d'honneur Points: 3493 Défis: 265 Message

Citer : Posté le 10/04/2013 20:35 | #



C'est normalement à ça que sert le "1+Intg log Z" !

Tu n'as pas oublié le "->Str 1" ?

Retente avec 33 et vérifie que la boucle tourne 2 fois. Si c'est le cas c'est que le problème se trouve en son sein. Sinon c'est qu'il faut changer le "To"...



Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Ray Hors ligne Membre Points: 1338 Défis: 18 Message

Citer : Posté le 10/04/2013 20:43 | #


Bon en fait j'avais aussi oublié de mettre le "+Str 4" avant le "->Str 4" (Je suis fatigué moi... ).
Tout marche correctement maintenant, merci Ne0tux et Dark Storm !

Edit : Bon, je m'en doutais, il va falloir faire du rafistolage pour que ça accepte les variables qui valent 0.
Projets que je soutiens
Masquer
Ne0tux Hors ligne Membre d'honneur Points: 3493 Défis: 265 Message

Citer : Posté le 10/04/2013 21:17 | #



Avec plaisir !

Oui pour les variables qui valent 0 il te suffit de mettre un "If Then Else Ifend" avec en Then cette boucle et en Else "0"->Str 1.

Le soucis viens simplement de la fonction log qui par définition n'est pas définie en 0 !

Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Ray Hors ligne Membre Points: 1338 Défis: 18 Message

Citer : Posté le 10/04/2013 21:30 | #


Encore merci Ne0tux !
Grâce à toi le créateur de cartes de Robscape 2 est presque terminé (faut juste mettre des sécurités antinombreimprévuquequelqu'undetropcurieuxavoulumettre ) puis faire les deux derniers gamemodes.
Projets que je soutiens
Masquer
Ne0tux Hors ligne Membre d'honneur Points: 3493 Défis: 265 Message

Citer : Posté le 10/04/2013 21:35 | #



Génial !

Au fait, tu pouvais retrouver ce bout de code dans Arkenstone, je m'en servais justement pour l'éditeur.

Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Ninestars Hors ligne Membre Points: 2413 Défis: 22 Message

Citer : Posté le 10/04/2013 22:29 | #


Perso, j'utilise ça :
""->Str 1
For -5->I To Int log Abs X
I=0=>"."+Str 1->Str 1
MOD(Int (Abs X/10^I),10)
StrMid("0123456789",Ans+1,1)+Str 1->Str 1
Next
X<0=>"-"+Str 1->Str 1


Ce code gère les nombres à virgule, et négatifs, mais par contre tu dois indiquer le nombre de chiffres après la virgule.
Ne0tux Hors ligne Membre d'honneur Points: 3493 Défis: 265 Message

Citer : Posté le 11/04/2013 20:49 | #


Oui c'est sensiblement la même chose, je pense qu'on peut difficilement faire plus court.

Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 56 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd