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
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
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.
;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
;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