Recherche terme

Résolu
Signaler
Messages postés
23
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
13 février 2006
-
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
-
Bonjour à tous,



Je souhaite en stage dans une boite de développement informatique et
mon maitre de stage me demande d'écrire un programme qui permet de
trier le contenu du rapport d'erreur du logiciel Arcserve.



Ce rapport est un fichier texte, mon maitre de stage souhaite que
toutes les lignes d'erreurs contenant les termes : "temp",
".tmp", ".ldf" et "tacheres.dat" soient placés dans un fichier
exception.txt. Toutes les autres erreurs seront dans placés dans le
fichier erreur.txt.



Ce que je souhaite donc savoir c'est si il existe une

fonction qui me permettrai de rechercher ces termes dans le fichier texte?



Je vous remercie d'avance. @+

22 réponses

Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
Salut,
essaye la Fonction pos :
elle renvoie 0 si la chaine n'est pas trouvée
et si la chaine est trouvée elle renvoie la position sa position
tu charges le fichier texte dans un TStringList et tu Testes les lignes une à une.
Ex:
Var
FichierSource, FichierDestination : TStringList;
I : Integer;
Begin
FichierSource := TStringList.Create.
FichierDestination := TStringList.Create.
Try
FichierSource.LoadFromFile('Le_Nom_Du_Fichier.txt');
For I : = 0 to FichierSource.count - 1 Do
Begin
If Pos('.tmp', FichierSource[I]) > 0 Then // reproduire la partie en rouge pour tous les types à trouver
Begin
FichierDestination.Add(FichierSource[I]) ; // Ajout dans le nouveau Fichier
FichierSource.Delete(I); // supprimer si trouvé
End;
End;
Finally
FichierSource.SaveToFile('Erreur.txt');
FichierSource.Free;
If FichierDestination.Count > 0 Then
FichierDestination.SaveToFile('Exception.Txt');
FichierDestination.Free;
End;
End;

Bien sûr il faut encore le completer ce n'est qu'une ébauche mais je pense que c'est la marche à suivre


@+
Cirec
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
salut

tu ouvres ton fichier dans une listbox ou une Tstringlist

listbox1.items.loadfromfile('nomdufichier');

puis tu teste ligne par ligne si elle contient un des termes que tu ranges dans 2 autres listes:



for i:=0 to listbox1.items.count-1 do

begin

if (pos('temp',listbox1.items[i])<>-1)or

(pos('.ldf',listbox1.items[i])<>-1)or

(pos('temp',listbox1.items[i])<>-1)or

(pos('tacheres.dat',listbox1.items[i])<>-1) then

listbox2.items.Appends(listbox1.items[i])else

listbox3.items.Appends(listbox1.items[i])



end;

il ne te reste plus qu'à enregistrer la seconde liste:

listbox2.items.SavetoFile('exception.txt');

listbox3.items.SavetoFile('erreur.txt');



je pense que cela devarit faire l'affaire



@+

jlen
Messages postés
23
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
13 février 2006

Une petite question quand même. J'ai commencé mon programme en
chargeant le fichier texte dans un memo:
Memo2.Lines.LoadFromFile(Fichier.txt). Est ce que votre méthode marche
aussi avec un mémo?
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
salut,

je viens de voir une erreur dans ce que t'ai donné cirec à raison pos renvoie 0 et non -1

donc

if (pos('temp',listbox1.items[i])<>-1)or

(pos('.ldf',listbox1.items[i])<>-1)or

(pos('temp',listbox1.items[i])<>-1)or

(pos('tacheres.dat',listbox1.items[i])<>-1) then

devient

if (pos('temp',listbox1.items[i])<> 0 )or

(pos('.ldf',listbox1.items[i])<>0)or

(pos('temp',listbox1.items[i])<>0)or

(pos('tacheres.dat',listbox1.items[i])<>0) then

je ne sais pas ou j'avais la tete!!



@+

jlen
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
oui la methode fonctionne avec un memo il faut remplacer

listbox1.items[i] par Memo2.lines[i]

@+

jlen
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
precisions

les methodes loadfromfile(), SavetoFile() ,Appends(),
Add() sont celles des Tstrings et donc utilisables pour toutes les
propriétés des composants possédant une telle propriétés
(items,lines...) de même count est une propriétés des Tstrings (plus
exactement une propriété plus générale des Tlist)



@+

jlen
Messages postés
23
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
13 février 2006

