Recherche terme

Résolu
xt3 Messages postés 23 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 13 février 2006 - 24 janv. 2006 à 16:29
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 - 25 janv. 2006 à 20:14
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

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
24 janv. 2006 à 17:58
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
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
24 janv. 2006 à 18:04
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
3
xt3 Messages postés 23 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 13 février 2006
25 janv. 2006 à 09:02
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?
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
25 janv. 2006 à 09:04
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
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
25 janv. 2006 à 09:09
oui la methode fonctionne avec un memo il faut remplacer

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

@+

jlen
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
25 janv. 2006 à 09:19
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
3
xt3 Messages postés 23 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 13 février 2006
25 janv. 2006 à 08:48
Salut, je vous remercie pour votre aide, je teste
ça et je vous dis ce que ça
donne.

@+
0
xt3 Messages postés 23 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 13 février 2006
25 janv. 2006 à 10:06
Merci beaucoup jlen100 t'es trop fort @+
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
25 janv. 2006 à 10:09
pas tant que çà!!

@+

jlen
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
25 janv. 2006 à 11:15
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
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
25 janv. 2006 à 11:26
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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
25 janv. 2006 à 11:33
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
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
25 janv. 2006 à 11:36
oui en général çà va pas mal

la preuve!!

@+

jlen
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
25 janv. 2006 à 11:44
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
0
xt3 Messages postés 23 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 13 février 2006
25 janv. 2006 à 12:10
Merci 1000 fois pour votre aide les gars, ça marche niquel maintenant !
0
xt3 Messages postés 23 Date d'inscription mardi 10 janvier 2006 Statut Membre Dernière intervention 13 février 2006
25 janv. 2006 à 12:17
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?
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
25 janv. 2006 à 12:41
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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
25 janv. 2006 à 12:43
oup il faut lire réponse acceptée et non réponse accepée



@+
Cirec
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
25 janv. 2006 à 13:36
--> 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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
25 janv. 2006 à 13:47
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
0
Rejoignez-nous