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

 Delphi Discussion :

Extraction chaine de caractères entre deux |


Sujet :

Delphi

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 62
    Points : 49
    Points
    49
    Par défaut Extraction chaine de caractères entre deux |
    Bonjour à tous,

    Je cherche à extraire une chaine de caractère entre deux sigle |
    En faite dans un mémo que je lis ligne par ligne, j'ai des lignes où je souhaite extraire le contenu.
    Exemple:
    dans la ligne ci-dessous
    RES|GR(Hémoglobine (mmol/L))|NGR-HB-MML|N|8,0|mmol/l|8.1|10.6|L|F

    je veux extraire ce qui se trouve entre le 2ème et 3ème | puis entre le 4ème et 5ème |
    donc je devrais récupérer NGR-HB-MML et 8,0

    pour corser le tout, les lignes ne contienne jamais le même nombre de caractère puisque sur cette autre ligne je vaux les même infos (entre 2 et 3 et 4 et 5ème |) :
    RES|PLAQUETTES(Indice de Distribution Plaquettaire)|PQ-IDPS|N|13,2||8.7|16|N|F

    j'imagine qu'il faut déterminer la position des | dans la ligne puis extraire avec copy mais je bloque étant débutant.

    merci de votre aide précieuse.

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    plusieurs solutions

    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
      s: TStringList;
    begin
      s := TStringList.Create;
      s.Delimiter := '|';
      s.DelimitedText := 'un|deux|trois';
      ShowMessage(s[1]); // 0, 1 ou 2
      s.Free;
     
      s := TStringList.Create;
      Classes.ExtractStrings(['|'], [], 'un|deux|trois', s);
      ShowMessage(s[1]); // 0, 1 ou 2
      s.Free;
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 62
    Points : 49
    Points
    49
    Par défaut
    Voilà ce que j'ai écrit, erreur access violation sur le s.delimiter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     if (debut_ligne_lue = 'RES') and (fin_ligne_lue = 'F')  then
          s := TStringList.Create;
          s.Delimiter := '|';
          s.DelimitedText := ligne_lue;
          ShowMessage(s[1]);
          s.Free;
      end;

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 62
    Points : 49
    Points
    49
    Par défaut
    Super MILLE MERCI, j'ai corrigé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if (debut_ligne_lue = 'RES') and (fin_ligne_lue = 'F')  then
          begin
          s:= TStringList.Create;
          s.Delimiter := '|';
          s.DelimitedText := StringReplace(ligne_lue,' ','',[rfReplaceAll]);
          ShowMessage(s[2]);
          ShowMessage(s[4]);
          ShowMessage(s[5]);
          ShowMessage(s[6]);
          ShowMessage(s[7]);
          s.Free;
    end;

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/08/2012, 17h41
  2. couper une chaine de caractère en deux ?
    Par fmh1982 dans le forum C++
    Réponses: 3
    Dernier message: 31/03/2007, 18h17
  3. passer une chaine de caractère entre client et serveur COM
    Par ali.ensi dans le forum Visual C++
    Réponses: 7
    Dernier message: 28/03/2007, 17h30
  4. [RegEx] Extraction de texte situé entre deux balises
    Par morpho365 dans le forum Langage
    Réponses: 7
    Dernier message: 27/03/2007, 18h18
  5. Comparer la chaine de caractère de deux cellules différentes
    Par idir.17 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 21/03/2007, 14h48

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