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

Langage Delphi Discussion :

FindText d'un TRichEdit


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 32
    Par défaut FindText d'un TRichEdit
    Bonjour,

    J'essaye de mettre en place une coloration syntaxique façon Delphi et dans le cadre de ce programme, j'utilise un TRichEdit dans lequel contiendra le code coloré. A partir d'une liste de mot clef, j'essaye de les retrouver dans mon texte. Au début, j'utilisais Pos pour ça mais j'ai découvert qu'il existait une méthode FindText du TRichEdit qui permet de faire pareil mais en plus en vérifiant si le mot est entier ou non (ce que je n'arrivais pas à gérer avec le Pos).
    Seulement, ça ne fonctionne pas comme je veux. Quand je teste avec juste un seul mot clef et rien autour dans mon TRichEdit, il arrive à me trouver la position que si mon mot est en position 0 sinon rien ne fonctionne.

    La procédure qui fait ça :
    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
    procedure allPos(subString : String; RE_Text : TRichEdit; SL_Position : TStringList);
    var
      i, iPos : Integer;
    begin
      iPos := 0;
      i := 0;
      while (Length(RE_Text.Text) > 0) and (iPos <> -1) do
      begin
        iPos := RE_Text.FindText(subString, iPos, Length(subString), [stWholeWord]);
        i := iPos + i;
        if iPos <> -1 then
        begin
          SL_Position.Add(IntToStr(i));
          RE_Text.Text := Copy(RE_Text.Text, iPos + Length(subString) + 1, Length(RE_Text.Text));
          i := i + Length(subString);
        end;
      end;
    end;
    Merci d'avance pour vos réponses

  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
    Quand je teste avec juste un seul mot clef et rien autour dans mon TRichEdit, il arrive à me trouver la position que si mon mot est en position 0 sinon rien ne fonctionne.
    ... Ben dans ce seul cas cela marche puisque la longueur du texte = Length(subString).
    Essaye donc en remplacant :
    iPos := RE_Text.FindText(subString, iPos, Length(subString), [stWholeWord]);
    par :
    iPos := RE_Text.FindText(subString, iPos, Length(Text) - iPos, [stWholeWord])

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

  3. #3
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 32
    Par défaut
    Rho merci beaucoup ! Tu viens de me faire faire un énorme bond dans mon projet

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

Discussions similaires

  1. TRichEdit et OEM_CHARSET
    Par chtiot dans le forum Composants VCL
    Réponses: 8
    Dernier message: 27/09/2003, 23h58
  2. TRichEdit défilement de texte automatique
    Par bloops dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/06/2003, 12h13
  3. [Composants] TRichEdit: Une police pour chaque ligne
    Par naili dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/03/2003, 16h59
  4. TRichEdit Position du caret
    Par AlainR dans le forum Composants VCL
    Réponses: 6
    Dernier message: 25/10/2002, 11h42
  5. TMemo et TRichEdit
    Par Invité dans le forum C++Builder
    Réponses: 6
    Dernier message: 09/10/2002, 21h37

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