IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] problème de conversion


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 35
    Par défaut [C#] problème de conversion
    Bonjour,

    J'ai un programme client serveur. Le serveur envoi des données (double) au client.

    Lorsque j'exécute mes 2 programmes en local, je n'ai aucun problème. Mes 600 valeurs (double) sont bien transmises du serveur au client.

    Mais lorsque j'exécute mon programme sur 2 PC distants, le programme génère une excéption lors d'une conversion.

    Boucle d'envoi du server
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    for(int n=0;n<600;n++)
    {
       string DataString = DataVitesse[n].ToString();
       ByteVitesse = Encoding.ASCII.GetBytes(DataString);
       CurrentClient.Send(ByteVitesse,0,ByteVitesse.Length,SocketFlags.None);
     
       Thread.Sleep(10);
     
       CurrentClient.Receive(DataReceive,0,DataReceive.Length,SocketFlags.None);
     
       string DataStringReceive = Encoding.ASCII.GetString(DataReceive);
     
       //Affichage des valeurs reçues dans la ListBox
       listBox1.Items.Add (DataStringReceive);
     
    }
    Boucle d'envoi du client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    for(int n=0;n<600;n++)
    {
      ClientSocket.Receive(ReceiveData,0,ReceiveData.Length,SocketFlags.None);
     
      Thread.Sleep(10);
      string DataVitesse = Encoding.ASCII.GetString(ReceiveData);
     
      ClientSocket.Send(ReceiveData,0,ReceiveData.Length,SocketFlags.None);
     
      double DataDouble = Convert.ToDouble(DataVitesse);
     
      DataVitesseReceive[n]=DataDouble;
     
      // Affichage des valeurs reçues dans la ListBox
      //listBox1.Items.Add(DataDouble.ToString());
       listBox1.Items.Add(DataVitesse);
    }
    a la ligne : double DataDouble = Convert.ToDouble(DataVitesse);
    DataVitesse = "0,00681524294670846"

    Une exception non gérée du type 'System.FormatException' s'est produite dans mscorlib.dll

    Informations supplémentaires*: Le format de la chaîne d'entrée est incorrect.


    Je ne comprends pas pourquoi cette excéption est générée seulement lorsque j'exécute mon programme a diantance car visiblement il s'agit d'un problème de conversion.

  2. #2
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 35
    Par défaut
    ok, j'ai constaté que mon échande de donnée fonctionne en local car je reçoit un string ayant un point 0.1221...... et quand j'utilise a distance, je reçoit un string ayant une virgule 0,1221.....

    Je me demande si cela peut venir de la configuration de langue de l'ordinateur distant????

    est-ce que quelqu'un peut me renseigner...

    Merci...

  3. #3
    Membre expérimenté Avatar de del-dongo
    Inscrit en
    Mai 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 147
    Par défaut
    en effet ton probleme viens de la
    Prends une convention : tu envoies tes chaines avec pour séparateur de cimal le point et lors de la réception, tu prends soin de tranformer ta chaine avec le séparateur de decimal courant sur le pc
    procede ainsi avant ton System.Convert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DataVitesse  = DataVitesse .Replace(".", System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);

  4. #4
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 35
    Par défaut
    OK, Parfait, merci beaucoup.

    Je me demandais si il existait une manière de le faire directement ou sinon, j'aurais créer une fonction qui cherche la virgule et qui la remplace par un point....

    En tout cas, merci beaucoup à tout le monde de m'avoir aidé...

    A bientôt.
    Fred

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de conversion de dimension dans BUSINESS OBJECT
    Par greatmaster1971 dans le forum Deski
    Réponses: 4
    Dernier message: 28/04/2014, 13h15
  2. - [CAST ou CONVERT] Problème de conversion de date
    Par Boublou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/07/2004, 14h31
  3. Problème de conversion 3DS->.X
    Par JBernn dans le forum DirectX
    Réponses: 5
    Dernier message: 08/04/2004, 19h08
  4. Problème de conversion unicode
    Par djmalo dans le forum C
    Réponses: 5
    Dernier message: 09/03/2004, 11h48
  5. Réponses: 11
    Dernier message: 02/09/2003, 14h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo