[R] Comparaison fichier texte
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Comparaison fichier texte
Bonjour,
Je travail actuellement sur un script permettant de récupérer des informations sur deux sites différents et de les comparer entre elles...
Ne sachant pas très bien magner AutoIT, j'ai utilisé l'ouverture de notepad puis le collage directement dans le fichier texte.
Or, je bute vraiment pour la suite... La comparaison des deux fichiers est assez compliquée et malheureusement, la fonction rechercher n'a pas fait mon bonheur...
Si vous pourriez m'éclairer un peu, ce serai sympa de votre part.
D'avance, merci.
BioSs.
Je travail actuellement sur un script permettant de récupérer des informations sur deux sites différents et de les comparer entre elles...
Ne sachant pas très bien magner AutoIT, j'ai utilisé l'ouverture de notepad puis le collage directement dans le fichier texte.
Or, je bute vraiment pour la suite... La comparaison des deux fichiers est assez compliquée et malheureusement, la fonction rechercher n'a pas fait mon bonheur...
Si vous pourriez m'éclairer un peu, ce serai sympa de votre part.
D'avance, merci.
BioSs.
Modifié en dernier par BioSs le lun. 24 mai 2010 15:40, modifié 1 fois.
- matwachich
- Membre émérite

- Messages : 986
- Enregistré le : lun. 19 oct. 2009 04:04
- Localisation : Algérie
- Status : Hors ligne
Re: [..] Comparaison fichier texte
Bah, ya plusieurs scénarios!
- Tu veut comparer le contenu des fichiers
Ou alors tous simplement la taille des fichiers:
Ca depend de ce que tu veut faire, donne nous plus de détails!
- Tu veut comparer le contenu des fichiers
Code : Tout sélectionner
$read1 = fileread("ficheir1.txt")
$read2 = fileread("fichier2.txt")
if $read1 = $read2 then
Msgbox(0,"","Fichiers identiques")
else
Msgbox(0,"","Fichiers differents")
endifCode : Tout sélectionner
$taille1 = filegetsize("fichier1")
$taille2 = filegetsize("fichier2")
if $taille1 = $taille2 then
Msgbox(0,"","Fichiers identiques")
else
Msgbox(0,"","Fichiers differents")
endifSortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Comparaison fichier texte
Le plus simple serait de nous dire ce que vous avez au départ et ce que vous voulez à l'arrivée.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
SagePourpre
- Niveau 7

- Messages : 442
- Enregistré le : dim. 06 juil. 2008 09:11
- Status : Hors ligne
Re: [..] Comparaison fichier texte
Pour parvenir à ton résultat, la méthode qui me vient à l'esprit serait d'utiliser
Pour trouver des informations spécifiques, deux solutions.
De loin la plus aisée serait d'utiliser
Beaucoup plus compliquée mais pas mal mieux
En utilisant cette méthode, tu seras en mesure de récupérer les informations voulues sur
chacun des sites pour ensuite les comparer.
Code : Tout sélectionner
#include <Inet.au3>
$source = _INetGetSource('http://www.SiteàRécupérer.com')
De loin la plus aisée serait d'utiliser
Code : Tout sélectionner
StringMidBeaucoup plus compliquée mais pas mal mieux
Code : Tout sélectionner
StringRegExpEn utilisant cette méthode, tu seras en mesure de récupérer les informations voulues sur
chacun des sites pour ensuite les comparer.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
plus belle vue du haut de son Pouf = )
Re: [..] Comparaison fichier texte
Tout d'abord merci pour vos réponses et à l'intérêt que vous portez sur ce projet.
En fait, je récupère via copier-coller une phrase dans une page web et ensuite la place dans un bloc note.
Puis je fais la même chose avec une seconde page web que je place dans un second bloc note.
Le problème, c'est que ces phrases n'ont rien d'identique. Car le premier fichier contiendra une phrase du genre "Test possible" ou "Test impossible"
et le second des valeurs du genre : "Affaiblissement U:20 D:40 S:42"
Le fait est que lorsque le Test est possible, alors je lui assigne une valeur (34 par exemple) et je le compare au "D:40"...
Je ne sais pas si vous m'avez correctement compris. Mais je pourrais à mon tour vous éclairez sur le but de mon projet... (Même si c'est très long à expliquer ^^)
En fait, je récupère via copier-coller une phrase dans une page web et ensuite la place dans un bloc note.
Puis je fais la même chose avec une seconde page web que je place dans un second bloc note.
Le problème, c'est que ces phrases n'ont rien d'identique. Car le premier fichier contiendra une phrase du genre "Test possible" ou "Test impossible"
et le second des valeurs du genre : "Affaiblissement U:20 D:40 S:42"
Le fait est que lorsque le Test est possible, alors je lui assigne une valeur (34 par exemple) et je le compare au "D:40"...
Je ne sais pas si vous m'avez correctement compris. Mais je pourrais à mon tour vous éclairez sur le but de mon projet... (Même si c'est très long à expliquer ^^)
-
SagePourpre
- Niveau 7

