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 :

Extraire une chaine contenue entre 2 delimiteurs


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Points : 64
    Points
    64
    Par défaut Extraire une chaine contenue entre 2 delimiteurs
    Bonsoir,

    J'ai trouvé une source pour extraire une chaine de caractère contenue entre 2 delimiteurs.

    La chaine :

    86.194.50.132 - - [16/Feb/2006:17:40:36 +0100]
    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function extraire_chaine(chaine,debut,fin:string):string;
    var
     resultat:string;
     begin
    resultat :=copy(chaine,Pos(debut,chaine)+length(debut),length(chaine));
    resultat := copy(resultat,0,Pos(fin,resultat)-length(fin));
    result := resultat;
    end;
    Lorsque je fais :

    extraire_chaine(chaine,'[',':') pour récuperer la date, ca me renvoie bien 16/Feb/2006

    Cependant, lorsque je fais :

    extraire_chaine(chaine,'',' -') pour récuperer l'IP ca me renvoie 86.194.50.13, il manque le 2, a mon avis ca vient du fait que l'IP est en tout debut de chaine.

    Une idée pour corriger ca ? MERCI

  2. #2
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 303
    Points
    2 303
    Par défaut
    bonjour,

    le problème, c'est que la function posPos(fin,resultat), renvoie la position du premier caractère de la chaine fin dans la chaine résultat, donc si la chaine fin fait plus d'un caractère ça pose problème.

    Il faut donc modifier la ligne en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat := copy(resultat,0,Pos(fin,resultat)-1);
    et cela devrait être bon.

    @++
    Dany

  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 968
    Points
    6 968
    Par défaut Re: Extraire une chaine contenue entre 2 delimiteurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function extraire_chaine(chaine,debut,fin:string):string;
    var
     resultat:string;
     begin
    resultat :=copy(chaine,Pos(debut,chaine)+length(debut),length(chaine));
    resultat := copy(resultat,1,Pos(fin,resultat)-1);
    result := resultat;
    end;
    Et comme ça ?

    EDIT : trop tard.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

Discussions similaires

  1. Extraire une chaine entre 2 caractères identiques
    Par nicomax34 dans le forum Langage
    Réponses: 3
    Dernier message: 28/01/2014, 10h39
  2. Extraire une chaine entre parenthèse
    Par flo73 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 16/10/2010, 12h14
  3. Extraire une chaine de caractaire entre deux critere
    Par hichemaouini dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 21/10/2009, 10h48
  4. Extraire une chaine entre guillemets
    Par grenouille2008 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 01/07/2008, 16h40
  5. Réponses: 14
    Dernier message: 12/12/2007, 17h08

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