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 :)
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.
@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.
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
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é');
}