- Messages : 442
- Enregistré le : dim. 06 juil. 2008 09:11
- Status : Hors ligne
Re: [..] Comparaison fichier texte
Voici un exemple simple de comparaison réalisée à l'aide de deux lignes récupérées...
Naturellement, il te reste à l'adapter à ton script mais c'est une bonne ligne directrice
StringRegExp est une excellente méthode pour trouver n'importe quel bout de texte dans n'importe quoi
et est plus susceptible de résister à un léger changement dans le code mais beaucoup plus complexe à maîtriser.
J'évite donc de m'en servir dans cet exemple.
Naturellement, il te reste à l'adapter à ton script mais c'est une bonne ligne directrice
Code : Tout sélectionner
#include <Array.au3>
Local $site1phrase = 'Test possible' = '' ;Stocke "Test possible" ou "Test impossible" ici à l'aide de ta méthode
Local $u1,$d1,$s1
Switch $site1phrase
Case 'Test possible' ; on assigne des valeurs aux éléments à comparer selon si le premier site renvoie test possible ou impossible
$u1 = '34'
$d1 = '34'
$s1 = '34'
Case 'Test impossible'
$u1 = ''
$d1 = ''
$s1 = ''
EndSwitch
Local $site2phrase = "Affaiblissement U:20 D:40 S:42" ; ex de phrase récupérée par ton 2eme site :
$site2phrase = StringSplit($site2phrase, ' :', 0)
;_ArrayDisplay($site2phrase) ; Enlever commentaire pour voir tableau généré
Local _
$u2 = $site2phrase[3], _
$d2 = $site2phrase[5], _
$s2 = $site2phrase[7]
$result = Compare($u1,$u2)
MsgBox(0,'',$result)
Func Compare($v1,$v2)
If $v1 = $v2 Then
Return 1 ; Retourne 1 si la première valeur comparée est égale à la deuxième
Else
Return 0 ; Retourne 0 si la première valeur comparée n'est égale à la deuxième
EndIf
EndFunc
et est plus susceptible de résister à un léger changement dans le code mais beaucoup plus complexe à maîtriser.
J'évite donc de m'en servir dans cet exemple.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
plus belle vue du haut de son Pouf = )
Re: [..] Comparaison fichier texte
Merci pour ta réponse !
J'ai essayer ta méthode mais sans réél réussite...
Déjà que j'suis pas très bon en C ! Alors en AutoIT...
Enfin bref !
Serais-ce plus simple si je mets toutes mes informations dans 1 seul fichier texte ?
Par exemple :
Fichier1.txt
Et que depuis ce fichier je recherche une valeur qui correspond soit à "REPONSE REFLET : POSSIBLE" soit à "REPONSE REFLET : IMPOSSIBLE". Ensuite j'affecte une valeur à cette réponse.
Et je compare cette valeur à D: "29" avec une condition.
C'est encore assez confus dans ma tête donc j'essai de me faire un p'tit schèma...
J'ai essayer ta méthode mais sans réél réussite...
Déjà que j'suis pas très bon en C ! Alors en AutoIT...
Enfin bref !
Serais-ce plus simple si je mets toutes mes informations dans 1 seul fichier texte ?
Par exemple :
Fichier1.txt
Code : Tout sélectionner
REPONSE REFLET : POSSIBLE
038XXXX046
Ad IP: 10.1XX.2XX.1XX
Atténuation en dB
U: 12 D: 29 Seuil: 34
Marge en dB
U: 17 D: 8 Seuil: 8
Synchro (kbits/s)
U: 950 D: 8665
Stabilité: OK
Seuil CRC
U: 360 D: 360
Valeur CRC
U: 0 D: 0
Client Vpi/Vci: 8 / 35
Dslam: DSXXXX03
Accueil
Retour
Et je compare cette valeur à D: "29" avec une condition.
C'est encore assez confus dans ma tête donc j'essai de me faire un p'tit schèma...
-
SagePourpre
- Niveau 7

