Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Разрабатываемая программа на VB6 “заглючила”. Как устранить?

8.1K
11 октября 2006 года
patq
27 / / 21.07.2005
Программа написана на VB6, находится в стадии отладки.
В процессе работы она считывает файлы, анализирует их и, по результатам анализа, выдает замечания. Файлы тестовые, кол-во выводимых замечаний, для разных режимов анализа, известно.

Программа на выходе и тут, работая с программой, заметил, что она стала неадекватно себя вести.
Откорректируешь что-то, запустишь программу без точек остановок, выдает не то кол-во замечаний. Ничего не меняя, пройдешь программу с точками останова – и все нормализуется: начинает работать как задумано (и без точек останова).
Компоновка всей программы ничего не меняет.

Кто знает, встречался с подобным, посоветуйте с этим бороться.
И есть ли программы, проверяющие программы, разрабатываемые на VB6, на внутреннюю вшивость или аналогичные ситуации.
403
11 октября 2006 года
ace lighting
411 / / 05.05.2006
А код точно правильный? Если да, то, наверно, придётся переустановить бейсик!
8.1K
12 октября 2006 года
patq
27 / / 21.07.2005
[QUOTE=ace lighting]А код точно правильный? Если да, то, наверно, придётся переустановить бейсик![/QUOTE]
"Код" - что под этим подразумевается
403
12 октября 2006 года
ace lighting
411 / / 05.05.2006
[QUOTE=patq]"Код" - что под этим подразумевается[/QUOTE]
Код - это текст самой программы. У меня тоже много раз глючил бейсик и всегда дело было в моём коде.
8.1K
12 октября 2006 года
patq
27 / / 21.07.2005
[QUOTE=ace lighting]Код - это текст самой программы. У меня тоже много раз глючил бейсик и всегда дело было в моём коде.[/QUOTE]
Как ни тяжело это сознавать, но это так.
Но все равно хочется облегчить себе жизнь.
В одной Вашей теме, в которой я принимал участие (http://forum.codenet.ru/showthread.php?t=29101&highlight=Basic+%EF%E5%F0%E5%EC%E5%ED%ED%FB%E5 ), посвященной отказу компилятора, компилировать строку с двумя переменными, Вами был упомянут Анализатор, на котором была проверена программа.
Вы не могли бы пояснить, что это за зверь, и с чем его едят?

С уважением!
648
13 октября 2006 года
Tiraspolsky
220 / / 23.07.2003
Я полагаю, что с компилятором все нормально. А собака зарыта в том, что программа по разному работает когда есть точки останова и когда их нет. Т.е. в коде должны в нужных местах присутствовать операторы DoEvents или циклы DO ... LOOP, WHILE ... WEND, в которых происходит ожидание завершения определенных процедур, занимающих приличное время. Фокус в том, чтобы правильно определить критерий выхода из цикла.
403
13 октября 2006 года
ace lighting
411 / / 05.05.2006
[QUOTE=patq]Как ни тяжело это сознавать, но это так.
Но все равно хочется облегчить себе жизнь.
В одной Вашей теме, в которой я принимал участие (http://forum.codenet.ru/showthread.php?t=29101&highlight=Basic+%EF%E5%F0%E5%EC%E5%ED%ED%FB%E5 ), посвященной отказу компилятора, компилировать строку с двумя переменными, Вами был упомянут Анализатор, на котором была проверена программа.
Вы не могли бы пояснить, что это за зверь, и с чем его едят?

С уважением![/QUOTE]

Это прога называется Aivosto Projekt Analizer.
403
13 октября 2006 года
ace lighting
411 / / 05.05.2006
Эта прога сама анализирует твой проект и, как правило всегда, найдёт там кучу недочётов.
8.1K
14 октября 2006 года
patq
27 / / 21.07.2005
[QUOTE=Tiraspolsky]Я полагаю, что с компилятором все нормально. А собака зарыта в том, что программа по разному работает когда есть точки останова и когда их нет. Т.е. в коде должны в нужных местах присутствовать операторы DoEvents или циклы DO ... LOOP, WHILE ... WEND, в которых происходит ожидание завершения определенных процедур, занимающих приличное время. Фокус в том, чтобы правильно определить критерий выхода из цикла.[/QUOTE]
Назначение DoEvents: показать какой объект программа обрабатывает в данный момент времени. Команда используется:
- до открытия конкретного объекта
код программы:
For i = 1 To LastObject
NameForm. NameOb = MasNameOb (i).NameOb) ‘очередной объект
DoEvents ‘выводим наименованиея объект ана дисплей(методом “ТЫКА” определил, что она позволяет вывести введенное на экран дисплея)
……..’добираемся до объекта
'откроем форму для просмотра
AccDoCmd.OpenForm MasNameOb (i).NameOb), acDesign, , , , acHidden
‘ AccDoCmd – это указатель на приложениеAccess. DoCmd
next i
- после окончания обработки объектов одного типа.
- перед началом очередного этапа работы программы

