Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Странно / 22 сообщений из 22, страница 1 из 1
05.05.2009, 15:04
    #35969563
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
Здравствуйте...Вот с какой странностью столкнулся...Пишу прогу в Microsoft Visual Basic...И если я проверяю её выполнение по шагам(нажимаю F8),то всё работает нормально, а если сразу компиллю,то действие,которое в первом случае выполнялось,не выполняется...
От чего такое может быть?
...
Рейтинг: 0 / 0
05.05.2009, 15:06
    #35969565
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
Может быть чудо.
Без кода тут как, в догадках теряться.
...
Рейтинг: 0 / 0
05.05.2009, 15:07
    #35969571
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
и какая ошибка пр этом?
1) уберите ON ERROR RESUME NEXT
2) вставьте в заголовке модулей/классов Option Explicit
3) добавьте обработку ошибок в свои процедуры/ф-ии
4) добавьте логирование ошибок в обработчики
5) если уж совсем плохо, пронумеруйте код процедур/ф-ий и юзайте Erl в обработчике
...
Рейтинг: 0 / 0
05.05.2009, 15:16
    #35969610
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
fortibransaМожет быть чудо.
Без кода тут как, в догадках теряться.
да кода слишком много чтоб приводить...там при входящем звонке выполняется событие phoneSession_OnPhoneCallAdded и в одном случае номер телефона определяется,а в другом он равен null
...
Рейтинг: 0 / 0
05.05.2009, 15:17
    #35969613
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
а мы телепаты?
...
Рейтинг: 0 / 0
05.05.2009, 15:19
    #35969623
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
нет,думал может просто такое бывает в данной среде разработки))
какой нить косячный компиллятор или ещё что-то)
...
Рейтинг: 0 / 0
05.05.2009, 15:31
    #35969687
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub phoneSession_OnPhoneCallAdded(ByVal phoneCall As InfraCallCenterClientFacade2.IPhoneCall, ByVal callID As Long, ByVal RequestID As String, ByVal requestName As String, ByVal requestAddress As String, ByVal CustomerID As String, ByVal queueID As String, ByVal queueName As String, ByVal state As InfraCallCenterClientFacade2.PHONE_CALL_STATE, ByVal state_duration As Long, ByVal connected_duration As Long, ByVal parties_count As Long, ByVal parties_name As String, ByVal parties_numbers As String, ByVal call_type As InfraCallCenterClientFacade2.PHONE_CALL_TYPE, ByVal operations As Long)
    If Not IsNull(phoneCall.ConnectedNumber) Then
        writeNum phoneCall
        MsgBox Len(phoneCall.ConnectedNumber)
    End If
End Sub
Вот так выглядит событие...когда жму F8 то Len(phoneCall.ConnectedNumber) = 3, а когда просто компиллю то Len(phoneCall.ConnectedNumber) = 0 и номер телефона не получаю
...
Рейтинг: 0 / 0
05.05.2009, 15:35
    #35969700
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
Код: plaintext
1.
2.
3.
4.
If Not phoneCall Is Nothing Then
'здесь ваш код
Else
   Msgbox ''нет ничего!"
End if
...
Рейтинг: 0 / 0
05.05.2009, 15:37
    #35969715
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
ага и так делал...и phoneCall получается not nothing
...
Рейтинг: 0 / 0
05.05.2009, 15:40
    #35969733
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
так выведите содержимое этого объекта в логфайл (пробегитесь по свойствам) и проанализируйте его состояние. у меня такое ощущение, что вы используете встроенную среду VBA для Avaya, а не VB6.0
...
Рейтинг: 0 / 0
05.05.2009, 16:07
    #35969825
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
Может и не в тему, но может даст одно из направлений поиска причины.
Возможно дело в параллельном исполнении. Приведу пример взаимодействия Excel и VBA.
Вот код на VBA:
Код: plaintext
1.
ActiveWindow.View = xlPageBreakPreview
RowUpN = ActiveSheet.HPageBreaks.Count
Первый оператор переводит Excel в режим отображения Разметка страниц, второй возвращает число разделителей страниц. При выполнении по шагам все ОК. При работе в автомате можно получить любое число страниц. Т.е. первый оператор дает команду Excel расставить страницы, а второй тут же запрашивает количество и получает то, которое успел сделать первый. Как вариант, использование смутного оператора DoEvents, а в некоторых ситуациях и вовсе установка задержки, хотя судя по вашей задаче, задержка тут не подходит.
Код: plaintext
1.
2.
ActiveWindow.View = xlPageBreakPreview
DoEvents
RowUpN = ActiveSheet.HPageBreaks.Count
...
Рейтинг: 0 / 0
06.05.2009, 07:01
    #35970859
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
doevents и правда ничего не дало)) Зато заметил, что если ставлю msgbox перед writenum , то всё выполняется, а если не ставлю то нет))ерунда какая-то)
...
Рейтинг: 0 / 0
06.05.2009, 07:15
    #35970865
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
хых...
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub phoneSession_OnPhoneCallAdded(ByVal phoneCall As InfraCallCenterClientFacade2.IPhoneCall, ByVal callID As Long, ByVal RequestID As String, ByVal requestName As String, ByVal requestAddress As String, ByVal CustomerID As String, ByVal queueID As String, ByVal queueName As String, ByVal state As InfraCallCenterClientFacade2.PHONE_CALL_STATE, ByVal state_duration As Long, ByVal connected_duration As Long, ByVal parties_count As Long, ByVal parties_name As String, ByVal parties_numbers As String, ByVal call_type As InfraCallCenterClientFacade2.PHONE_CALL_TYPE, ByVal operations As Long)
If Not IsNull(phoneCall.ConnectedNumber) Then
    MsgBox Len(phoneCall.ConnectedNumber)'здесь  0 
    writeNum phoneCall
