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

VB.NET Discussion :

Insertion de valeurs de tableau dans une richtextbox pour sauvegarder


Sujet :

VB.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Points : 102
    Points
    102
    Par défaut Insertion de valeurs de tableau dans une richtextbox pour sauvegarder
    Bonjour,
    J'ai trouvé un script dans les faq's de VB.net me montrant comment faire pour sauvegarder dans un fichier texte dans un dossier a partir du texte d'une richtextbox.
    Ma question est: Comment insérer les valeurs d'un tableau dans la richtextbox
    pour pouvoir les sauvegarder?

    Sachant que je doit concaténer les valeurs d'une ligne de mon tableau sur une ligne de la richtextbox et faire de même pour toutes les lignes de mon tableau. J'ai pensé a faire une boucle mais j'ai un problème d'index qui est hors limite.
    Je met le code de la sauvegarde ainsi que celui de la déclaration du tableau:

    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
       Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
            If MessageBox.Show(Me, _
    "Sauvegarder le document?", _
    "Sauvegarde", _
    MessageBoxButtons.YesNo, _
    MessageBoxIcon.Question) = DialogResult.No Then
                Return
            End If
    
            'Titre
            SaveFileDialog1.Title = "Sauvegarde"
            'Extension par défaut
            SaveFileDialog1.DefaultExt = "txt"
            'Filtres
            SaveFileDialog1.Filter = "fichiers textes (*.txt)|*.txt|Tous les fichiers (*.*)|*.*"
            SaveFileDialog1.FilterIndex = 1
            'Ouverture boîte de dialogue saveFile
            If SaveFileDialog1.ShowDialog(Me) = DialogResult.OK Then
    
                Dim sw As StreamWriter = New StreamWriter(SaveFileDialog1.OpenFile, Encoding.Default)
                Try
                    Dim i As Integer = 0
                    While i < RichTextBox1.Lines.Length
                        sw.WriteLine(RichTextBox1.Lines(i))
                        System.Math.Min(System.Threading.Interlocked.Increment(i), i - 1)
                    End While
                Finally
                    If Not (sw Is Nothing) Then
                        sw.Close()
                    End If
                End Try
    
            End If
    
    
    
        End Sub
    Celui de la déclaration du tableau:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      Public i As Integer = 1
        Public critere(i, 5) As String
    Merci d'avance pour votre aide

  2. #2
    Membre averti Avatar de The_Big_Lebowski
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 225
    Points : 304
    Points
    304
    Par défaut
    Il existe me semble t-il une méthode Save dans ton RTB qui te permet de sauvegarder le texte sous 2 formats, soit rtf, soit txt

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Points : 102
    Points
    102
    Par défaut
    Non, enfin je ne l'ai pas trouvée mais merci quand même.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Bonjour

    Euh pourquoi se prendre la tete a passer par un RichTextBox?!

    Tu peux tres bien parcourir ton tableau et inserer chaque ligne dans ton fichier texte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim sw as new StreamWriter(SaveFileDialog1.OpenFile, Encoding.Default)
    For cpt as Integer = 0 To TonTableau.Count -1
    sw.WriteLine(TonTableau.Item(cpt))
    Next
    sw.Close
    Ce n'est qu'une esquisse mais c'est quand meme plus rapide que tout ton code et t'as pas d'intermediaire

    En esperant t'avoir aidé

    Nasty

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Points : 102
    Points
    102
    Par défaut
    le problème c'est que j'ai un tableau de string que je déclare comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public critere (i,4) as string
    et quand je fait: critere.count-1 : erreur "count n'est pas un membre de system.array"


    ou encore: critere.rows.count-1 : erreur "count n'est pas un membre de system.array"

    pareil pour: critere.item(cpt) : erreur "item n'est pas un membre de system.array"


    donc est-ce que je doit redéclarer mon tableau ??
    si oui comment car en VB.Net, la déclaration ci-dessous ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public citere(i,4) as array of string
    Merci de ton aide

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Bonjour

    Hum désolé, je travaille tellement avec les ArrayList que j'en oubli les bases.

    Pour lire ton tableau, il faut faire ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For cpt as integer = 0 to i -1
    sw.WriteLine(tonTableau[cpt,0] & " " & tonTableau[cpt, 1]...)
    Next
    En esperant que ca sera plus juste

    Nasty

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Points : 102
    Points
    102
    Par défaut
    Salut Nasty,

    Merci pour ce code il est pas mal du tout mais j'ai encore une petite erreur au niveau des index( ce problème ressort souvent chez moi, si tu connais un tuto la-dessus d'ailleurs je suis preneur^^)

    je te met l'erreur :

    L'index se trouve en dehors des limites du tableau.
    Merci de ton aide encore une fois.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Fait voir ton morceau de code!

    pour les index, tu commence a 0 et tu va a total -1

    Nasty

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Points : 102
    Points
    102
    Par défaut
    La déclaration de mon tableau mais je sais pas si cela va t'aider:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Public i As Integer = 0
        Public critere(i, 4) As String
    Pour te dire que j'incremente le i sur le click d'un bouton de ma premiere form et quand je click sur un autre bouton une autre form apparait et la je stock mon texte dans la richtextbox sur le load de cette form.

    Merci de ton aide !

  10. #10
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Bonjour,

    Lors de cette déclaration "i" vaut 0 donc, tu déclares un tableau d'1 colonne et 5 lignes(*) (les index démarrant à 0).

    Lors de ton clic incrémentant "i", il va donc passer à 1 et par conséquent lors de l'appel par exemple de tu vas vouloir récupérer la valeur située à la 3ème ligne de la 2ème colonne, hors cette colonne n'existe pas d'où l'erreur d'index hors plage que l'on retrouve dans nombre de tes posts.

    De là, de deux choses l'une, soit ton tableau à un nombre de colonne fixe (1 ici) et tu le déclares en dur, sans chercher à incrémenter sinon tu vas encore taper à côté (Note: s'il n'y a vraiment qu'une seule colonne, un tableau à une seule dimension suffira) ou alors cette valeur augmente et là il faut songer, à soit passer par un ReDim (Preserve) pour "agrandir" ton tableau ou passer par des collections (ArrayList, List(Of T), Dictionary(Of TKey, TValue) etc...)

    Cordialement !

  11. #11
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    Oui mais si je me souviens bien de ses précédents postes, son tableau il le remplis sur un évènement de "clic" de souris. Donc par conséquent s'il "clic" plus de 5 fois, il sort donc de son tableau, d'où l'erreur :

    L'index se trouve en dehors des limites du tableau
    Citation Envoyé par Sehnsucht Voir le message
    De là, de deux choses l'une, soit ton tableau à un nombre de colonne fixe (1 ici) et tu le déclares en dur, sans chercher à incrémenter sinon tu vas encore taper à côté (Note: s'il n'y a vraiment qu'une seule colonne, un tableau à une seule dimension suffira) ou alors cette valeur augmente et là il faut songer, à soit passer par un ReDim (Preserve) pour "agrandir" ton tableau ou passer par des collections (ArrayList, List(Of T), Dictionary(Of TKey, TValue) etc...)

    Cordialement !
    Qui plus est, ces solutions avaient déjà été données dans un post du même auteur.

    Enfin pour finir, si une erreur est "récurrente" comme tu le dis, il faudrait peut-être à un moment songer à comprendre cette erreur, et ainsi la résoudre par toi-même, surtout qu'une erreur d'index est en général facile à gérer, dixit le précédent poste.

    Cordialement.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/05/2010, 11h47
  2. Insérer les valeurs d'un tableau dans une table
    Par Konami15 dans le forum ASP
    Réponses: 30
    Dernier message: 30/09/2008, 15h14
  3. Insertion de tableau dans une richtextbox
    Par jomree dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/10/2007, 12h31
  4. Réponses: 1
    Dernier message: 26/03/2007, 01h12
  5. Insertion d'un tableau dans une interface
    Par the java lover dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/03/2007, 13h04

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