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

API, COM et SDKs Delphi Discussion :

Modifier le contenu d'un RichEdit


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Automaticien embarqué marine marchande
    Inscrit en
    Février 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien embarqué marine marchande
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 37
    Par défaut Modifier le contenu d'un RichEdit
    Bonjour,
    Je met dans un RichEdit ce que je lie d'un port Com, et voici ce que j'obtiens:
    1-05-2-01 TEMP. ECHAP. APRES
    H
    C
    4
    H
    5
    A
    0
    U

    D

    I

    ERE RECUP TD OK 373 °C
    Il faudrait lire ceci :
    1-05-2-01 TEMP. ECHAP. APRES CHAUDIERE RECUP TD H450 OK 373 °C

    merci de votre aide

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Par défaut
    Salut,

    Bin c'est que le texte envoyé dans le RichEdit est truffé de CRLF = #13#10
    Reste donc plus qu'à les supprimer.
    voir ici : http://www.developpez.net/forums/d78...text-richedit/

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 598
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Comme Gilbert , je dirais "yaka" mais la source de ces CR/LF est peut être due à la méthode de lecture via le port com

  4. #4
    Membre averti
    Homme Profil pro
    Automaticien embarqué marine marchande
    Inscrit en
    Février 2014
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien embarqué marine marchande
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2014
    Messages : 37
    Par défaut Avant tout merci de votre aide!
    Gilbert, pour le #20, c'est une erreur de ma part, j'ai essayé de supprimer les (Space) $20.
    Par contre avec ce code, il ne se passe rien dans mon RichEdit...

    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
    procedure SupprChar(const S : string; var MS : TMemoryStream; CharSuppr : Char);
    const     ibMax = 65536;
    var       ic,ib,transf : integer; buff : array [0..ibMax] of char;
    begin     ib:=-1; transf:=0; MS.Position:=0;
              for ic:=1 to length(S) do
              begin if S[ic] <> CharSuppr
                    then begin inc(ib); buff[ib]:=S[ic]; inc(transf); end;
                    if transf=ibMax+1 then
                    begin MS.Write(buff,transf); ib:=-1; transf:=0; end;
              end;
              if transf<>0 then MS.Write(buff,transf);
    end;
     
     
    procedure TJournaux.SpeedButton3Click(Sender: TObject);
    var       MS : tMemoryStream; i : integer;
    begin     MS := tMemoryStream.create;
              SupprChar(RichEdit_Journaux.Text,MS,#13); // #13 = CR = Carriage Return
              SupprChar(RichEdit_Journaux.Text,MS,#10); // #10 = LF = Line Feed
              MS.Position:=0;
              RichEdit_Journaux.Lines.LoadFromStream(MS);
              MS.Free;

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 598
    Billets dans le blog
    65
    Par défaut
    Bonjour ,

    il y a plus simple pour remplacer les CR/LF , utiliser la fonction StringReplace
    function StringReplace ( const SourceString, OldPattern, NewPattern : string; Flags : TReplaceFlags ) : string;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.Button1Click(Sender: TObject);
    var A : String;
    const CRLF : String = #13#10;
    begin
    A:=StringReplace(Memo1.Lines.Text,CRLF,'',[rfReplaceAll]);
    Memo2.Lines.Add(A+CRLF);
    end;
    Question : Pourquoi un TRichEdit ?
    P.S. Merci d'utiliser les balises de code (bouton #) , cela facilite grandement la lecture

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Par défaut
    Bonjour,

    Marin1617 : Gilbert, pour le #20, c'est une erreur de ma part, j'ai essayé de supprimer les (Space) $20.
    Par contre avec ce code, il ne se passe rien dans mon RichEdit...
    S'il ne se passe rien c'est que les caractères parasites sont autre chose que CRLF, donc pour commencer il faut identifier les caractères à supprimer.
    Les identifier avec une boucle de i := 1 à N do ShowMessage(RichEdit_Journaux.Text[i] + ' : ' + IntToStr(Ord(RichEdit_Journaux.Text[i])))
    Du coté du bleu tu verras le ShowMessage afficher les caractères visibles ... et s'il n'est pas visible alors du coté du vert tu verras si c'est du Chr(32) ou autre à supprimer.
    Et puis Space = $20 = #32 = Chr(32) et non #20.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

Discussions similaires

  1. [Upload] Modifier le contenu d'une liste box automatiquemen
    Par Phenomenium dans le forum Langage
    Réponses: 7
    Dernier message: 16/01/2006, 21h42
  2. Modifier le contenu d'un DBEdit [query]
    Par Askarod dans le forum Bases de données
    Réponses: 15
    Dernier message: 08/12/2005, 14h47
  3. modifier le contenu de ma base
    Par dolphi dans le forum ASP
    Réponses: 2
    Dernier message: 22/08/2005, 17h17
  4. Réponses: 20
    Dernier message: 01/06/2005, 09h37
  5. modifier le contenu d'une table avec innerHTML
    Par francon81 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 31/05/2005, 09h02

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