Tous
Je veux savoir comment on fait une recherche sur un mots (par exemple ) dans un fichier ASCII.
svp
Tous
Je veux savoir comment on fait une recherche sur un mots (par exemple ) dans un fichier ASCII.
svp
Salut;
donc c'est un fichier texte. je te donne une recette bien ancienne mais elle s'avère lourde une fois que ton fichier est très volumineux. Tout d'abord tu ouvre ton fichier, tu le parcoure ligne par ligne ceci dit c'est une recherche séquentielle, pour cela tu as besoin d'un tableau ou d'une liste, chaque fois que tu rencontre ton mot tu rajoute son emplacement (numéro de ligne) dans le tableau ou la liste, aussi faut-il avoir une variable pour donner la fréquence, tu fais ça jusqu'à atteindre la fin du fichier.
En algo cela correspondrait à ça :
je crois que c'est tout.
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 i : entier Tab : Tableau entier Ouvrir Fichier i :=0 Tant que pas fin_de_fichier faire Lire_Ligne; Tant que pas fin_de_ligne Rechercher_dans_la_ligne(mot) si mot trouver alors incrémenter(i) Sauver_dans_Tableau(Tabl) fin si Fin Tant que // Lecture ligne Aller_Ligne_Suivante Fin Tant que // Lecture fichier
Bonne chance.
Salut,
Utilises donc la manip "Chercher" du Forum pour y re-trouver la fonction "SearchStringInBigFile" de ShaiLeTroll : elle est super.
A+
Tu peux egalement utiliser un TStringList ! loader le fichier ASCII et rechercher avec les fonctions Find ou IndexOf.
Merci Gilbert Geyer, SearchStringInBigFile est un mot clé trop long pour "Recherche", c'est bien dommage ... mais cela se trouve quand même en ne mettant que SearchString
L'algo n'est pas très différent de celui de Just-Soft, c'est juste qu'au lieu de lire Ligne par Ligne, cela lit paquet par paquet, cela va bcp plus vite, mais cela complique notablement la comparaison de chaine, surtout pour la gestion d'une chaine à cheval sur deux paquets
Bonjour,
A ShaiLeTroll :... merci pour l'info.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ... SearchStringInBigFile est un mot clé trop long pour "Recherche"
Tu ajoutes... je dirais que c'est encore plus dommage que SearchStringInBigFile ne soit pas carrément dans la Faq vu qu'il s'agit d'une réponse à une question très fréquemment posée ... mais ça viendra peut-être un jour (appel du pied).c'est bien dommage
A +
Gilbert Geyer vient d'évoquer un point très délicat. Au fait quels sont les critères pour qu'une réponse soit insérer dans la FAQ ?
Bonjour,
Ben le demander à un membre de la rédac, comme... Gilbert pardi !
Complément :
http://delphi.developpez.com/faq/?pa...#Participation
@+
Salut,
... à un membbre de la rédac : ouiBen le demander à un membre de la rédac], comme... Gilbert pardi !
comme Gilbert : non : je suis seulement modérateur.
Par contre on peut s'attendre à ce que :
- le 1er critère est de toute évidence que la réponse proposée pour être insérée dans la FAQ est qu'elle réponde à une Question Fréquemment posée,
- le 2ième critère est en toute logique que la réponse proposée soit efficace (efficace = suffisamment optimisée) (ce qui est le cas de SearchStringInBigFile qui a été fignolée au fil du temps),
- et parmi les critères suivants je parie qu'il faut :
- que la réponse soit assortie de commentaires pédagogiques si le code
n'est pas suffisamment "parlant" par lui-même : Exemple : Exit les noms de variables ambigûs ou qui compliquent la compréhension : plus le code est "parlant" et moins il nécessite de lignes de commentaires,
- que longueur du code ne dépasse pas une certaine taille : plus c'est court, plus c'est digeste, et plus tout le monde il aime.
- mais il y a peut-être d'autres critères car chaque cas est un cas particulier .
En tout cas, si je me trompe en disant ceci, c'est au moins ce que je recherche en fouillant le net.
A+
Bonjour ShaiLeTroll,
... mille excuses pour ce surcroît de boulot.C'est la dessus que je dois bosser pour que cela puisse devenir une FAQ
A ta place je traduirais les noms des variables en français (ex : AcceptOverlap --> OKLesChevauchements, Threshold --> StopAOccuMax, AmtTransferred --> Lu du verbe Lire, etc) plus il y a du français dans le code et moins il faudra de lignes de commentaires. (En plus, cf règle n° 3.1. Ce forum est un forum francophone ... et tant pis si on est obligé de conserver l'anglais pour des trucs comme TFileStream...) ... c'est juste une petite gymnastique intellectuelle de traduction.
... Ah bon ? Mais ce ne doit pas être très compliqué à faire., ... ainsi, que le passage des fonctions Delphi -> TFileStream
... tiens ça me rappelle la compatibilité descendante vers Delphi-5 par exemple où j'ai dû créer le Type tAOI = array of Integer; et remplacer le paramètre out OffSets: TIntegerDynArray; par var TableDesPositions : TAOI; vu que le TIntegerDynArray n'existe pas sous Delphi-5., puis compatibilité D2009
A +
Bien vu pour, "types" pour Delphi 5 ...
Pour le TFileStream, faut juste tester, rien de bien méchant ... c'est juste que vu que je n'ai internet qu'au boulot ... , ça peut prendre du temps ... avec les vacances ...
Je suis nul en anglais, une grosse quiche, mais pourtant, il m'est très difficile d'écrire du code en Français (sauf des mots genre Clients, Commandes, Factures...), pour tout ce qui concerne la technique, je reprends la terminologie de la MS API ...
Re-Salut,
... moi aussi, il m'en reste de vagues souvenirs, c'est pourquoi je refléchis en français et je donne à mes variables souvent des noms abrégés issus du français.Je suis nul en anglais,...
... ben, avec cette terminologie t'es pas sorti de l'auberge anglaise.... pour tout ce qui concerne la technique, je reprends la terminologie de la MS API ...
... et les noms des variables c'est pas vraiment de la technique c'est plutôt au niveau de la réflexion qu'on les choisit, Oui/Non ?
Mais chacun à son mode de fonctionnement.
Cordialement et à +
Partager