[RESOLU][DB - AL] FormatException: Input string was not in a correct format

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Avatar de l’utilisateur
Chandala
Messages : 30
Inscription : 07 Août 2019 15:42

Re: [DB - AL] FormatException: Input string was not in a correct format

Message par Chandala » 09 Sep 2019 19:01

En effet juste après le i (j'avais oublié que les + pouvaient encadrer comme les parenthèses et les crochets :] )

Alors, après examen rendu, j'ai obtenu ces informations via le Debug.Log :
data: nomDePerso,0.3,0.7,
UnityEngine.Debug:Log(Object)
NovelController:Command_MoveCharacter(String) (at Assets/Scripts/Core/Novel Controller/NovelController.cs:653)
NovelController:HandleAction(String) (at Assets/Scripts/Core/Novel Controller/NovelController.cs:495)
<HandlingLine>c__Iterator3:MoveNext() (at Assets/Scripts/Core/Novel Controller/NovelController.cs:437)
UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator)
NovelController:HandleLine(String) (at Assets/Scripts/Core/Novel Controller/NovelController.cs:363)
<HandlingChapterFile>c__Iterator0:MoveNext() (at Assets/Scripts/Core/Novel Controller/NovelController.cs:255)

Parameters[0]=nomDePerso
Parameters[1]=0.3
Parameters[2]=0.7
Parameters[3]=
Avec pour chaque Parameters[] les mêmes lignes en dessous que celles du data.

Dans les commandes à entrer dans la Novel en elle-même, j'ai ceci concernant le mouvement :
#Move character on screen
move(characterName,targetlocationX,targetlocationY) ex : move(Raelin,0.3,0.7)

*optional parameters
1. speed of movement. ex : move(Raelin,0.3,0.7,1.0)
2. smooth movement. ex : move(Raelin,0.3,0.7,1.0,false)
Du coup j'ai testé la commande move(nomDePerso,0.3,0.7,1.0), et même avec un false en plus ça ne change rien et l'erreur reste présente.
- Ce qu'un réverbère pense des chiens.

Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB - AL] FormatException: Input string was not in a correct format

Message par Max » 09 Sep 2019 19:52

personnellement je commencerais déjà par voir pourquoi data semble tronqué lors de sa transmission à Command_MoveCharacter() (data: nomDePerso,0.3,0.7, )
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Chandala
Messages : 30
Inscription : 07 Août 2019 15:42

Re: [DB - AL] FormatException: Input string was not in a correct format

Message par Chandala » 12 Sep 2019 17:16

Sans doute une erreur de ma part pour la virgule en plus, j'ai retesté depuis avec 3 données (characterName, targetlocationX et targetlocationY) et le Debug.Log indiquait bien ces 3 paramètres seulement (parameters[0], [1] et [2]).

Enfin... Ce sont des informations que je mets dans un document .txt où j'écris le script de la Novel, plus précisément ici le Chapitre0.txt. Visuellement ça donne quelque chose de la sorte :
setBackground(park,false,1) playMusic(Music)

enter(Character)

Character "Meh..."

move(Character,0.3,0.7)
Et ce qui ne convient pas ici c'est le float locationX = float.Parse(parameters[1]); , soit le 0.3.
Maintenant en quoi cette donnée n'est-elle pas dans un format correct ?
- Ce qu'un réverbère pense des chiens.

Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB - AL] FormatException: Input string was not in a correct format

Message par Max » 12 Sep 2019 17:53

Chandala a écrit :
12 Sep 2019 17:16
Et ce qui ne convient pas ici c'est le float locationX = float.Parse(parameters[1]); , soit le 0.3.
Maintenant en quoi cette donnée n'est-elle pas dans un format correct ?
Essais plutôt non pas 0.3 mais 0,3 (virgule à la place du point).
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Chandala
Messages : 30
Inscription : 07 Août 2019 15:42

Re: [DB - AL] FormatException: Input string was not in a correct format

Message par Chandala » 12 Sep 2019 18:29

Eh bien... Ça a fonctionné, mais du coup l'erreur s'est déplacée deux lignes plus loin ici :