Salut, je vous remercie pour votre aide, je teste
ça et je vous dis ce que ça
donne.

@+
Messages postés
23
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
13 février 2006

Merci beaucoup jlen100 t'es trop fort @+
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
pas tant que çà!!

@+

jlen
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
Salut ,


encore une fois 7 messages se sont ajoutés sans que j'en soit informé
n'y a t'il pas un soucis avec le bon fonctionnement du site Avis aux Admins
si je dois surveiller moi même tous les threads ou j'ai poster ça vas être très long et contraignant mais sur tout je ne devrais pas avoir à faire cela non
Alors ma question est très simple : POURQUOI
petite precision ce n'est pas ma boite j'en ai 3 et de 3 opérateur j'ai donc pu faire les testes. Les mails arrivesen mois de 30 secondes alors que là ça fait plus de 2 heures et j'ai toujours rien.

@jlen
salut, il me semble qu'il y a encore un petit soucis dans ton code
rien de bien grave juste une ligne en trop :

if (pos('temp',listbox1.items[i])<> 0 )or
(pos('.ldf',listbox1.items[i])<>0)or
(pos('temp',listbox1.items[i])<>0)or
(pos('tacheres.dat',listbox1.items[i])<>0) then

@+
Cirec
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
salut cirec,

encore un copier coller qui fait des siennes en fait il ya une fois 'temp' et une fois 'tmp'

et comme j'ai copié les lignes (ouh le vilain petit flemmard!!) j'ai, comme qui dirait, oublié de modifier le second!!

mea culpa



@+

jlen
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
Comme je le disais rien de bien grave, mais c'est toujours plus facile de relever les erreurs chez les autres que dans ses propres codes

jlen dit moi es-tu prévenu des nouveaux messages



@+
Cirec
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
oui en général çà va pas mal

la preuve!!

@+

jlen
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
oui c'est ce que je me suis dis une fois que j'avais fait ma demande (si il répond aussi rapidement c'est qu'il en est informé) moi au contraire je surveille constament mais comme j'ai posté pas mal ces dernier temps je n'arrive pas à suivre
je vais doc reformuler : tu n'as jamais remarqué ce genre de problème sur tes messages



@+
Cirec
Messages postés
23
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
13 février 2006

Merci 1000 fois pour votre aide les gars, ça marche niquel maintenant !
Messages postés
23
Date d'inscription
mardi 10 janvier 2006
Statut
Membre
Dernière intervention
13 février 2006

J'ai un autre petit problème, si vous pouvez m'aidez la dessus ça serait super.

Je souhaite envoyé le contenu de memo5 par e-mail.

Memo5 contient toutes les erreurs que Arcserve a eu lors de sa sauvegarde.

J'utilise indy pour envoyé l'e-mail.

Je reçois bien l'e-mail sur ma boite de réception mais le contenu de l'e-mail est vide.

Est-ce que vous auriez une idée?
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
Oui effectivement c'est bizarre comme dit ce n'est que la deuxième fois que ça m'arrive si non c'est vrai que c'est relativement rapide mais la c'est plus que bouché ça devrait déborder de tous cotés
as-tu déjà demandé aux Admins pourquoi, parce que la c'est claire il y a une réponse qui a disparue, plutôt surprenant. ah les mystères de l'informatique

@ xt3 comme la dit jlen n'oublie pas de cliquer sur réponse accepée je pense que la recherche de terme est résolue.
En suite tu auras plus de chance d'avoir une réponse sur le problème de mail si tu poste une nouvelle question dans un nouveau thread avec plus de precision en donnant par exemple le code utilisé pour envoyer le mail.



@+
Cirec
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
oup il faut lire réponse acceptée et non réponse accepée



@+
Cirec
Messages postés
1606
Date d'inscription
samedi 10 juillet 2004
Statut
Membre
Dernière intervention
25 juillet 2014
12
--> cirec je pense que tu as la reponse au ratard sur le blog de nix ( disque dur HS):

http://blogs.developpeur.org/nix/archive/2006/01/25/16803.aspx

apparement il devait deja avoir des ratées quand j'ai posté!!

--> xt3 pour ton problème de mail tu devrais poster une nouvelle
question sur le forum ( personnellement je ne connais pas indy)

@+


jlen
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
oui absolument je fait parti des @Aol donc tant que Nix n'aura pas changé de disque dur ben pas de mail

Merci pour l'information ca ne résoud pas mon problème mais je sais au moins pourquoi


@+
Cirec