Сколько не встечался с "Глючанием", его причины всегда настолько просты, что на них даже не подумаешь. Обратился на форум в надежде, что кто-то уже не только наступил на эти грабли, но и НАШЕЛ их.
8.1K
14 октября 2006 года
patq
27 / / 21.07.2005
[QUOTE=ace lighting]Эта прога сама анализирует твой проект и, как правило всегда, найдёт там кучу недочётов.[/QUOTE]Спасибо, найду и воспользуюсь
648
16 октября 2006 года
Tiraspolsky
220 / / 23.07.2003
<Назначение DoEvents: показать какой объект программа обрабатывает в данный момент времени.>

Это - заблуждение. Назначение DoEvents: предоставить ресурсы системе с тем чтобы процессор выполнил задачи, стоящие в очереди на исполнение.
7
17 октября 2006 года
@pixo $oft
3.4K / / 20.09.2006
[QUOTE=Tiraspolsky]Назначение DoEvents: предоставить ресурсы системе с тем чтобы процессор выполнил задачи, стоящие в очереди на исполнение[/QUOTE]
Правильное замечание.Можно использовать комбинацию TranslateMessage/DispatchMessage
8.1K
21 октября 2006 года
patq
27 / / 21.07.2005
[QUOTE=@pixo $oft]Правильное замечание.Можно использовать комбинацию TranslateMessage/DispatchMessage[/QUOTE]Прочитал и понял, что сейчас назначение DoEvents изменилось.
Сейчас DoEvents обеспечивает во время работы программы, выполнение программой/(операционной системой) следующих операций:
- вывод на дисплей обновлений в полях форму программы;
- отработка перемещение/Click мыши на форме программы;
- и если был Click мыши на объекте кнопка программы:
-- приостановка работы программы.
-- запуск кода этой кнопки изменяющей свойства Visible фреймов формы.
-- вывод на дисплей этих изменений
-- продолжить работу программы с места приостановки.

Команда DoEvents была найдена методом “ТЫКА”: раз обеспечивает требуемое, то и ладно. И сейчас, раз обеспечивает выполнение требуемого, не заменяется
Please, подскажите правильно ли используется команда DoEvents или есть другие команды для этих операций

С уважением
7
21 октября 2006 года
@pixo $oft
3.4K / / 20.09.2006
В принципе,ты правильно понял.DoEbents используется,чтобы донести до программы,что ей пришли какие-то сообщения(как то:двинулась мышь,нажалась кнопка,окно давно не перерисовывалось и т.д.).Короче,DoEbents используется для отвиса программы,чтобы она отвечала.Если хочешь,дам пример со связкой Translate/DispatchMessage
8.1K
22 октября 2006 года
patq
27 / / 21.07.2005
[QUOTE=@pixo $oft]В принципе,ты правильно понял. .... Короче,DoEbents используется для отвиса программы,чтобы она отвечала.Если хочешь,дам пример со связкой Translate/DispatchMessage[/QUOTE]Если правильно в принципе, то пример с другими командами необходим.
Желательно с комментариями. Как его получить?
С уважением!
7
24 октября 2006 года
@pixo $oft
3.4K / / 20.09.2006
Какие примеры?С Dispatch/Translate'ом?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог