Page 1 sur 1
Utilisation de ReplaceString BUG ou pas BUG ??
Publié : mar. 15/nov./2011 16:19
par MLD
Bonjour a tous
Un petit code vaut mieux qu'une grande explication
Code : Tout sélectionner
Procedure.s verifdat(cdat$)
If Len(cdat$) <> 10
Debug "erreur"
Else
;If Mid(cdat$,3,1) <> "-" :a$ = Mid(cdat$,3,1): ReplaceString(cdat$,a$, "-", #PB_String_InPlace, 1):EndIf
If Mid(cdat$,3,1) <> "-" :ReplaceString(cdat$,Mid(cdat$,3,1), "-", #PB_String_InPlace, 1):EndIf
:Pourquoi cette ligne ne fonctionne pas,alors que celle du dessus fonctionne parfaitement? l'extraction d'une ou plusieurs lettres sont elles impossible dans ReplaceString? EndIf
Debug cdat$
EndProcedure
verifdat("12/12/2012")
End

Re: Utilisation de ReplaceString BUG ou pas BUG ??
Publié : mar. 15/nov./2011 16:29
par Ar-S
Tes 2 méthodes fonctionnent pourtant bien.
Code : Tout sélectionner
Procedure.s verifdat(cdat$)
If Len(cdat$) <> 10
Debug "erreur date"
Else
cdat2$ = cdat$
If Mid(cdat$,3,1) <> "-"
a$ = Mid(cdat$,3,1)
Debug "a$ = " + a$
Debug "Mid(cdat2$,3,1 : ) = " + Mid(cdat2$,3,1)
ReplaceString(cdat2$,Mid(cdat2$,3,1), "-", #PB_String_InPlace, 1)
ReplaceString(cdat$,a$, "-", #PB_String_InPlace, 1)
EndIf
EndIf
Debug "Methode 1 :" + cdat$
Debug "Methode 2 :" + cdat2$
EndProcedure
verifdat("12/12/2012")
End
Re: Utilisation de ReplaceString BUG ou pas BUG ??
Publié : mer. 16/nov./2011 8:35
par MLD
Salut Ar-S
Au passage Bon anniversaire.
Bien, j'ai fait quelques tests. En fait la deuxieme ligne déclenche mon AV(BitDefender), qui lui même bloque le compil. Pourquoi???
Merci pour le test
Bonne journée
Michel
Re: Utilisation de ReplaceString BUG ou pas BUG ??
Publié : mer. 16/nov./2011 9:26
par Ar-S
MLD a écrit :
Au passage Bon anniversaire.
Merci
MLD a écrit :
Bien, j'ai fait quelques tests. En fait la deuxieme ligne déclenche mon AV(BitDefender), qui lui même bloque le compil. Pourquoi???
Parce que c'est de la daube ?
Le pourquoi j'en sais rien, c'est peut-être une analyse heuristique à la con qu'il faudrait que tu bloques.
Au pire, faudrait mettre ton dossier de PB dans la liste blanche de ton AV.
Re: Utilisation de ReplaceString BUG ou pas BUG ??
Publié : mer. 16/nov./2011 9:55
par Ar-S
L'utilisation des regex peut être sympa aussi pour ce genre d'opération. De plus il te permet d'extraire une date dans un texte complexe.
Code : Tout sélectionner
;Extracteur de date
;utilisant les expressions régulières
; Par Ar-S / Nov 2011 - P.B 4.60
; Extrait date sous forme jj-mm-aaaa d'après une date dans sous la forme jj/mm/aaaa dans un string
Global t$="nous sommes le 16/11/2011 et on se caille les miches" ; le string contenant la date
Global NbrTrouve
Global Dim result$(0)
Procedure.s VerifDat(t$)
expr$ = "([0-9]{2}/){2}[0-9]{4}"
CreateRegularExpression(0,expr$)
NbrTrouve = ExtractRegularExpression(0, t$ , result$()) ;Extrait les résultat dans result()
If NbrTrouve>0
For k = 0 To NbrTrouve-1
LaDate$ = result$(k)+Chr(10)+Chr(13)
LaDate$ = ReplaceString(LaDate$,"/","-")
Next
ProcedureReturn LaDate$
FreeRegularExpression(0)
Else
FreeRegularExpression(0)
ProcedureReturn "0"
EndIf
EndProcedure
Debug VerifDat(t$)
End
Re: Utilisation de ReplaceString BUG ou pas BUG ??
Publié : mer. 16/nov./2011 11:01
par MLD
Merci Ar-S
Mais en fait j'ai pris une date que pour l'exemple.
Re: Utilisation de ReplaceString BUG ou pas BUG ??
Publié : mer. 16/nov./2011 11:34
par Ar-S
Ah merde

Bon bah tant pis je l'ai fait autant la poster (je l'ajouterai au topic des exp régulières).
la v2 permettant l'extraction de la date avec choix du séparateur à chercher.
Code : Tout sélectionner
;Extracteur de date v2
;utilisant les expressions régulières
; Par Ar-S / Nov 2011 - P.B 4.60
; Extrait date sous forme jj-mm-aaaa (plus un espace) d'après une date dans sous la forme jjSEPARATEURmmSEPARATEURaaaa dans un string
t$ = "nous sommes le 16/11/2011 et on se caille les miches. Hier c'était pareil, le 15.11.2011 à 11h c'était encore givré" ; le string contenant la date
t$ + "la date suivante ne sera pas prise en compte : 17 11 2012 car le séparateur espace n'est pas indiqué"
Global Dim result$(0)
Procedure.s ExtractDate(t$,ARS_separateur$)
; Ar-S
; Extraction de date v2
Final$ = ""
; v2 permetant de trouver une date utilisant les separateurs "." "/" et "-"
expr$ = "([0-9]{2}+[" + ARS_separateur$ + "]){2}[0-9]{4}"
CreateRegularExpression(0,expr$)
NbrTrouve = ExtractRegularExpression(0, t$ , result$()) ;Extrait les résultat dans result()
If NbrTrouve>0
For k = 0 To NbrTrouve-1
LaDate$ = result$(k)
Aremplacer$ = Mid(LaDate$,3,1)
; Ensuite la date est convertie ci besoin au format jj-mm-aaaa
LaDate$ = ReplaceString(LaDate$,Aremplacer$,"-")
If NbrTrouve = 1
Final$ = LaDate$
Else
Final$ + " " + LaDate$
EndIf
Next
; On supprime le 1er espace de gauche s'il y en a
Final$ = LTrim(Final$)
FreeRegularExpression(0)
ProcedureReturn Final$
Else
FreeRegularExpression(0)
ProcedureReturn "Pas de date !"
EndIf
EndProcedure
Debug "test 1"
Debug ExtractDate(t$,"/.-") ; ici 3 séparateurs de recherchés
Debug "test 2"
Debug ExtractDate(t$," ") ; ici seulement le séparateur "espace"
End
Re: Utilisation de ReplaceString BUG ou pas BUG ??
Publié : mer. 16/nov./2011 11:59
par MLD
Ar-S
Désolé
Mais c'est bon pour le topic
Michel
Re: Utilisation de ReplaceString BUG ou pas BUG ??
Publié : mer. 16/nov./2011 12:45
par Ar-S
Vivi pas de soucis, mais comme je l'avais fait.