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 :

Parser une chaine avec delimiteur


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 15
    Points
    15
    Par défaut Parser une chaine avec delimiteur
    Bonjour,
    J'ai un fichier ou je dois récupérer une chaine de caractère avec un délimiteur pour les insérées dans un tableau ;
    ma chaine : codes = test528622|test525553|test609369|test440336|test520996|test487124|test731477|test762925|test832285|test862851

    mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var
      List: TStrings;
    begin
      List := TStringList.Create;
      try
        ExtractStrings(['|'], [''], PChar('codes = test528622|test525553|test609369|test440336|test520996|test487124|test731477|test762925|test832285|test862851'), List);
        memo1.Lines.Add(List.Text);
      finally
        List.Free;
      end;
    le résultat me donne : codes = test528622, alors qu'il me faut juste les codes...
    Je sèche la
    Merci pour l'aide.

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 659
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 659
    Points : 13 032
    Points
    13 032
    Par défaut
    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
    var
      List: TStrings;
    begin
      List := TStringList.Create;
      try
        ExtractStrings(['|', '='], [' '], PChar('codes = test528622|test525553|test609369|test440336|test520996|test487124|test731477|test762925|test832285|test862851'), List);
     
        if List.Count > 0 then
          List.Delete(0);
     
        memo1.Lines.Add(List.Text);
      finally
        List.Free;
      end;
    end;

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Ohh ça marche comme par magie
    J'ai oublié un truc, c'est que j'ai deux lignes dans mon fichier avec le même delimiteur, alors que moi je veux traiter que ma 2eme ligne;

    version = 1.08
    result = ok
    resultcode = 0
    created = 10
    results = ok|ok|ok|ok|ok|ok|ok|ok|ok|ok
    codes = test528622|test525553|test609369|test440336|test520996|test487124|test731477|test762925|test832285|test862851 <----- cette ligne

    nb: possible que j'aurai une 100ene de code a traités

    Merci

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 659
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 659
    Points : 13 032
    Points
    13 032
    Par défaut
    Vu la structure clé=valeur de ton fichier, tu peux faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    List := TStringList.Create;
     
    try
      List.LoadFromFile('blabla.txt');
     
      Memo1.Lines.Delimiter     := '|';
      Memo1.Lines.DelimitedText := List.Values['codes '];
    finally
      List.Free;
    end;
    ps: ce serait mieux s'il n'y avait pas d'espace avant "=". Là, il faut ajouter un espace après codes.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Merci bcp

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

Discussions similaires

  1. [XL-2007] Parser une chaine de caractère SQL avec un code en VBA
    Par Sosthy10 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/06/2015, 12h49
  2. parser une chaine avec des point virgule
    Par billyrose dans le forum Langage
    Réponses: 5
    Dernier message: 16/03/2009, 18h13
  3. Affichage de l'adresse d'une chaine avec cout
    Par thierryguilbert dans le forum SL & STL
    Réponses: 4
    Dernier message: 14/03/2005, 17h04
  4. Parser une chaine
    Par TieumB dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/01/2005, 12h20
  5. Parser une chaine en shell script
    Par Gogoye dans le forum Linux
    Réponses: 10
    Dernier message: 19/07/2004, 18h49

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