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 :

erreur sur Array copy


Sujet :

C#

  1. #1
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 931
    Points : 1 977
    Points
    1 977
    Par défaut erreur sur Array copy
    Bonjour

    Je tente de lire un richtextBox ligne par ligne pour envoyer les données à une carte electronique dont le driver manipule un tableau de byte

    j'obtiens de manière aléatoire suivant la taille de la ligne une erreur
    Une exception non gérée du type 'System.ArgumentException' s'est produite dans mscorlib.dll

    Informations supplémentaires*: Le tableau source n'est pas assez long. Vérifiez srcIndex et la longueur, ainsi que les limites inférieures du tableau.
    je fais comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    OutBuffer[0] = ENVOI_STRING_PARAMETRE;
     
    Tampon = Encoding.UTF8.GetBytes(richTextBoxParametres.Lines[i]);
     
    System.Array.Copy(Tampon, 0, OutBuffer, 1, richTextBoxParametres.Lines[i].Length + 1 );
    OutBuffer et Tampon sont tous les deux des tableaux de byte avec une taille de 300
    richTextBoxParametres.Lines[i].Length est à l'instant de 22, j'ai eu l'erreur avec 30, 35, 15...

    Cette copy intervient pour décaler d'un cran les données dans OutBuffer afin d'insérer en première position "ENVOI_STRING_PARAMETRE", une constante.

    Je n'arrive pas du tout à cerner le problème

    Merci par avance pour votre aide
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    A première vue il ne faut pas le +1 à la fin.
    Si c'est un string pourquoi ne pas juste faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string xx = "dddddddddd";
    xx.Insert(0, "CONSTANTE");
    Console.WriteLine(xx); //CONSTANTEdddddddddd

  3. #3
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 931
    Points : 1 977
    Points
    1 977
    Par défaut
    Bonjour

    Si je ne mets pas le +1 il me manque un caractère à la fin et le length+1 reste << à la taille des array (10x plus petit).

    Pour le insert ça me plait bien mais la constant à insérer dans le bytearray final est une valeur entre 0 et 255 déclaré ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const byte ENVOI_STRING_PARAMETRE = 160;
    Merci
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Chez moi ce code fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    const byte ENVOI_STRING_PARAMETRE = 160;
    			string ligne = "abcdefg"; // richTextBoxParametres.Lines[i]
    			byte[] OutBuffer = new byte[ligne.Length + 1];
    			OutBuffer[0] = ENVOI_STRING_PARAMETRE;
    			byte[] Tampon = Encoding.UTF8.GetBytes(ligne);
    			System.Array.Copy(Tampon, 0, OutBuffer, 1, ligne.Length);
    			Console.WriteLine(Encoding.UTF8.GetString(OutBuffer));

  5. #5
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 931
    Points : 1 977
    Points
    1 977
    Par défaut
    Je viens de découvrir le coté "aléatoire " de mon affaire !!
    quand j'ai des caractères accentués dans ma ligne, un accent par exemple, le codage se fait sur 2 byte, pas sur 1, du coup la longueur de Tampon n'est pas celle de la ligne
    en utilisant la taille de Tampon pour la copy ça tourne dans tous les cas nickel, je n'ai plus mon problème "aléatoire" qui n'avait rien de aléatoire.

    Merci
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

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

Discussions similaires

  1. PHPExcel erreur sur array
    Par bjo393 dans le forum Langage
    Réponses: 2
    Dernier message: 29/04/2013, 16h14
  2. [MySQL] Erreur ksort sur array après un unserialize
    Par Impli dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 05/08/2010, 09h48
  3. [Exch 2007] Copie Notifications d'erreur sur postmaster
    Par Yorre dans le forum Exchange Server
    Réponses: 0
    Dernier message: 25/09/2008, 15h18
  4. Erreur sur mon constructeur par copie
    Par beegees dans le forum C++
    Réponses: 8
    Dernier message: 02/04/2008, 20h58
  5. message d'erreurs sur copie de fichier
    Par screeminelle dans le forum C++
    Réponses: 9
    Dernier message: 01/11/2005, 14h21

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