Merci Xenon j'espère que ça va bien depuis le temps ^^
burnedsoul - 20/09/2024 20:49:04
Le premier lien est down sur le comptoir mais je vais voir sur ssc ;)
burnedsoul - 20/09/2024 20:49:30
[Resolu] GetObject et comparaison de chaînes
Menestroll
jeudi 6 septembre 2018 à 16:29
Bonjour à tous ! Après une petite pause de Fusion au profit d'une formation de développeur web, je me remet à bosser sur un projet existant sr Clickteam.
Seulement d'entrée de jeu, je me retrouve face à la fonctionnalité de login qui ne marche plus !
J'ai isolé la ligne qui correspond à mon erreur (cf capture d'écran).
Je fais un appel à la base de données pour vérifier les infos de connexion soumise par l'utilisateur. Si les infos sont correctes, je reçois de la part mon script php une chaîne de caractère "successful".
Seulement, lorsque je teste la chaîne, je ne trouve jamais d'égalité alors que les deux chaines sont identiques.
EDIT : Problème résolu après mise à jour de Clickteam Fusion
Hello, Que veut dire le 7 ? C'est 7 charactères à partir de la gauche non ? Donc ça ne sera jamais égale à "successful" (10 chars)
Tu as fait quoi comme formation web ?
Menestroll
jeudi 6 septembre 2018 à 19:23
Salut Xenon3K, merci pour la réponse !
Je ne connais pas trop les fonctions sur fusion.
Lower ça enlève les majuscules et Left récupère le nombre de caractère d'une chaine en partant du début jusqu'au nombre indiqué en paramètre ? J'ai cherché rapidement sur l'aide, j'ai pas trouvé plus d'infos.
Malheureusement même en changeant modifiant ce paramètre ça ne règle pas mon problème.
J'ai fait une formation accélérée de développeur logiciel web dans un centre de formation AFPA. 5 mois de cours et 3 mois de stage pour apprendre à développer des sites et des appli web. :)
Je pense que tu devrais utiliser un objet Chaîne pour vérifier ce que ton script retourne.
• (Objet Get) On get comlete → (Objet Chaîne) Fixer la chaîne à Receved$(Objet Get)
Modifié le jeudi 6 septembre 2018 à 20:03
par Seyjin
Menestroll
vendredi 7 septembre 2018 à 11:16
Merci pour ton aide Seyjin. J'ai déjà mis en place ce contrôle en affichant le retour dans une chaine. Elle m'affiche bien "successful" J'ai aussi vérifié via le débuggueur.
Quel est le problème exactement, tu n'arrives pas à recevoir des infos avec l'objet Get ? Sinon "successful" ça fait 10 lettres, donc ton left$ 7 est incompatible. "successful" est en minuscule donc pas besoin de lower$...
Modifié le vendredi 7 septembre 2018 à 11:57
par Patrice
Hm, je vois pas trop d’où peut venir le problême. Tu as essayé avec seulement Receved$(Objet Get) plutôt que Lower$(left$(Receved$(Objet Get), 10)) (les deux fonctions sont inutiles ici) ?
Menestroll
vendredi 7 septembre 2018 à 12:01
Mon problème réside dans le test d'égalité de ce que me retourne l'objet Get.
Lorsque le joueur se connecte avec ses identifiants, si les informations fournies sont correctes, j'ai un script PHP qui me renvoie la chaine "sucessful".
Lorsque je teste le contenu de la chaine qui est retournée, il s'agit bien de "successful" mais Clickteam ne voit pas l'égalité, il les considère comment différentes
(Suite à divers retouches il y a une erreur sur le screen fournie dans le premier post. La longueur de la chaine splittée est bien 7 et la chaîne qui est testée c'est "success")
Je viens de tester en enlevant les fonctions, le problème persiste.
D'après l'éditeur, Received(Objet Get) n'est pas une expression alphanumérique ce qui fait que je peux pas tester sa longueur.
Remplace Objet Get par le nom de ton objet get, entre guillemets.
Menestroll
vendredi 7 septembre 2018 à 14:56
C'est un peu compliqué d'extraire le code, mais j'ai essayé d'isoler au maximum l'erreur.
En pièce-jointe une screen des deux conditions que je teste.
Pour résumer le déroulement
Get Object recupère la chaine de caractères "successful" renvoyée par un script PHP
Lorsque je teste si la chaîne de caractère reçue est différente ou égale à "successful", elle est toujours différente.
Pourtant si je l'affiche à l'écran ou dans le debugueur, je vois bien "successful". Je l'ai aussi copié collé dans le bloc-note pour vérifier si il n'y avait pas de caractères invisibles, rien.
Merci pour l'extension Emmanuel, mais le code fonctionnait très bien il y a quelques mois en l'état, j'aimerai régler ça sans avoir à rajouter trop de chose. Surtout si l'extension n'est pas compatible android. (c'est une contrainte liée à mon projet)
Seyjin, fait fini par réussi à tester la longueur de la chaine ça me retournait bien 7. Mais même en enlevant les fonctions rien ne change. Je me demande si justement elle n'avait pas pour but de forcer le type string du contenu renvoyé par l'objet get.
1 - "successful" ou "successfull" 2 - essaye de comparer ta chaîne et non ce que tu viens de récupérer via l'objet get 3- Compare le sur un événement du genre "lors de l'appuie sur une touche" plutôt que "récupération terminée"
Il te faut décomposer ton problème pour le solutionner
Sans voir le code, je dirait que le test ne peut pas être concomitant avec l'obtention du résultat. Concrètement, il ne doit pas pouvoir tester une correspondance d'un truc qu'il vient juste de récupérer. Il vaut mieux le stocker quelque part et dans un deuxième temps le tester. Pas sûr de voir un lien avec une quelconque mise à jour...
Menestroll
vendredi 7 septembre 2018 à 15:31
C'était "successful" j'ai édité le précédent message.
J'ai essayé en comparant la chaîne, ce n'est pas plus probant.
Même absence de résultat en changeant l’événement.
Le code fonctionnait avant. Il y a eu des mises à jours de l'objet Get ? ou de Clickteam peut être ? J'imagine bien que la réponse se trouve surement entre mon PC et ma chaise mais on sait jamais.
J'ai vraiment l'impression que c'est lié au contenu.
Existe-t-il des fonctions sur clickteam comme trim pour enlever les espaces en début et fin de chaine ? Ou vaut mieux essayer avec les délimiters de string Parser ?
Y-a-t-il un moyen d'avoir plus d'infos dans le debuggueur sur une chaine de caractères ou pour l'objet get ? Ou bien faut il que je me débrouille avec les fonctions que me fournit clickteam comme length.