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 :

Recherche d'un mot dans un fichier


Sujet :

Delphi

  1. #1
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut Recherche d'un mot dans un fichier
    Salut Delphiste

    J'ai une liste de fichiers de tous types et je voudrais créer une fonction boolean qui me renvoie True si une chaîne donnée s'y trouve.

    Quelqu'un a-t-il l'idée de la façon la plus rapide de réaliser cette tâche ?

    Merci d'avance

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Pos

  3. #3
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Mon application a évolué et ma question est similaire mais différente de la précédente. Je ne fais plus une recherche de fichiers mais une recherche de mot à l'intérieur d'une liste donnée de fichiers.
    Je ne crois donc pas pas contrevenir aux règles du forum.

  4. #4
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Ben tu dois ouvrir chaque fichier et rechercher dedans séparément
    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
    procedure Cherche(Fichiers : TStrings);
    var I : integer;
       FileName : TFileName;
    begin
      with TStringList do
      try
        for I := 0 to Fichiers.Count-1 do
        begin
          LoadFromFile(Fichiers[I]);
          // Recherche
        end;
      finally
        Free;
      end;
    end;
    Après faut voir quelle est ta définition de "mot"

  5. #5
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Merci pour ta réponse.

    J'entend par mot, toute expression qu'un utilisateur rechercherait dans un fichier.

    J'ai compilé ta source mais j'ai une erreur
    «Forme d'appel de méthode autorisée seulement pour méthodes de classe.»
    sur l'instruction
    LoadFromFile(Fichiers[i])

  6. #6
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Il a juste oublié le Create.

    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
    procedure Cherche(Fichiers : TStrings);
    var I : integer;
       FileName : TFileName;
    begin
      with TStringList.Create do
      try
        for I := 0 to Fichiers.Count-1 do
        begin
          LoadFromFile(Fichiers[i]);
          // Recherche
        end;
      finally
        Free;
      end;
    end;

  7. #7
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Mon fichier de test commence par des caractères de contrôle.
    Quand je le charge dans TStringList, il ne prend que ces quelques caractères et count = 1.
    Par contre, dans un TRichEdit, il prend le nombre de lignes correspondant au fichier.
    Mais je n'ai pas besoin d'un composant visuel. Une idée sur un composant plus approprié que TStringList ?

    Merci

  8. #8
    Membre régulier
    Inscrit en
    Janvier 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Janvier 2003
    Messages : 110
    Points : 109
    Points
    109
    Par défaut
    Et avec un TFileStream...

  9. #9
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 446
    Points : 5 867
    Points
    5 867
    Par défaut
    salut


    je me suis fait un petit grep il n'y a pas is longtemps voici le code employé

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    unit UUMemorySearchTxt;
     
    interface
    Uses Classes;
    Type
      TOwnEventFound = Procedure(FileName: String) of Object;
     
    TMemorySearchTxt = Class
      MyStream: TMemoryStream;
      FoundEvent : TOwnEventFound;
      Constructor Create;
      Destructor  Destroy;
      function PosString(const S, motif : string) : integer;
      Procedure Execute(FileName: String;String2Find: String);
    end;
     
    implementation
     
     
    Constructor TMemorySearchTxt.Create;
    begin
      MyStream := TMemoryStream.Create;
    end;
    Destructor  TMemorySearchTxt.Destroy;
    begin
      MyStream.Free;
    end;
     
     
    function TMemorySearchTxt.PosString(const S, motif : string) : integer;
    begin
      Result := Pos(motif, S);
    end;
     
    Procedure TMemorySearchTxt.Execute(FileName: String;String2Find: String);
    var
      MyString : String;
      A        : Integer;
    begin
     try
      MyStream.Clear;
      MyStream.LoadFromFile(FileName);
      SetLength(MyString, MyStream.Size);
      MyStream.ReadBuffer(Pointer(MyString)^,MyStream.Size);
      A :=  PosString(MyString,String2Find);
      If A <> 0 then
       if Assigned(FoundEvent) Then
         FoundEvent(FileName);
     except
     end;
    end;
     
    end.

    @+ Phil

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

Discussions similaires

  1. recherche d'un mot dans un fichier
    Par elwess dans le forum C
    Réponses: 4
    Dernier message: 10/01/2011, 16h30
  2. find + grep recherche de plusieurs mots dans des fichiers différents
    Par sakura.haruno dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 27/04/2010, 23h58
  3. Recherche, découpage de 'mots' dans un fichier texte
    Par sbibi dans le forum Scripts/Batch
    Réponses: 16
    Dernier message: 21/01/2010, 15h26
  4. Recherche d'un mot dans un fichier
    Par chiwawa13 dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 07/05/2008, 12h33
  5. [C# 1.1]Recherche d'un mot dans un fichier
    Par drzoidberg dans le forum ASP.NET
    Réponses: 2
    Dernier message: 29/11/2006, 14h02

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