Моя функция используется для замены апострофа, то есть ' в любом из свойств объекта. Функция использует библиотеку TypeLib для достижения этой цели, обернув через всех членов объекта, т.е.Для каждого не инициализируется
Public Function EscapeWildCards(ByRef obj As Object, _
Optional ByVal bEscape As Boolean = True) As Boolean
On Error GoTo EscapeWildCards_Err
Dim tTLI As TLIApplication
Dim tMem As MemberInfo
Dim tInvoke As InvokeKinds
Dim tName As String 'used as lower case....
Dim tString As String
1 Set tTLI = New TLIApplication
'... if True, we are setting else we are getting
2 tInvoke = IIf(bEscape, VbGet, VbLet)
3 If obj Is Nothing Then Exit Function
4 For Each tMem In TLI.InterfaceInfoFromObject(obj).Members
5 'tName = LCase$(tMem.Name)
6 If tMem.InvokeKind = tInvoke Then 'And tMem.Parameters.Count = 0
'could be object/something else that can't handle
On Error Resume Next
' get the oobject property value
7 tString = CallByName(obj, tMem.Name, VbGet)
8 If tInvoke = VbGet Then
9 If IndexOf(tString, "'") > 0 Then
10 tString = Replace$(tString, "'", "`")
11 CallByName obj, tMem.Name, VbLet, tString
End If
Else
'... set data replacing aposthrophe
12 If IndexOf(tString, "'") > 0 Then
13 tString = Replace$(tString, "`", "'")
14 CallByName obj, tMem.Name, VbLet, tString
End If
End If
'Debug.Print tName, " = ", tString
On Error GoTo EscapeWildCards_Err
End If
Next
Exit Function
EscapeWildCards_Err:
ErrReport Err.Description, "modCommon.EscapeWildCards", Erl
Resume Next
End Function
Когда я проверить код в IDE, я не получаю никаких ошибок. Но когда я компилирую и тестирую как EXE, я получаю следующие ошибки:
Object doesn't support this action. LineNo 4
Object variable or With block variable not set. LineNo 5
Object variable or With block variable not set. LineNo 6
For loop not initialized. LineNo 14
Почему я не получаю ошибки, когда приложение работает в IDE, но я при компиляции? Может ли кто-нибудь указать мне, что я делаю неправильно?
1. Как вы добираетесь до строки № 5, если у вас уже есть ошибка в строке # 4? 'Продолжить дальше'? Но тогда только ошибка в строке №4 представляет интерес. 2. Вероятно, в ваших интересах разместить полный фрагмент кода (подсказка: в вашем фрагменте нет метки 'EscapeWildCards_Err'). 3. Вероятно, в ваших интересах объяснить, какие ссылки должны быть добавлены в проект. –
привет, я скорректировал код. вы можете видеть, что я прокомментировал некоторые фрагменты кода. – Smith
Просто предположите, но попробуйте 'Dim tTLI As TLI.InterfaceInfo' вместо TLIApplication. – jac