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 :

convertir tableau de point en text


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut convertir tableau de point en text
    bonjour, je suis étudiant en életronique , j'ai besoin pour mon tfe de réaliser une interface graphique qui traite des données GPS.
    En gros ce programme doit effectuer l'acuisition des coordonnées et de dessiner ces coordonnées selon un axe XY afin d'effectuer le balisage d'un champ agricole.

    Avant de commencer l'acquisition de donnée et le traitement du protocole NMEA0183, je me suis lancé dans l'acquisition simple de coordonnées de points à l'aide de textbox.

    Pour cela j'utilise une list de point que je converti en tableau de point car je ne connais pas la longueur du tableau.
    j'ai deux problème :

    1) J'aimerai pouvoir entrer automatiquement ce tableau dans une richtextbox

    2) j'aimerai pouvoir le sauver dans un fichier text par la suite une fois le balisage terminé grâce a cette richtextbox.

    je vous met le code utilisé afin que vous puissiez y jetter un oeil.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    // realized by MRs lahaye thomas & gianni tricarico 
    namespace WindowsFormsApplication10
    {
    public partial class Form1 : Form
    {
    // tout ce qui est créé ici est connu de tout les elements ( " methode " ) dans le programme. 
    List<Point> mesPoints= new List<Point>(); // creation d'une list 
    Point[] tabPts; // creation d'un tableau
    public Form1()
    {
    InitializeComponent();
    }
     
    private void textBox1_TextChanged(object sender, EventArgs e)
    {
     
     
    }
     
    private void textBox2_TextChanged(object sender, EventArgs e)
    {
     
    }
     
     
     
    private void button2_Click(object sender, EventArgs e)
    {
    //permet de creer le pen affin d'afficher 
    Graphics g = Graphics.FromHwnd(pictureBox1.Handle); //encapsulage d'une surface de dessin , mise en lien avec la picturebox 
    Pen greenpen = new Pen(Color.Green, 2); //definition d'un nouveau bic ,et de sa couleur , de la grosseur du trait
    g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; //ligne de commande pour lisser la ligne graphique tracée 
    greenpen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid; // ligne pour commander l'apparence de la ligne
    // permet de convertir la list de points en tableau de point grâce au pen appelé greenpen
    g.DrawLines(greenpen, tabPts); // la methode drawlines dessine un segment d'un tableau 
    g.Dispose(); // pour ne pas occuper de la memoire pour rien.
    }
     
    string filename;
    private void button3_Click(object sender, EventArgs e)
    {
     
    if (saveFileDialog1.ShowDialog() != DialogResult.Cancel)
    {
    filename = saveFileDialog1.FileName;
    richTextBox1.SaveFile(filename);
     
     
    }
    else
    {
    MessageBox.Show("vous avez appuyé sur annuler");
    }
     
    }
     
    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
     
    }
     
    //
    int nombrex, nombrey;
    private void textBox2_KeyDown(object sender, KeyEventArgs e)
    {
    if (e.KeyCode == Keys.Enter)
    {
    nombrex = Convert.ToInt32(textBox1.Text);
    nombrey = Convert.ToInt32(textBox2.Text);
    // methode barbare
    richTextBox1.Text = richTextBox1.Text + textBox1.Text;
    richTextBox1.Text = richTextBox1.Text + ";";
    richTextBox1.Text = richTextBox1.Text + textBox2.Text;
    richTextBox1.Text = richTextBox1.Text + ",";
     
     
    Point pt = new Point(); // point nom =new point creer un point qui contient une coordonnée 
    pt.X = nombrex; // permet de mettre en relation la textbox1 avec la coordonnée x du point pt
    pt.Y = nombrey; // permet de mettre en relation la textbox2 avec la coordonnée y du point pt 
    mesPoints.Add(pt); // permet d'ajouter un point a la liste de point dont le point est appelé 
    // pt et dont les coordonnée sont (x,y)
    tabPts = mesPoints.ToArray(); // converti la liste de point en tableau de points
     
    }
    }
     
    private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
    {
     
    }
     
     
    private void richTextBox1_TextChanged(object sender, EventArgs e)
    {
     
    }
     
     
     
    }
    }

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 24
    Points : 34
    Points
    34
    Par défaut
    Les méthodes Dispose() que tu appelles ne servent à rien, le garbage collector s'occupe de libérer la mémoire lorsque c'est nécessaire.

    Pour remplir la TextBox, le plus simple me semble être un foreach.

    Pour écrire les coordonnées dans un fichier texte, il te suffit d'ouvrir un flux en écriture et de refaire un foreach.

    Un tutoriel pour écrire dans un fichier :
    http://msdn.microsoft.com/fr-fr/libr...=VS.80%29.aspx

    J'espère avoir répondu à tes questions.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par LiveFromBx Voir le message
    Les méthodes Dispose() que tu appelles ne servent à rien, le garbage collector s'occupe de libérer la mémoire lorsque c'est nécessaire.
    C'est complètement faux (du moins la partie en gras)... L'interface IDisposable ne sert pas à libérer la mémoire (qui, comme tu l'as dis, est gérée par le GC), mais à libérer les ressources non-managées, comme les handles Win32, les connexions aux bases de données, les handles de fichiers, etc. Si ça ne servait à rien l'interface IDiposable n'existerait même pas... Il faut toujours appeler Dispose sur les objets qui implémentent IDisposable quand on n'en a plus besoin.

    Un objet Graphics encapsule un handle Win32 (un HDC précisément), et les handles Win32, ça coute cher, il faut les libérer dès que possible, et la méthode Dispose sert à ça. Certes, le garbage collector finira par collecter l'objet et appelera Dispose à partir du finaliseur, mais comme le GC n'est pas déterministe tu ne peux pas prévoir quand ça arrivera : peut-être dans 5 secondes, peut-être dans 5 heures... et à ce stade ton programme bouffera des dizaines de milliers de handles Win32, qui ne sont pas des ressources illimitées.

    Pour être sûr de bien appeler Dispose même en cas d'erreur, on utilise un bloc using :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private void button2_Click(object sender, EventArgs e)
    {
        //permet de creer le pen affin d'afficher 
        using(Graphics g = Graphics.FromHwnd(pictureBox1.Handle)) //encapsulage d'une surface de dessin , mise en lien avec la picturebox 
        {
            Pen greenpen = new Pen(Color.Green, 2); //definition d'un nouveau bic ,et de sa couleur , de la grosseur du trait
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; //ligne de commande pour lisser la ligne graphique tracée 
            greenpen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid; // ligne pour commander l'apparence de la ligne
            // permet de convertir la list de points en tableau de point grâce au pen appelé greenpen
            g.DrawLines(greenpen, tabPts); // la methode drawlines dessine un segment d'un tableau 
        } //appelle implicitement g.Dispose();
    }

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    attention que je suis novice en la matiere de C#...
    le foreach que tu me demande d'utiliser , je l'ai deja essayé , mais je ne sais pas reecrire le text dans la textbox,
    cependant je vais voir car je pense que tu m'a mis sur une autre piste... je vais regarder a cela.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    aussi , je ne veux pas remplir une textbox , mais une richbox avec les coordonnées de points

  6. #6
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
          Point[] points = new Point[4];
          points[0] = new Point(1, 2);
          points[0] = new Point(3, 4);
          points[0] = new Point(5, 6);
          points[0] = new Point(7, 8);
     
          foreach (Point p in points)
          {
            richTextBox1.AppendText(p.X.ToString() + "," + p.Y.ToString() + "\r\n");
          }

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    est ce que vous sauriez me dire comment enregistrer un fichier a partir d'une savefildialogue et d'une richtextbox ?

  8. #8
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    richTextBox1.Text = "hello";
          saveFileDialog1.ShowDialog();
          richTextBox1.SaveFile(saveFileDialog1.FileName);

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    cela m'aide assez bien effectivement mais le probleme c'est qu'il y a deja du text dans le fichier que l'on crée , j'aimerai pouvoir supprimer ce texte.

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par ojhoj Voir le message
    le probleme c'est qu'il y a deja du text dans le fichier que l'on crée , j'aimerai pouvoir supprimer ce texte.
    C'est le cas
    http://msdn.microsoft.com/fr-fr/library/8bf5hy2e.aspx
    Citation Envoyé par MSDN
    Si le nom de fichier passé au paramètre path existe déjà dans le répertoire spécifié, le fichier est écrasé sans que l'utilisateur en soit informé.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 81
    Points : 37
    Points
    37
    Par défaut
    n''est il pas possibmle d'enregistrer le fichier dans un fichier .txt ?

  12. #12
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    richTextBox1.Text = "hello";
    saveFileDialog1.ShowDialog();
    richTextBox1.SaveFile(saveFileDialog1.FileName, RichTextBoxStreamType.PlainText);

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 26/04/2016, 00h52
  2. [VBA-E] Tableau de données <=> Fichier Texte
    Par P50 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/12/2005, 16h02
  3. convertir tableau d'entier en char[]
    Par nin47 dans le forum C
    Réponses: 20
    Dernier message: 12/10/2005, 20h03
  4. Recherche dans Tableau de point
    Par Platypus dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 30/08/2005, 18h29
  5. Réponses: 25
    Dernier message: 16/07/2003, 20h41

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