Retour à la ligne PRECEDENTE dans une TextBox

gege1505 Messages postés 54 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 7 août 2012 - 6 août 2012 à 21:22
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 - 8 août 2012 à 08:33
Bonjour, je souhaiterais pouvoir effectuer un retour en écriture à la ligne précédente dans une TextBox... C'est à dire de faire l'inverse d'un retour chariot (VBCrLf).

En image je voudrais passer du texte ci dessous au deuxième texte.

blabnaka


bkkahahba


blabnaka

bkkahahba


Merci pour vos réponses.

10 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 août 2012 à 22:06
Bonjour,
difficile de te comprendre à partir de ce que tu exposes.
On ne peut que tenter de deviner, mais sans assurance.
Jusqu'à du plus claire ===>>
Si ce sont des lignes réelles (séparées par un vrai retour à la ligne) : éclate (par split) le texte sur le retour à la ligne et supprime le dernier retour.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
gege1505 Messages postés 54 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 7 août 2012
6 août 2012 à 22:30
Non, j'ai une texte comme celui ci, admettons :
ligne1

ligne2


Pour insérer un retour à la ligne suivante, ou couramment appelé un retour chariot, on utilise VbCrLf, jusqu'à là on est d'accord normalement ^^.
Moi je veux faire l'inverse, enlever ce retour chariot "en trop" pour obtenir :
ligne1
ligne2


Avez vous une astuce ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 août 2012 à 22:38
C'était donc bien ce que j'avais deviné !
Avez vous une astuce ?

Une "astuce", non, mais une méthode, oui ! Et je te l'ai indiquée


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
gege1505 Messages postés 54 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 7 août 2012
6 août 2012 à 23:11
Ta "méthode" ne me plaît pas vraiment, c'est pas propre du tout.
En fait un bout de code résumera mieux que n'importe quel mot.
Dim monStreamReader1 As New StreamReader(Me.OpenFileDialog1.FileName) 
Dim monStreamReader2 As New StreamReader(Me.OpenFileDialog2.FileName) 
Dim c1 As String
Dim c2 As String
    While Not monStreamReader1.EndOfStream
          c1 = CChar(ChrW(monStreamReader1.Read()))
          c2 = CChar(ChrW(monStreamReader2.Read()))

          If c1 = c2 Then
             ' Chars identiques
             RichTextBox1.SelectedText = c1
             RichTextBox2.SelectedText = c2
          Else
            ' Chars différentes
          End If
     End While
     monStreamReader1.Close()
     monStreamReader2.Close()


Je lis un texte caractère par caractère et je les comparent, si ils sont égaux, je les réécris, sauf qu'en les réécrivant à chaque retour chariot, il me saute non pas une ligne, mais deux, donc j'aimerais "corriger" ce problème.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
6 août 2012 à 23:21
Bonjour,

Dans VB.net, les textboxes et les RichTextboxes ont une collection Lines() qui retourne les lignes du Textbox.

P.S. Ouvrir l'aide, cela ne donne pas la peste. Regarder dans la fenêtre "Propriétés", non plus.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 août 2012 à 07:24
Ce que j'en déduis, personnellement, c'est que les variables c1 et/ou c2 contiennent un retour charriot indésirable "ramassé" lors de la lecture.
Il devrait alors suffire de remplacer ce retour charriot par "" à l'écriture !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 août 2012 à 10:36
Je viens de chercgher à voir dans quelles cironstances la chose peut se produire ===>> j'en ai trouvé une :
Fichier texte écrit par write et dont le contenu d'une ligne contient en son sein le caractère 10 et le caractère 13 (dans cet ordre)
Lecture par read : double retour charriot avec Richtextbox (un seul avec une textbox).
Si tu es dans ce cas : remplace le caractère 13 par rien (fonction replace)., de sorte à ne garder que le caractère 10.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
gege1505 Messages postés 54 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 7 août 2012
7 août 2012 à 17:43
J'ai essayé tout ça, sans aucun résultat :(

RichTextBox1.Text = RichTextBox1.Text.Replace(Chr(13), "test")

RichTextBox1.Text = RichTextBox1.Text.Replace(ChrW(13), "test")

RichTextBox1.Text = RichTextBox1.Text.Replace(VbCr, "test")

RichTextBox1.Text = RichTextBox1.Text.Replace(VbCrLf, "test")


En revanche lorsque j'utilise la fonction Replace avec un chr(10), cela m'enlève bien TOUT les retour chariot, tout mon texte est donc écrit sur une seule ligne. Le problème ne vient donc pas du Replace.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
7 août 2012 à 18:54
Ce n'est pas la richtextbox, qu'il faut traiter, mais tes variables c1 et c2, avant même de les écrire dans la textbox !
Lis s'il te plait avec soin ce que je t'ai dit plus haut !
Pour mémoire :
Ce que j'en déduis, personnellement, c'est que les variables c1 et/ou c2 contiennent un retour charriot indésirable "ramassé" lors de la lecture.
Il devrait alors suffire de remplacer ce retour charriot par "" à l'écriture


C'est sur c1 et c2, qu'il te faut utiliser replace.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
8 août 2012 à 08:33
Salut

Pas trop compris
Tu veux lire ton fichier et supprimer les lignes vides ?
Private Function Process(ByVal fileinput As String) As List(Of String)
   Dim listinput As New List(Of String)
   Dim listoutput As New List(Of String)
   Try
   listinput = System.IO.File.ReadAllLines(fileinput).ToList
    For Each item As String In listinput
       If item.Length > 0 Then
          listoutput.Add(item)
       End If
    Next
    Catch ex As Exception
            MessageBox.Show(ex.Message)
    End Try
        Return listoutput
    End Function


pour utiliser avec un textbox
    TextBox1.Lines = Process(Application.StartupPath & "\BLABLA.txt").ToArray 


avec un richtextbox
  RichTextBox1.Lines = Process(Application.StartupPath & "\BLABLA.txt").ToArray
0
Rejoignez-nous