End If
End Sub
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Private Sub writeNum(ByVal phoneCall As InfraCallCenterClientFacade2.IPhoneCall)
Dim i, num, num1 As String
Dim str, s As String
Dim dDate As Date

   num = phoneCall.ConnectedNumber
    MsgBox Len(num) 'а здесь  3 

If (Not IsNull(num)) And (Len(num) >  0 ) Then
    str = num
    fileCreate nout, str
    dDate = Format(Date, "mm/dd/yyyy hh:mm:ss")
    str = CStr(Date) + " " + CStr(Time) + " " + num
    fileCreate nlog, str
    num = Null
End If

End Sub
...
Рейтинг: 0 / 0
06.05.2009, 07:18
    #35970867
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
а если убираю MsgBox Len(phoneCall.ConnectedNumber), то MsgBox Len(num) в writeNum выдаёт 0...
...
Рейтинг: 0 / 0
06.05.2009, 08:36
    #35970922
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
А какого типа phoneCall.ConnectedNumber?
Если Variant, то MsgBox Len(phoneCall.ConnectedNumber) может возвращать не то, что предполагается.

Еще пара замечаний по тексту процедур:
- объявление Dim i, num, num1 As String говорит о том, что i и num будут типа Variant
- str зарезервированное слово, не надо его использовать как переменную.
...
Рейтинг: 0 / 0
06.05.2009, 08:44
    #35970929
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
connectedNumber типа WideString...

тут какой то глюк в событии...номер присваивается только после приостановки процесса...
Можно ли как то программно вызывать msgbox и тут же его закрывать или есть какие то другие способы приостановки? не хочется использовать треды,да и думаю не помогут
...
Рейтинг: 0 / 0
06.05.2009, 09:05
    #35970964
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
Я с VBA в EXCEL'е работаю, поэтому про WideString не знаю, может в VB такой тип есть.
Еще один нюанс, в одном случае идет
Код: plaintext
MsgBox Len(phoneCall.ConnectedNumber)
в другом
Код: plaintext
1.
   num = phoneCall.ConnectedNumber
   MsgBox Len(num)
на всякий случай надо бы однотипно выводить, мало ли какие преобразования при присвоении происходят.
...
Рейтинг: 0 / 0
06.05.2009, 09:08
    #35970968
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
да я пробовал однотипно)) там фишка в то, что в событии перед writenum выводишь вообще любую msgbox с любым текстом и тогда всё работает...Но это фигово,ибо требует от пользователя нажимать на ОК и кроме того при этом вычисляется не время звонка,а время нажатия пользователем кнопки ОК
...
Рейтинг: 0 / 0
06.05.2009, 09:33
    #35971012
DENIS_CHEL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
EmilRegisтут какой то глюк в событии...номер присваивается только после приостановки процесса...
Можно ли как то программно вызывать msgbox и тут же его закрывать или есть какие то другие способы приостановки? не хочется использовать треды,да и думаю не помогут
Прочитал по диагонали, и на VB уже давно, не писал, но что если за места MsgBox запускать таймер (т.е. организовать задержку)?
...
Рейтинг: 0 / 0
06.05.2009, 09:41
    #35971027
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
ха...вроде помогло
...
Рейтинг: 0 / 0
06.05.2009, 09:57
    #35971063
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
может сделать такой вызов, задержка то думаю исказит время
Код: plaintext
1.
If (Not IsNull(phoneCall.ConnectedNumber)) And (Len(phoneCall.ConnectedNumber) >  0 ) Then
    writeNum phoneCall
...
Рейтинг: 0 / 0
06.05.2009, 10:16
    #35971120
EmilRegis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странно
я сделал задержку в 2 секунды...думаю это не принципиально)))

а эту проверку просто не пройдёт и всё...
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Странно / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]