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 6 et antérieur Discussion :

CrLf dans un textbox


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Points : 6
    Points
    6
    Par défaut CrLf dans un textbox
    Bonjour,

    Dans un projet d'interface de communication, les chaînes de caractères reçues sont transférées dans un TextBox Multilignes; ces chaînes contiennent des caractères de contrôle CrLf , mais ceux-ci ne déclencent pas de saut de ligne dans mon TextBox.

    Je me retrouve donc avec les chaines de caractères en "bout à bout" y compris la visualisation (sous forme de petits carrés) des caractères de contrôle.

    Comment faire pour afficher mes chaînes de caractères bien séparées par des saut de ligne dans le TextBox ?
    Y a-t-il une astuce , ou bien ai-je oublié quelque chose ?...

    Merci de la part d'un débutant ....

    Didier.

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 089
    Points : 16 653
    Points
    16 653
    Par défaut
    Bienvenue sur DVP
    Citation Envoyé par bugsisgood Voir le message
    Bonjour,
    .................
    ou bien ai-je oublié quelque chose ?...

    Merci de la part d'un débutant ....

    Didier.
    il ne te manquerai pas cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox.MultiLine = True
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonsoir,

    et ... (on ne voit pas ton code... pratique, hein ...) j'espère que tu as bien exprimé le saut de ligne par la constante vbcrlf et non crlf...(qui retournerait une chaine vide !... au fait : as-tu bien déclaré Option Explicit, qui dénoncerait ton crlf si même pas déclaré et initialisé ?...)

    Ceci étrant dit : le fait que tu mentionnes des "petits carrés" donne à penser que Progelect a vu juste et que tu n'as pas défini à True la propriété MultiLine.

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Bonjour à nouveau,

    Si si, la propriété Multiligne est bien à TRUE !

    Je vais m'expliquer un peu mieux peut-être :

    Lorsque la machine distante m'envoie ses chaînes de caractères, ( je travaille avec un winsock ), à l'intérieur de ces chaînes se trouvent par moment des caractères de contrôles chr(10) et chr(13) ...donc CrLf ... en plein milieu d'un paquet.
    Mon code peut les détecter et les extraire.
    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
         Dim donnees As String
         Dim N, X As Integer
         Dim Sep() As String
     
     '            Reception des données
        Winsock1.GetData donnees, vbString
     
    '             Extraction des caractères de contrôle CR et LF
        If InStr(donnees, Chr(10) & Chr(13)) <> 0 Then
            Sep() = Split(Trim(donnees), Chr(10) & Chr(13))
            N = UBound(Sep())
            For X = 0 To N
                TextBox1 = TextBox1 + Sep(X) ' 
            Next
        End If
    Me restent donc les chaînes "utiles" que je veux mettre dans le TextBox les unes sous les autres , ligne après ligne !

    exemple : Je reçois "AM=2.0 AF=012345[][]AM=2.1 AF=BONJOUR"
    ( avec [][] symbolisant les caractères de contrôle ...)

    après extraction du CrLf j'obtiens :
    Chaîne1 --> "AM=2.0 AF=012345"
    Chaîne2 --> "AM=2.1 AF=BONJOUR"

    Ensuite
    j'ai essayé TextBox1.text= Chaîne1 & VbCrLf & Chaîne2
    Résultat dans le TextBox1 : AM=2.0 AF=012345[][]AM=2.1 AF=BONJOUR

    j'ai essayé TextBox1.text= Chaîne1 + Chaîne2
    Résultat dans le TextBox1 : AM=2.0 AF=012345AM=2.1 AF=BONJOUR

    Cela doit être trop simple mais je ne vois vraiment pas où je me plante ...
    Ca ne marche pas. Galèrer pour si peu, c'est idiot !....

  5. #5
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 635
    Points : 1 165
    Points
    1 165
    Par défaut
    Il faut que multiline soit true (déjà dit) et le textbox n'accepte que la séquence de contrôle "retour charriot" suivi de "Linefeed"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    S$ = Chr$(13) + Chr$(10) 'OK
    'S$ = Chr$(10) + Chr$(13) 'niet
    'S$ = Chr$(13) 'niet
    'S$ = Chr$(10) 'niet
    Text1.Text = "1111111" + S$ + "222222" + S$ + "33333333"
    Ca, ça marche (j'ai testé).
    Si tu ne peux garantir cette séquence sur tes arrivées de texte :
    - Tu vires tous les LF
    - Tu remplaces tous les CR par CR+LF

  6. #6
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Si tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox1 = TextBox1 & VbCrLf & Sep(X)
    Et que tu mets la Propriété MultiLines du TextBox1 à True, çà devrait le faire
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  7. #7
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 089
    Points : 16 653
    Points
    16 653
    Par défaut
    Citation Envoyé par bugsisgood Voir le message
    Merci de la part d'un débutant ....

    Didier.
    Avec VB6, N est considéré comme Variant (16 octets), X comme un Integer(2 octets).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim N As Integer, X As Integer
    permet de limiter l'utilisation mémoire.
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Eh bien merci à tous.

    Après avoir essayé l'exemple de DAUDET78 , eh bien curieusement mon code s'est mis à fonctionner ...(?)
    La seule chose que j'y ai changé, c'est d'écrie Chr$(13)+chr$(10) à la place de VbCrLf !
    (Je ne vois pas trop la différence....)

    Mes lignes utiles se retrouvent bien les unes sous les autres dans le TextBox !

    Cela semblait si évident !!??..
    Merci encore de vous etre mobilisés !
    @+

    Didier

  9. #9
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par bugsisgood Voir le message
    Après avoir essayé l'exemple de DAUDET78 , eh bien curieusement mon code s'est mis à fonctionner ...(?)
    qui n'est pas le meilleur exemple qui soit
    Citation Envoyé par bugsisgood Voir le message
    La seule chose que j'y ai changé, c'est d'écrie Chr$(13)+chr$(10) à la place de VbCrLf !
    (Je ne vois pas trop la différence....)
    si tu utilisais le & comme opérateur de concaténation de chaine et non pas + , tu aurais surement moins de problème !
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  10. #10
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 635
    Points : 1 165
    Points
    1 165
    Par défaut
    Pour vérifier le contenu de VbCrLf,
    Citation Envoyé par MSDN
    vbCrLf Chr(13) + Chr(10) Combinaison des caractères de retour chariot et de saut de ligne
    j'ai exécuté ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Debug.Print "(";
    For I% = 1 To Len(VbCrLf)
    Debug.Print Asc(Mid$(VbCrLf, I%, 1));
    Next I%
    Debug.Print ")"
    et j'obtiens comme résultat dans la fenêtre d'exécution :
    qui est donc rigoureusement identique à mon Chr$(13)+chr$(10) (d'ailleurs mon programme marche avec VbCrLf)

    Tu as fait une autre modification certainement ......

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

Discussions similaires

  1. [C#] Obtenir un format dans un textbox
    Par kenzo080 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 16/04/2007, 16h04
  2. [] Nombre de lignes dans un textbox
    Par juanelcalor dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 21/07/2005, 11h54
  3. [C#] Retour à la ligne dans un TextBox MultLine
    Par Oberown dans le forum ASP.NET
    Réponses: 3
    Dernier message: 06/07/2005, 11h39
  4. [c#]Gros text à afficher dans une textbox
    Par famemaur dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/05/2005, 10h12
  5. Réponses: 2
    Dernier message: 08/04/2004, 11h11

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