Recherche dans un fichier text [Résolu]

Messages postés
199
Date d'inscription
jeudi 22 février 2007
Dernière intervention
26 novembre 2009
- 15 mars 2007 à 22:47 - Dernière réponse :
Messages postés
199
Date d'inscription
jeudi 22 février 2007
Dernière intervention
26 novembre 2009
- 19 mars 2007 à 02:30
salut je debute encore sous delphi et j'aime bien savoir comment rechercher un mot dans un fichier texte et determiner la ligne puis l'afficher :)) merci d'avance pour vos bout de code :)

merci ;)
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
Messages postés
496
Date d'inscription
vendredi 14 novembre 2003
Dernière intervention
23 octobre 2007
- 16 mars 2007 à 01:28
3
Merci
Salut

Voila ce que je te propose (je n'ai pas de code sous la main désolé)

- Charger le fichier texte dans un mémo ou richedit (loadfromfile)
- Faire une boucle ($i) de 0 à memo.lines.count (de 0 jusqu'a la dernière lignes)
- A chaque itération de la boucle, chercher "mot clé" (avec ansipos?)
- Si il l'a trouvé tu affiches: " la ligne où se trouve 'mot clé' est $i ".

J'espère que c'est compréhensible, sinon n'hésite pas.

++

Filipe

__________________________________________________
http://www.OgameTut.Free.Fr - Le site sur ogame de référence !
http://Signz.free.fr - Le gén&#

Merci Filipe35 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de Filipe35
Meilleure réponse
Messages postés
900
Date d'inscription
vendredi 3 novembre 2000
Dernière intervention
30 juillet 2009
- 16 mars 2007 à 09:26
3
Merci
salut,

@Filipe35: oui t'es pas réveiller.  Il a poser la question pour Delphi. (donc en pascal object je suppose)

function GetLineNumber(aFileName : string ; aWord : string) :  integer;
// return -1 si pas trouvé. pas case sensitive.
var
  str : tstringlist;
i : integer;
begin
result := -1;
str := Tstringlist.create;
aWord :=uppercase( aWord); // pour ne pas dependre de la case. a toi de voir
try
str.loadfromfile(afilename);
for i := 0 to str.count-1 do // pour chaque ligne du fichier
  if pos( aWord, uppercase(str[i]) > 0 then begin
    result := i;
   exit; // trouvé, donc on quit.
  end;//if
finally
str.free;
end;//try

end;

et pour l'afficher:

Showmessage(format('Le mot %s est à la ligne %d', ['TonMot', getlineNumber('fichier.ext', 'ToMot']));

c'est pas testé et fait en "live". mais l'algo est bon.

bon code,

Loda

PS: oubie pas de cliquer sur réponse accepter si cela te convient.
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.

Merci cs_Loda 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_Loda
Meilleure réponse
Messages postés
199
Date d'inscription
jeudi 22 février 2007
Dernière intervention
26 novembre 2009
- 18 mars 2007 à 00:03
3
Merci
j'ai esseyer avec ce code la mais il me dit la classe n'a pas de priorité par defaut au niveau de la ligne "pos (motcle,richedit1[i])<>0 "

procedure TForm1.FormCreate(Sender: TObject);
begin
richedit1.lines.loadfromfile('c:\c.txt');
motcle:='b';
X:=richedit1.lines.count;
panel1.caption:=inttostr(x);
end;


procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=1 to x-1 do
if pos (motcle,richedit1[i])<>0 then
showmessage('cool');
end;


end.

merci ;)

Merci hardouz 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de hardouz
Meilleure réponse
Messages postés
496
Date d'inscription
vendredi 14 novembre 2003
Dernière intervention
23 octobre 2007
- 18 mars 2007 à 16:14
3
Merci
oui, enfin là tu pousse un peu je trouve, tu chercherais ne serait-ce qu'un peu ....



If AnsiPos(motclé, RichEdit1.Lines[i]) > 0 then
          begin
          showmessage('trouvé ligne: '+ i + ', voici la ligne : ' + RichEdit1.Lines[i]);
          end;

(non testé mais sa doit être ça)

++

bon coding

Fil

__________________________________________________
http://www.OgameTut.Free.Fr - Le site sur ogame de référence !
http://Signz.free.fr - Le gén&#

Merci Filipe35 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de Filipe35
Meilleure réponse
- 19 mars 2007 à 02:27
3
Merci
Salut,

Tu commences à devenir un ptit peu pénible alors tiens

procedure TForm1.Button1Click(Sender: TObject);
Var
i,j:cardinal;
begin
If not OpenDialog1.Execute then exit;
RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
For i:=0 to RichEdit1.Lines.Count-1 DO
Begin
j:=Pos(Edit1.text,RichEdit1.Lines[i]);
If j>0 then
showmessage('Le mot est à la ligne '+IntToStr(i+1)+' et est le mot commence au '+IntToStr(j) +'caractère');
end;
end;

Ceci n'est pas optimisé (Majuscule/minuscule non distinguées) et il y a peut etre des beugs car non testé : tu n'auras pas mieux

Pas la peine de revenir à la chager

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Messages postés
496
Date d'inscription
vendredi 14 novembre 2003
Dernière intervention
23 octobre 2007
- 16 mars 2007 à 01:37
0
Merci
Après re-lecture, je me suis rendu compte que ce n'était pas très clair. (il se fait tard désolé)

voila à quoi devrait ressembler ton code. ( je n'ai pas delphi sous main, et je ne me souvient plus vraiment de la syntaxe, ayant beaucoup codé en php récement.)

// charge le fichier
memo.lines.loadfromfile('mon fichier.txt');

$motclé = 'bob';

// ma boucle
for  ( $=0 ;  $i!=memo.lines.count ; $i++ ) {
 if ( ansipos( $motclé, memo.lines[$i])>0 )
     {
    // On affiche la ligne
    showmessage ('ligne $i :' . memo.lines[$i]);
    $trouver = 1; // voir plus bas
    break; // vu qu'on la trouvé on cherche plus, à toi de voir ;)
    }
}

// on sait jamais

if (!$trouver)
    {
    showmessage ('Ce fichier ne contient pas : $motclé');
    }

voilou, bon coding ;)

Fil

PS: désolé pour le double post

__________________________________________________
http://www.OgameTut.Free.Fr - Le site sur ogame de référence !
http://Signz.free.fr - Le gén&#
Commenter la réponse de Filipe35
Messages postés
199
Date d'inscription
jeudi 22 février 2007
Dernière intervention
26 novembre 2009
- 17 mars 2007 à 09:28
0
Merci
j'ai delphi 6 donc je vai tester
merci ;)
Commenter la réponse de hardouz
Messages postés
199
Date d'inscription
jeudi 22 février 2007
Dernière intervention
26 novembre 2009
- 17 mars 2007 à 22:17
0
Merci
ca ne marche pas :(
quelqun peut me poster une source ?
merci d'avance
Commenter la réponse de hardouz
Messages postés
496
Date d'inscription
vendredi 14 novembre 2003
Dernière intervention
23 octobre 2007
- 18 mars 2007 à 13:37
0
Merci
       If AnsiPos('$motclé', RichEdit1.Lines[i]) > 0 then
          begin
          showmessage('trouvé ligne $i');
          end;

__________________________________________________
http://www.OgameTut.Free.Fr - Le site sur ogame de référence !
http://Signz.free.fr - Le gén&#
Commenter la réponse de Filipe35
Messages postés
199
Date d'inscription
jeudi 22 février 2007
Dernière intervention
26 novembre 2009
- 18 mars 2007 à 15:49
0
Merci
je programme en delphi ;) 
Commenter la réponse de hardouz
Messages postés
199
Date d'inscription
jeudi 22 février 2007
Dernière intervention
26 novembre 2009
- 18 mars 2007 à 15:56
0
Merci
Comment parcourir le texte ligne par ligne et si le mot clé est trouver alors il affiche toute la ligne ???
Commenter la réponse de hardouz
Messages postés
199
Date d'inscription
jeudi 22 février 2007
Dernière intervention
26 novembre 2009
- 19 mars 2007 à 02:30
0
Merci
LoL merci bcp ;)
Commenter la réponse de hardouz

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.