PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Rechercher une chaîne dans un fichier
Rechercher une chaîne dans un fichier
Iniciado por cecile.aliaga, 27,ene. 2020 11:41 - 3 respuestas
Publicado el 27,enero 2020 - 11:41
Bonjour,
Je cherche à trouver une chaîne particulière dans un fichier.
Ma chaîne dans le fichier est construit comme : date-heure-mot clé
La date est au format JJ/MM/AA
L'heure au format HH:MM:SS

sDate = DateVersChaîne(gsDate,"JJ/MM/AA")
sHeure = HeureVersChaîne(gsHeure,"HH:MM:")
sTexte est une chaîne = fChargeBuffer(fRepEnCours()+"fichier.txt")
nPosi est un entier = Position(sTexte ,sDate+"-"+sHeure+"00"+"-Toto")
nLigne est un entier = PositionVersLigne(sTexte ,nPosi)


Ici je récupère bien la ligne correspondante.

Le problème est donc que les secondes peuvent être variable (ici elles sont entrées en dure "00").
Lors de ma recherche je n'aurais pas les secondes exactes.

J'ai l'impression que Position n'accepte pas une expression régulière.
nPosi est un entier = Position(sTexte ,sDate+"-"+sHeure+"[0-9]{2}"+"-Toto")


Comment puis-je récupérer ma ligne sans connaitre les secondes ?
Merci
Publicado el 27,enero 2020 - 12:13
Bonjour,
J'ai trouvé au lieu d'essayer de trouver la chaine en une seule fois, je la récupère en 2 fois
D'abord un position sur la date heure puis un position sur le mot clé

Merci
Miembro registrado
4.362 mensajes
Publicado el 27,enero 2020 - 12:15
Bonjour,
A première vue, il va falloir faire ta recherche en 2 temps :
Dans un premier temps sur le GDH sans les sec, dans un 2° temps sur la clé dans le résultat de la première recherche

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
52 mensajes
Publicado el 27,enero 2020 - 12:40
2 = nombre de caractères à sauter
1 = position initiale à rechercher

Position est numérique = WildCard_Position(sTexte, sDate+"-"+sHeure , 2, "-Toto", 1)


Procedure WildCard_Position(OTexto, STexto1, nJump, STExto2, NPos)
TANTQUE NPos>0
NPos=Position(OTexto, STexto1, NPos)
SI NPos>0 ALORS
SI Milieu(OTexto, NPos+Taille(STexto1)+nJump,Taille(STExto2))=STExto2 THEN
RENVOYER NPos
SINON
NPos++
FIN
FIN
FIN
RENVOYER 0
Mensaje modificado, 27,enero 2020 - 12:58