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 :

Delphi6 Fonction POS


Sujet :

Delphi

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 44
    Points
    44
    Par défaut Delphi6 Fonction POS
    Voici mon probleme;

    J essaie d identfier les hyperliens dans les source d une page web.
    Presentement j utilise 2 fonction POS. J ai essayer PosEx mais ca me renvoi une erreur me disant en gros que la fonction n est pas disponnible

    Voici mon code

    i,x,y : integer;
    s : string;

    begin

    i:=0;
    repeat
    x:=pos('"http://',s); //Premiere partie du lien
    y:=pos('">',s); //deuxieme partie du lien
    s:=richedit1.Lines[i]; //Donne la ligne sorce
    listbox1.Items.Add(Copy(s,x+1,y); Copie S de l index X a Y
    i:=i+1;
    until (i=10);

    Mias cela ne semble pas marcher tout a fait bien

    j aimerais savoir si il y as une facon plus precise de le faire ou sinon une facon de corriger le code pour avoir de meilleurs resultas

    Sous delphi 6 bien sur !!

    Merci a l avance !!

  2. #2
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut
    Ouïe ! Ouïe ! Ouïe !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    i,x,y : integer;
    s : string;
     
    begin
          i:=0;
          repeat
               x:=pos('"http://',s); //Premiere partie du lien
               y:=pos('">',s); //deuxieme partie du lien
               s:=richedit1.Lines[i]; //Donne la ligne sorce
              listbox1.Items.Add(Copy(s,x+1,y); Copie S de l index X a Y
              i:=i+1;
          until (i=10);
    Dans ton code, x renvoit toujours la même valeur (la position de "http://") donc "h".
    Y est la position de ">", donc, toujours la même valeur.

    Pour ce soir, je te suggere de lire l'aide de DELPHI sur les fonctions Pos et Copy.
    Bon courage, A+

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 44
    Points
    44
    Par défaut
    J ai deja lu l aide dans delphi.

    C est exactement ce que je veut

    X renvoit la position de h
    Y renvoit la position de *>

    la String est richedit1.lines[i] dont i est le numero de la ligne

    copy est supposer de copier de x a y dans la string S
    donc de h a > ???

    ensuite on change de ligne avec i:=i+1

    ce n est pas ca ?

    Merci encore !!

  4. #4
    Membre confirmé
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Points : 647
    Points
    647
    Par défaut
    Non !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Copy(S,X,Y);
    // Copie une partie de la chaine S à partir de X une longueur égale à Y.
    Et non pas copîe S de X à Y.

    Désolé, il faut bien lire l'aide de DELPHI et ses exemples.
    A+

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 43
    Points : 44
    Points
    44
    Par défaut
    Ca copie donc la strings de x pour le nombre y de char vers la droite...

    De toute facon un petit coup de main serais TRES apprecier.
    Merci.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,

    Quelque chose ne va pas dans ces lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i:=0;
    repeat
      x:=pos('"http://',s); //Premiere partie du lien
      y:=pos('">',s); //deuxieme partie du lien
      s:=richedit1.Lines[i]; //Donne la ligne sorce
      listbox1.Items.Add(Copy(s,x+1,y); Copie S de l index X a Y
      i:=i+1;
    until (i=10);
    Lors du 1er passage dans la boucle, la chaîne s ne contient encore rien quand tu cherches les positions x et y, et pour les passages suivants, les valeurs de x et y correspondent à la ligne i-1.

    Il serait plus adéquat d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i:=0;
    repeat
      s:=richedit1.Lines[i]; //Donne la ligne sorce
      x:=pos('"http://',s); //Premiere partie du lien
      y:=pos('">',s); //deuxieme partie du lien
      listbox1.Items.Add(Copy(s,x+1,y); Copie S de l index X a Y
      i:=i+1;
    until (i=10);
    Comme c'est déjà fait, je ne dirais rien de Copy...

    La prochaine fois, pense aux balises [code], et indente ton code

  7. #7
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!

    Eventuellement, tu peux t'inspirer du code de cette petite démo :
    http://sub0.developpez.com/delphi/syntax.zip

    Il s'agit d'une coloration syntaxique dans un TRichEdit. Le programme parcours tout le texte et trouvera la position des hyperliens si tu lui programmes les mots clés suivants : "http://", "https://" ou "ftp://"... Le programme est capable de faire la différence des mots ce qui pourrait peut-être te faciliter les choses par la suite...

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 88
    Points : 101
    Points
    101
    Par défaut
    bonjour,

    tu ne testes pas s'il y a plusieurs liens sur une ligne.

    Je ferais quelque chose du style :

    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
    i:=0;
    repeat
      s:=richedit1.Lines[i]; //Donne la ligne sorce
      x:=pos('"http://',s); //Premiere partie du lien
      while x>0 do begin
         y:=pos('">',s); //deuxieme partie du lien
         if (x>0) and (y>0) then 
         begin
            listbox1.Items.Add(Copy(s,x+1,y); Copie S de l index X a Y
            delete(s,x,y-x);// supprime de la ligne le lien trouvé
         end;
         x:=pos('"http://',s);// continue la recherche
      end;
      i:=i+1;
    until (i=10);
    code non testé

    [EDIT] oops et je remplaçerais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listbox1.Items.Add(Copy(s,x+1,y); Copie S de l index X a Y
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listbox1.Items.Add(Copy(s,x,y-x); Copie S de l index X a Y

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

Discussions similaires

  1. paramètres fonction POS()
    Par gautier.c dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/03/2012, 14h37
  2. fonction pos en erreur
    Par byc001 dans le forum Débuter
    Réponses: 8
    Dernier message: 01/12/2011, 13h50
  3. La fonction Pos() plante. Question de longueur.
    Par bvsud dans le forum Langage
    Réponses: 2
    Dernier message: 27/04/2011, 16h52
  4. [DeskI V5-V6] Utilisation fonction Pos()
    Par logoden dans le forum Débuter
    Réponses: 2
    Dernier message: 22/07/2010, 09h17
  5. [LG]Fonction POS evoluée ?
    Par JoseF dans le forum Langage
    Réponses: 4
    Dernier message: 07/11/2004, 14h38

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