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 d'une partie d'une chaine..


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 43
    Points : 27
    Points
    27
    Par défaut Extraction d'une partie d'une chaine..
    Bonjour a tous!
    Tout d'abord, voici ma fonction :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    function Tform1.DonneCeQuiSuis(URL : string; debut:string;fin:string):string;
    var HTTP : TIdHTTP;
        Content, Link : string;
        Positiondeb : integer;
        Positionfin : integer;
        longueur : integer;
    begin 
      HTTP := TIdHTTP.Create(nil); 
      try
        //On recupere la page
        Content := HTTP.Get(URL);
        Positiondeb := 0;
        Positionfin := 0;
     
         //On trouve le debut du truc
         Positiondeb := PosEx(debut, Content, Positiondeb+1);
     
          //Si on trouve pas le mot,  on laisse tombé
          if Positiondeb = 0 then showmessage('Aucune instance trouvée!');
     
          //On cherche la fin de la chaine
           PositionFin := PosEx(fin, Content, PositionFin+1);
           longueur := PositionFin - (PositionDeb+length(debut));
     
           //On copy le mot cherché dans la variable link
     
              link := copy(Content, PositionDeb+length(debut), longueur);
              //On renvoie le resultat!
              Result := link;
     
     
      finally 
        HTTP.Free; 
      end; 
    end;
    Cette fonction recupere un morceaux d'une chaine que l'on lui donne (En l'occurence, ici une page html..
    Tres pratique pour récupérer des infos...
    Seulement voila
    Par exemple, dans le texte suivant, je veux recupérer le mot attrapemoi
    -------------------
    blipblop attrapemoiblop blip
    -------------------
    Pas de probleme, je dit a la fonction de prendre ce qu'il y a entre blipblop et blopblip
    Mais le probleme ce pose dans un texte comme celui la :
    -------------------
    blipattrapemoiblop
    blipchopemoiblop
    blipaccrochemoiblop
    -------------------
    Je veux recuperer ce qu'il y a entre blip et blop, le probleme, c'est que PosEx()
    va s'arreter au premier blip.
    Ainsi, je n'aurais que 'attrapemoi' mais pas 'chopemoi' et 'accrochemoi'

    Si quelqun avais une methode, pour indiquer a posex, a la combiendième instance du mot il doit s'arreter...

    Merci a vous!

  2. #2
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut
    Salut!

    PosEx prend comme 3e paramètre la position de départ. Tu n'as alors qu'à passer la position du "blop" trouvé (l'indicateur de fin de chaîne) + la longueur de "blop" (4) de façon à démarrer la prochaine recherche à la fin du dernier élément trouvé.

    Citation Envoyé par Delphi 7 (en anglais)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;
    PosEx returns the index of SubStr in S, beginning the search at Offset. If Offset is 1 (default), PosEx is equivalent to Pos.

    PosEx returns 0 if SubStr is not found, if Offset is greater than the length of S, or if Offset is less than 1.
    Bon dev!

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 43
    Points : 27
    Points
    27
    Par défaut
    Merci beaucoup

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/04/2013, 15h57
  2. [RegEx] Retourner une array sur une partie de la chaine
    Par absurdsystem dans le forum Langage
    Réponses: 2
    Dernier message: 25/04/2010, 16h03
  3. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  4. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  5. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39

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