Code : Tout sélectionner

float speed = parameters.Length >= 4 ? float.Parse(parameters[3]) : 7f;
move(Character,0,3,0.7)
J'imagine qu'il doit compter le 0 comme targetlocationX et le 3 comme targetlocationY.
Alors j'ai mis une virgule pour le 0.7 également pour obtenir un move(Character,0,3,0,7) et l'erreur s'est ensuite encore déplacée sur la dernière ligne du void Command_MoveCharacter :

Code : Tout sélectionner

bool smooth = parameters.Length == 5 ? bool.Parse(parameters[4]) : true;

J'ai donc rajouté un "false" pour le parameter[5] (donc on a à présent une commande move(Character,0,3,0,7,false)) et... Plus d'erreur ! 8| Mais le personnage qui ne bouge toujours pas.

La console indique à présent un : move Character to (0.0, 3.0)
Ce qui renvoie au Debug.Log d'une partie d'un code du Character.cs :

Code : Tout sélectionner

 public Vector2 _targetPosition
    {
        get { return targetPosition; }
    }
    Vector2 targetPosition;
    Coroutine moving;
    bool isMoving { get { return moving != null; } }
    /// <summary>
    /// Move to a specific point relative to the canvas space: (1,1) = far top right, (0,0) = far bottom left, (0.5,0.5) = middle.
    /// </summary>
    /// <param name="Target">Target.</param>
    /// <param name="speed">Speed.</param>
    /// <param name="smooth">If set to <c>true</c> smooth.</param>
    public void MoveTo(Vector2 Target, float speed, bool smooth = true)
    {
        Debug.Log("move " + characterName + " to " + Target.ToString());
        //if we are moving, stop moving.
        StopMoving();
        //start moving coroutine.
        moving = CharacterManager.instance.StartCoroutine(Moving(Target, speed, smooth));
    }
Donc... L'erreur vient bien des points dans les chiffres. J'ai testé avec d'autres données : move(Character,3,7,1,false) pour voir et mon perso s'est enfui à toute vitesse vers la droite et a disparu de l'écran ! ::d
Eh bien eh bien... Maintenant, comment peut-on faire des chiffres à virgule ou à point dans de telles conditions ? ...
- Ce qu'un réverbère pense des chiens.

Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB - AL] FormatException: Input string was not in a correct format

Message par Max » 12 Sep 2019 18:37

Arf oui, il split le data à partir des virgules, donc forcément cela va fiche le bazar...

Donc remet le point, et à la place de

Code : Tout sélectionner

float locationX = float.Parse(parameters[1]);
essais:

Code : Tout sélectionner

float locationX = float.Parse(parameters[1], System.Globalization.CultureInfo.InvariantCulture);
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Chandala
Messages : 30
Inscription : 07 Août 2019 15:42

Re: [DB - AL] FormatException: Input string was not in a correct format

Message par Chandala » 12 Sep 2019 18:49

Ça marche !! :pleur4: :coeur: :coeur: :coeur:

J'ai reçu une réponse en même temps de quelqu'un en Allemagne ayant eu aussi ce même problème et effectivement il proposait d'utiliser un "CultureInfo.InvariantCulture" pour les paramètres chiffrés (du genre float.Parse(parameters[2], CultureInfo.InvariantCulture).

Mais ça ne marchait pas encore, il faut effectivement un "System.Globalization.CultureInfo.InvariantCulture".
J'avais déjà lu qu'il fallait utiliser le CultureInfo mais je n'aurais vraiment pas deviné pourquoi précisément.

Fiou, ce fut laborieux mais c'est enfin résolu ! Merci infiniment Max pour ton aide ! :merci: :merci: :merci:
Je passe le topic en résolu ! ;)
- Ce qu'un réverbère pense des chiens.

Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

Re: [RESOLU][DB - AL] FormatException: Input string was not in a correct format

Message par Max » 12 Sep 2019 20:19

pas de soucis, et bonne continuation.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Répondre

Revenir vers « (C#) CSharp »