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 :

fonction pos en erreur


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    loisirs
    Inscrit en
    Novembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : loisirs
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 25
    Par défaut fonction pos en erreur
    Bonjour à tous,

    Je vous présente le problème : j'ai 1 répertoire films, des sous répertoires (western, comédie, etc) et dans ces répertoires des documents.doc, des affiches des films.bmp et des musiques de films.mp3

    j'ai mis en place en Tedit qui renseigne une chaine de caractères (exemple :wars)

    Je voudrais donc une procédure qui teste la chaine de caractères et qui balaye tous les sous répertoires à la recherche de l'occurence mise dans le Tedit et qui n'affiche que les fichiers.doc
    Je pensais à Pos mais cela ne fonctionne pas
    Pouvez vous, s'il vous plait, m'aider
    voila le code
    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
    37
    38
    39
    40
    41
    42
    43
     
    Function ListeFichiers(Chemin:String):Integer;
    Var S:TSearchRec;
    suitecaracteres : string;
    nomfichier : string;
    i : integer;
    Begin
      Chemin:=IncludeTrailingPathDelimiter(Chemin);
      If FindFirst(Chemin+'*.*',faAnyFile,S)=0 Then
        Begin
          Repeat
            if (S.Name<>'.')And(s.Name<>'..') Then
              Begin
                if (S.Attr And faDirectory)<>0 Then
                  ListeFichiers(Chemin+S.FindData.cFileName)
                Else
                  begin
    //j'ai été obligé de rajouter Form1. pourquoi ?
                    suitecaracteres := form1.Texterecherche.Text;
                    Nomfichier := ExtractFilename(changeFileExt(Chemin+S.FindData.cFileName,''));
                    i:= Pos(suitecaracteres;nomfichier); //c'est là que cela coince : Pas assez de caractères originaux
                    if i<>0 then
                      Form1.Liste.Items.Add(nomfichier); //mais là : je crois que j'aurais tous les fichiers
                  end;
     
              End;
          // Recherche du suivant
          Until FindNext(S)<>0;
          FindClose(S);
        End;
    End;
     
     
    procedure TForm1.rechercheClick(Sender: TObject);
    begin
      liste.items.clear;
      Recherche.enabled:= False;
      try
        ListeFichiers(AfficheRepFilms.Text);
      Finally
        Recherche.enabled:= true;
      end;
    end;
    Merci beaucoup
    Salutations
    byc001

  2. #2
    Membre averti
    Homme Profil pro
    loisirs
    Inscrit en
    Novembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : loisirs
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 25
    Par défaut je complète mon message
    Est il possible de remplacer cette fonction pos par une autre qui elle ne fera pas attention à la casse (minuscules/Majuscules) ou faut il ajouter quelque chose avant qui ferait le nécessaire pour que la fonction pos fonctionne (majuscules et minuscules)

    Merci beaucoup pour votre réponse.

    Salutations

    byc001

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pos(suitecaracteres;nomfichier);
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pos(suitecaracteres, nomfichier);
    Quelle est l'erreur ?
    Une Erreur de compilation ?
    Une Erreur à l'execution ? Etrange Pos ne déclenche pas d'exception normalement ?

    Pour la casse, utilise UpperCase sur les deux chaines avant ou alors StrUtils.ContainsText, attention c'est AText, ASubText inversé par rapport à SubStr, Str
    //j'ai été obligé de rajouter Form1. pourquoi ?
    ListeFichiers est une simple fonction, si tu veux qu'elle utilise implicitement Form1 (qui serait en terminologie POO le receveur), tu peux transformer cela en une méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function TForm1.ListeFichiers(Chemin:String):Integer;
    Ne pas oublier le prototype !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre averti
    Homme Profil pro
    loisirs
    Inscrit en
    Novembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : loisirs
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 25
    Par défaut il s'agit d'une erreur à la compilation
    Voila le code exact :
    [erreur]films.pas[497] : Pas assez de paramètres originaux

    Merci

  5. #5
    Membre averti
    Homme Profil pro
    loisirs
    Inscrit en
    Novembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : loisirs
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 25
    Par défaut merci pour votre réponse et...
    finallement, le code pos(suitecaracteres, nomfichier) fonctionne mais pas le code pos(suitecaracteres;nomfichier)!

    merci encore

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Euh, tu plaisantes ? C'était juste un problème de syntaxe ?

    Faudrait peut-être connaître les bases au minimum du pascal !
    , est le séparateur pour le passage de paramètre
    ; est le séparateur pour la déclaration de paramètre

    Tu as pourtant déjà utilisé un bon nombre de fonction avec plusieurs paramètres comme FindFirst, tu copies colles du code sans le comprendre ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre averti
    Homme Profil pro
    loisirs
    Inscrit en
    Novembre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : loisirs
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2011
    Messages : 25
    Par défaut non non je ne plaisante pas!
    Voila le copier/coller de l'aide de Delphi 7

    "Renvoie la valeur d'indice du premier caractère dans une sous-chaîne spécifiée qui se trouve dans une chaîne.

    Unité

    System

    Catégorie

    routines de gestion des chaînes

    Syntaxe Delphi :

    function Pos(Substr: string; S: string): Integer;

    Description

    Dans Delphi, la fonction Pos recherche une sous-chaîne, Substr, à l'intérieur d'une chaîne S. Substr et S sont des expressions de type chaîne.

    Pos recherche Substr à l'intérieur de S et renvoie une valeur entière correspondant à l'indice du premier caractère de Substr à l'intérieur de S. Pos fait la distinction majuscules/minuscules. Si Substr est introuvable, Pos renvoie zéro.

    La fonction PosEx est similaire à Pos, mais elle dispose de fonctionnalités supplémentaires et peut être utilisée dans le code C++."

    Je suis désolé si vous avez cru que je n'essayais pas de comprendre.

    Salutations

    byc001

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

Discussions similaires

  1. fonction ActiveWindow.Name erreur objet requis
    Par Davik dans le forum VBA Access
    Réponses: 5
    Dernier message: 09/02/2007, 11h08
  2. Delphi6 Fonction POS
    Par PimpW dans le forum Delphi
    Réponses: 7
    Dernier message: 03/08/2006, 09h44
  3. Fonction qui renvoie erreur dans mon état
    Par Daniel MOREAU dans le forum Access
    Réponses: 1
    Dernier message: 20/10/2005, 12h40
  4. fonction LAG et erreur PLS-00103. Oracle 8i
    Par henrirobert dans le forum Oracle
    Réponses: 7
    Dernier message: 26/05/2005, 16h03
  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