PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Rechercher une chaîne dans un fichier
Rechercher une chaîne dans un fichier
Iniciado por Hacyrak, jan., 27 2020 11:41 AM - 3 respostas
Publicado em janeiro, 27 2020 - 11:41 AM
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 em janeiro, 27 2020 - 12:13 PM
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
Membro registado
3.889 mensagems
Popularité : +227 (347 votes)
Publicado em janeiro, 27 2020 - 12:15 PM
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
Membro registado
52 mensagems
Popularité : +3 (3 votes)
Publicado em janeiro, 27 2020 - 12:40 PM
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
Mensagem modificada, janeiro, 27 2020 - 12:58 PM