Bonjour,
Je rencontre visiblement un problème lorsque j'évalue system.regexp(pattern:="...").match(sourceString:="...") dans une instruction conditionnelle.
Même si match() renvoie True, If system.regexp(...).match(...) Then se comporte comme si c'était évalué à False.
Si j'évalue un Dim flag As boolean: flag = system.regexp(...).match(...) et j'évalue flag dans l'instruction conditionnelle, tout passe parfaitement bien !
Je ne crois pas que cela soit problématique avec les versions 32 bit.
Pour infos, j'avais rencontré un problème similaire sous CATIA (logiciel de CAO), mais ceci était dû à une différence d'encodage des boolean entre l'API et VBA (unsigned char vs. short) et a priori indépendamment des versions 32 et 64 bits.
Module system partiel.
Classe clsRegExp partielle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ' Public Function regexp(ByVal pattern As String, Optional ByVal ignoreCase As Boolean = False) As clsRegExp Set regexp = New clsRegExp regexp.initialize pattern:=pattern, ignoreCase:=ignoreCase End Function
Avez-vous déjà rencontré un problème similaire ? Je trouve ça assez chiant devoir tout "caster" explicitement en boolean avant leur évaluation...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 Private m_regexp As VBScript_RegExp_55.regexp ' Private Sub Class_Initialize() Set m_regexp = New VBScript_RegExp_55.regexp End Sub ' Private Sub Class_Terminate() Set m_regexp = Nothing End Sub ' Public Sub initialize(ByVal pattern As String, ByVal ignoreCase As Boolean) m_regexp.pattern = pattern m_regexp.ignoreCase = ignoreCase End Sub ' Public Function match(ByVal sourceString As String) As Boolean match = m_regexp.test(sourceString:=sourceString) End Function
Merci par avance !
Partager