- Messages : 442
- Enregistré le : dim. 06 juil. 2008 09:11
- Status : Hors ligne
Re: [..] Comparaison fichier texte
Voici un exemple parfaitement fonctionnel avec l'exemple de fichier texte
que tu as fourni.
Si tu veux en apprendre plus sur le fonctionnement de StringRegExp, tu peux regarder l'aide
et faire tes propres tests avec Regex Coach ( http://www.weitz.de/regex-coach/ )
que tu as fourni.
Code : Tout sélectionner
#include <Array.au3>
#include <File.au3>
Global _
$arr, $NomduFichier = 'fichier.txt'
Local $f = _FileReadToArray($NomduFichier, $arr)
_ArrayDisplay($arr, 'Lignes Fichier Texte')
$PossibleOuImpossible = StringRegExp($arr[1], 'REPONSE REFLET : (.*)', 1)
$PossibleOuImpossible = $PossibleOuImpossible[0]
MsgBox(0, '', $PossibleOuImpossible)
For $i = 2 To $arr[0]
Local $regexp = StringRegExp($arr[$i], 'U: (\w*) D: (\w*) (?:Seuil\: )?(\w*)?', 1)
If @error Then ContinueLoop ; Si la ligne ne contient pas les infos qui nous intéressent, on passe directement à la prochaine ligne
_ArrayDisplay($regexp)
Local _
$u = $regexp[0], _
$d = $regexp[1], _
$seuil = $regexp[2]
Switch $PossibleOuImpossible
Case 'POSSIBLE'
If Compare($u, '360') = 1 Then
MsgBox(0,'','Reflet : ' & $PossibleOuImpossible & @CRLF & 'U est égal à 360' & @CRLF & '(ligne du fichier texte) : ' & $i)
EndIf
Case 'IMPOSSIBLE'
EndSwitch
Next
Func Compare($v1, $v2)
If $v1 = $v2 Then Return 1
Return 0
EndFunc ;==>Compare
et faire tes propres tests avec Regex Coach ( http://www.weitz.de/regex-coach/ )
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
plus belle vue du haut de son Pouf = )
Re: [..] Comparaison fichier texte
Je te remercie..
Je comprends un peu mieux le système et j'ai fait quelque chose de plus "écolier" ^^
Ca fonctionne pas trop trop mal...
Je comprends un peu mieux le système et j'ai fait quelque chose de plus "écolier" ^^
Ca fonctionne pas trop trop mal...
Code : Tout sélectionner
#include <Array.au3>
#Include <File.au3>
Local $site1phrase = FileReadLine ( "fichier1.txt" , 1 ) ;Stocke "Test possible" ou "Test impossible" ici à l'aide de ta méthode
Local $AffTheoriqueMax
Switch $site1phrase
Case 'REPONSE REFLET : POSSIBLE' ; on assigne des valeurs aux éléments à comparer selon si le premier site renvoie test possible ou impossible
$AffTheoriqueMax = '34'
Case 'REPONSE REFLET : IMPOSSIBLE'
$AffTheoriqueMax = ''
EndSwitch
Local $site2phrase = FileReadLine ( "fichier1.txt" , 7 ) ; ex de phrase récupérée par ton 2eme site :
$AffReel = StringSplit($site2phrase, ' :', 0)
;_ArrayDisplay($site2phrase) ; Enlever commentaire pour voir tableau généré
Local _
$u2 = $AffReel[3], _
$d2 = $AffReel[7], _
$s2 = $AffReel[11]
$result = Compare($AffTheoriqueMax,$d2)
If($result==0) Then
MsgBox(0,'',"L'offre est correct. Aucun changement n'est à prevoir !")
Else
MsgBox(0,'',$AffTheoriqueMax)
MsgBox(0,'',$d2)
MsgBox(0,'','Le client est trop éloignée du central. Il faut effectuer un repli technique !')
EndIf
Func Compare($v1,$v2)
If $v1 < $v2 Then
Return 1 ; Retourne 1 si la valeur théorique est plus petite que la réel (donc offre OK).
Else
Return 0 ; Retourne 0 si la valeur réél est plus petite que la théorique (donc offre NOK).
EndIf
EndFunc
-
SagePourpre
- Niveau 7

- Messages : 442
- Enregistré le : dim. 06 juil. 2008 09:11
- Status : Hors ligne
Re: [..] Comparaison fichier texte
Pas de quoi.
Dans ton script écolier par contre, ça ne fonctionnera uniquement que si l'information
est toujours à la ligne 7. Si tel est le cas alors, il n'y a pas de soucis.
Si ton problème est résolu, n'oublie pas de changer la balise de titre de ton premier message
[..] pour [R]
Merci.
Dans ton script écolier par contre, ça ne fonctionnera uniquement que si l'information
est toujours à la ligne 7. Si tel est le cas alors, il n'y a pas de soucis.
Si ton problème est résolu, n'oublie pas de changer la balise de titre de ton premier message
[..] pour [R]
Merci.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
plus belle vue du haut de son Pouf = )
Re: [..] Comparaison fichier texte
Oui, effectivement, c'est le cas...
Merci !
Merci !

