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 Pascal Discussion :

[LG]Fonction POS evoluée ?


Sujet :

Langage Pascal

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 176
    Points
    176
    Par défaut [LG]Fonction POS evoluée ?
    Bonjour,

    Je cherche un fonction qui me permette de retrouver l'emplacement d'une sous chaine. Avec la fonction POS, je n'arrive qu'à retouver la 1ere ou la derniere occurence.

    exemple dans la chaine suivante :

    "la finesse est la part du jugement, la géométrie est celle de l'esprit.(Blaise Pascal )"

    je voudrais trouver la position du 2eme "la" . Bien sûr je peux écrire un peu de code pour retrouver mais si une focntion existait du genre INSTR(DEPART,CHAINE à TROUVER,CHAINE_ORIGINE)
    soit X:=INSTR(3,"la",Texte)

    Merci de votre aide

    JoseF
    Un bon exemple vaut mieux qu'une longue explication confuse...

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Non il n'existe pas de fonction pour ce genre de traitement... Il faudra que tu réécrives une fonction

    En se basant sur Pos, qui trouve la première occurrence d'une sou-chaîne dans une chaîne, tu peux y arriver simplement avec une boucle :

    Si par exemple tu recherches la deuxième ocurence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var I, Position: Integer:
    var S: String;
     
    I := 0;
    while I<2 do
    begin
      Position := Pos('la', S);
      S := Copy(S, Position + 2, Length(S));
      I := I + 1;
    end;
     
    WriteLn('Position de la deuxième occurence : ', Position);
    A améliorer évidemment, car il n'y a pas de gestion des erreurs...

    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 176
    Points
    176
    Par défaut FP fonction Pos évoluée en assembleur
    Merci pour ce code.

    Mais comme je dois analyser des dizaines de milliers de lignes (je recherche les points-virgules dans les fichiers au format csv) je me demande si personne n'a écrit cette fonction en assembleur par exemple, car au niveau optimisation je pense que ça peut être mieux.


    Cordialement,

    JoseF
    Un bon exemple vaut mieux qu'une longue explication confuse...

  4. #4
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    La fonction n'étant pas très complexe, je ne suis pas sûr que la réécrire en assembleur puisse apporter une amélioration effective des performances (bien sûr, il y aura une amélioration mais je pense qu'elle sera sensible...)

    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 192
    Points : 176
    Points
    176
    Par défaut focntion pos évoluée en assembleur
    Merci de tes réponses.

    Effectivement ce n'est pas un jeu que je conçois et je ne vais pas utiliser mon programme pendant des heures . La lecture des fichiers une fois faite, je n'y reviens plus et de faire de l'assembleur couterait un peu cher !

    voila je crois avoir fait le tour de mon probleme et encore merci

    à + pour d'autres question peut etre

    JoseF
    Un bon exemple vaut mieux qu'une longue explication confuse...

+ 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. Delphi6 Fonction POS
    Par PimpW dans le forum Delphi
    Réponses: 7
    Dernier message: 03/08/2006, 09h44

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