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

  1. #1
    Membre à l'essai
    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
    Points : 16
    Points
    16
    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 à l'essai
    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
    Points : 16
    Points
    16
    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 sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 563
    Points : 25 165
    Points
    25 165
    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 !

  4. #4
    Membre à l'essai
    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
    Points : 16
    Points
    16
    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 à l'essai
    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
    Points : 16
    Points
    16
    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 sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 563
    Points : 25 165
    Points
    25 165
    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 ?

  7. #7
    Membre à l'essai
    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
    Points : 16
    Points
    16
    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

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 563
    Points : 25 165
    Points
    25 165
    Par défaut
    Pourquoi cité l'aide, je l'a connais très bien !
    utilise [ quote] et [ /quote] pour les citations !

    Tu as une autre question sur Pos ou PosEx ?

    Est-ce le ; dans Pos(Substr: string; S: string) qui t'a embrouillé sur le séparateur de paramètre lors du passage à fonction ?

  9. #9
    Membre à l'essai
    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
    Points : 16
    Points
    16
    Par défaut Tout à fait
    Je suis débutant et (il est vrai) je me suis lancé une sorte de défi.
    Alors oui! le fait de trouver un point virgule m'a troublé et je trouve parfois l'aide de delphi un peu (beaucoup) absconse. alors je cherche, je recherche et quand je ne trouve pas je pose ma question (qui peut sembler inepte ou ridicule).
    Je suis désolé de vous avoir dérangé pour si peu et pour répondre à la 2ème question : non je n'ai plus de question concernant pos ou posex.

    En vous remerciant

    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