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
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
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.
Ben tu dois ouvrir chaque fichier et rechercher dedans séparément
Après faut voir quelle est ta définition de "mot"
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;
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 erreursur l'instruction«Forme d'appel de méthode autorisée seulement pour méthodes de classe.»LoadFromFile(Fichiers[i])
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;
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
Et avec un TFileStream...
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager