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 :

[Debutant] TStrings et recherche dans le texte


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 84
    Par défaut [Debutant] TStrings et recherche dans le texte
    Re bonjour.

    j'ai un TStrings et un liste de chaines que j'ai mis dans un type
    ex : TType = (toto,titi,tata);

    Je voudrai savoir s il existe une ecrite rapide pour parcourir les lignes de mon Tstrings et les effacer (tstrings.delete[i]) s'il y a dans la chaine(tstrings[i]) un correspondance avec l'un des elements de TType

    en + claire :
    pour comparer mon tstrings avec une chaine j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for ..
    AnsiContainsText(tstrings[i],'chaine a trouver');
    je voudrai faire la meme chose mais avec non plus une simple chaine : 'chaine a trouver' mais plusieurs 'toto' 'titi' 'tata' ?

    comment fait on ?

    merci

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    1- Evite le TStrings (voir les raisons indiquées dasn plusieurs posts de ce forum)
    2- tu as indexOf(un texte) qui te permet de trouver assez facilementla position d'un texte en te retournant le numéro de ligne.

    Ex:

    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
     
     
    var
      lst : TStringList;
    begin
      Lst := TStringList.create;
      try
        lst.Add('Toto');
        lst.Add('Titi');
        lst.Add('Tata');
        showmessage(inttostr(lst.Indexof('Titi');
      finally
        lst.free;
      end;
    end;
    end;
    doit t'afficher : 1
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 84
    Par défaut ?
    merci de ta reponse mais je vois pas bien comment exploiter ca avec mon probleme :

    je veux juste faire un comparaison entre un texte par exemple 'salut titi!!!'

    et un ensemble de string 'toto' ,'titi', 'tata' ...

    pour savoir si dans 'salut titi!!' il y a un des element de 'toto' ,'titi', 'tata' ...

    mais en fait ma liste est assez longue et je ne veux pas faire de boucle sur chaque lement, je cherche une commande qui chechera elle meme.

    a+

  4. #4
    Membre expérimenté
    Avatar de didier.cabale
    Homme Profil pro
    Conseil - Consultant en systèmes d’information
    Inscrit en
    Août 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d’information
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2004
    Messages : 130
    Par défaut
    j'ai un TStrings et un liste de chaines que j'ai mis dans un type
    ex : TType = (toto,titi,tata);
    Ce qu'il faut bien comprendre, c'est que ton TType ne contient pas des chaines, mais des valeurs scalaires. Ceci dit ..

    s'il y a dans la chaine(tstrings[i]) un correspondance avec l'un des elements de TType
    Ton besoin est connu, et tu pourras arriver à tes fins avec l'unité Typinfo.pas qui implémente les fonctions (entre autres):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //pour obtenir le string à partir de la valeur scalaire
    function GetEnumName(TypeInfo: PTypeInfo; Value: Integer): string;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //pour obtenir la valeur scalaire à partir du string
    function GetEnumValue(TypeInfo: PTypeInfo; const Name: string): Integer;

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/12/2008, 14h43
  2. Recherche dans un texte et extraire certaines données
    Par morgan47 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 24/12/2007, 10h14
  3. Réponses: 5
    Dernier message: 13/07/2007, 14h46
  4. Recherche dans champs texte SQL 2005
    Par NicoNGRI dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/03/2007, 17h23
  5. [Regexp] Recherche dans un texte formaté html
    Par YavaDeus dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 09/02/2006, 17h46

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