пару слов о 10 версии

Раздел посвящен программированию с использованием Power Basic.
volo
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 10.12.2004 (Пт) 11:18
Откуда: Soviet Union

пару слов о 10 версии

Сообщение volo » 02.07.2012 (Пн) 10:25

Понадобился один старый исходник по DirectShow, забирающий кадры из потока, на 9 работал нормально, на 9 под новые API 119 тоже нормально. С 10.02 да и тоже самое с 10.03 появились "затыки" с полным подвисанием процесса - подвисание приложения, затыкание процесса происходило не сразу, судя по всему проблемы связаны с новой реализацией обработкой ТHREAD процедур, и возможно новой реализацией DIALOG DOEVENTS. Еще как-то странно на подвисание действует #STACK (это все для 10-ки). Решить проблему с подвисанием для 10-ки удалось с заменой в отдельных местах DIALOG DOEVENTS на SLEEP (или добавлением), увеличение значений последних, и использование #STACK "с размером по умолчанию". Но не уверен что данная проблема не вылезет через некоторое время на 10. Жаль убитого времени просто. С 9-кой все работает как часы.

Понимаю, что данная проблема может быть редкой, но было бы интересно услышать, может кто-то - подобный глюк уже видел.

DarkMachine
Новичок
Новичок
Аватара пользователя
 
Сообщения: 47
Зарегистрирован: 24.02.2012 (Пт) 15:58

Re: пару слов о 10 версии

Сообщение DarkMachine » 06.07.2012 (Пт) 23:43

Да, обидно что у тебя так выходит. У меня таких проб. пока нет. Может быть заменить DIALOG DOEVENTS на АПИ команды?

volo
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 10.12.2004 (Пт) 11:18
Откуда: Soviet Union

Re: пару слов о 10 версии

Сообщение volo » 08.07.2012 (Вс) 11:36

DarkMachine писал(а):Да, обидно что у тебя так выходит. У меня таких проб. пока нет. Может быть заменить DIALOG DOEVENTS на АПИ команды?



Думаю проблема пошла от изменения реализации SUB и FUNCTION, путем добавления THREADSAFE и другого в 10 версии.
Я вначале пытался использовать новую FASTPROC для отдельных моментов, скорость особо не возросла. "Затыка" появляется когда идет обращение параллельно к процедуре считывания кадра, - видимо где-то в 10-ке не хватает временной задержки при обращении. Или может быть стек процедуры или функции не успевает очистится. Причем например 5-10 таких обращений проходит нормально, а потом полный подвис (это на 7-ке). Такая - неприятная, не сразу появляющаяся ошибка. В 9-ке работает все очень хорошо. Понимаю - возможно еще может быть глюк кодека при параллельном обращении в 10 ке, но в 9 -ке все нормально.

Еще заметил при разных вариантах #STACK > 1MB выскакивают различные варианты ошибок типа С0000005 и др., видимо что-то не успевает, и пытается писать в несуществующую память.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 2982
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Москва

Re: пару слов о 10 версии

Сообщение jangle » 09.07.2012 (Пн) 12:57

Похоже 10 версию делала другая команда разработчиков, нежели предыдущие версии.

volo
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 10.12.2004 (Пт) 11:18
Откуда: Soviet Union

Re: пару слов о 10 версии

Сообщение volo » 20.07.2012 (Пт) 17:42

jangle писал(а):Похоже 10 версию делала другая команда разработчиков, нежели предыдущие версии.


Скорее всего да. Вот еще один небольшой прикол, кто не знает, - может убить при отладке некоторое время, это для 10 ки,

65535 это эквивалент 0xFFFF или &hFFFF

Код: Выделить всё
#COMPILE EXE
#DIM ALL

FUNCTION PBMAIN () AS LONG

    ? STR$( 1/65535) & $CR & STR$( 1/65535&) & $CR & STR$(1/&hFFFF) & $CR & STR$(1/&HFFFF&)

END FUNCTION
               


результат:
1.52590218966964E-5
1.52590218966964E-5
-1
1.52590218966964E-5

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2751
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 20.07.2012 (Пт) 20:04

Сказал бы ещё, что было до десятки... Интересно ведь :)

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1888
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: пару слов о 10 версии

Сообщение ger_kar » 25.11.2012 (Вс) 21:03

Да, каким боком -1 получилось вообще непонятно.
Бороться и искать, найти и перепрятать

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2751
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 25.11.2012 (Вс) 22:23

ger_kar писал(а):Да, каким боком -1 получилось вообще непонятно.

Делится 1 на int16 со значением -1 :)

volo
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 10.12.2004 (Пт) 11:18
Откуда: Soviet Union

Re:

Сообщение volo » 12.02.2013 (Вт) 14:04

Qwertiy писал(а):Сказал бы ещё, что было до десятки... Интересно ведь :)

в продолжение об проблемах и методах их обхода в версии 10. Версии 7-8-9 данных проблем не имеют.
диагностика таких глюков может занять много времени. Вот ниже кратко:

1. для 10.00 10.02 и 10.03 ранее уже описывалась проблема с мертвым зависанием, чаще всего она возникает при вызове из основного Callback Modal - вызова или создания какого нибудь окна - чаще всего например окна выбора файла для загрузки или сохранения. Возникает на 3, 4...N раз.
Нестабильное появление. Скорее всего возникает при переполнении внутреннего стека, и глюком dialog-doevents.

Решение - использовать для вызова\создания доп. диалогов типа "Сохранить как" из callback функции - Thread Create

2. Верс. 10 - при вводе русского текста в TextBox (на ХP работает нормально) в некоторых версиях WIn7 печатаются "кракозяблы", англ. текст - нормально
глюк - юникода, при копировании русского текста все нормально.

Решение добавить #OPTION ANSI

3. Для версии 10.02 глюк возникает с жестким GPF при вызове (глюк на Win7 проявился, на Хр не тестировал)
MENU SET TEXT hMenu, BYCMD position&, txt$

глюк связан видимо с введением юникода поумолчанию
глюк проявляется при установленной опции #OPTION ANSI

Решение - убрать #OPTION ANSI

4. Глюк в принципе с проявлениями во все версиях #С0000005 и подобные, GPF появляется при загрузке или сохранении изображений больших размеров при использовании GDI+. Например размер 7130х4912 pix. То что поменьше работает без проблем. Проявляется нестабильно. Возможно связано со стеком.

5. Были еще глюки с FastProc, разбираться детально времени не было - проблема решилась заменой Fastproc на SUB, как и было в 9 версии (глюк касался в основном ASM кода)

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 2982
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Москва

Re: пару слов о 10 версии

Сообщение jangle » 13.07.2013 (Сб) 19:40

После пере компиляции довольно большой программы из 9.05 в 10 версию обнаружил что в десятке она работает неправильно.
Где-то в 10 компиляторе есть баги. :(
Причем баги самые мерзкие. Там много вычислений. В 10 версии программа выдает неверные математические результаты!
Уже из-за этого на этой версии можно ставить крест.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1888
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: пару слов о 10 версии

Сообщение ger_kar » 13.07.2013 (Сб) 19:58

jangle писал(а):Причем баги самые мерзкие. Там много вычислений. В 10 версии программа выдает неверные математические результаты!
А какого характера вычисления? Арифметические или может функции какие то неправильно рассчитывает?
Бороться и искать, найти и перепрятать

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 2982
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Москва

Re: пару слов о 10 версии

Сообщение jangle » 13.07.2013 (Сб) 20:01

ger_kar писал(а):А какого характера вычисления? Арифметические или может функции какие то неправильно рассчитывает?


Пока разбираюсь, в программе очень много кода. Видимо придется одновременно отлаживаться в 9 и 10 версии, чтобы сравнивать результаты работы.
Позже напишу о результатах.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 2982
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Москва

Re: пару слов о 10 версии

Сообщение jangle » 13.07.2013 (Сб) 20:35

Продебажил код. Выяснилось, что дело не в математике. А в функции:

Код: Выделить всё
Graphic Get Client To X, Y


В 10 версии она возвращает X=0, Y=0. Поэтому графики на форме рисуются неправильно.
В 9 версии возвращаются правильные целые значения.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1888
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: пару слов о 10 версии

Сообщение ger_kar » 13.07.2013 (Сб) 20:38

jangle писал(а):В 10 версии она возвращает X=0, Y=0
Т.е. всегда возвращает? А конкретно в какой версии проверялось в 10.4? Интересно другие десяточные версии имеют этот баг.
Бороться и искать, найти и перепрятать

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 2982
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Москва

Re: пару слов о 10 версии

Сообщение jangle » 13.07.2013 (Сб) 21:12

Разобрался с проблемой. В 10 версии меняем

Код: Выделить всё
Graphic Get Client
на
Код: Выделить всё
Graphic Get Canvas To


И все заработает правильно. Потому, что в 10 версии в очередной раз поменяли язык:

GRAPHIC GET CLIENT statement now returns the client area size in dialog units or pixels only. The size represents the physical size of the display area on the screen. This change was necessary because of the improved graphic functionality involving virtual windows, resizing of graphic windows, etc. Prior versions returned scaled sizes if a GRAPHIC SCALE was executed. Substitute GRAPHIC GET CANVAS for functionality which is fully compatible with the old format.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1888
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: пару слов о 10 версии

Сообщение ger_kar » 13.07.2013 (Сб) 21:15

Ох уж эти любители все менять. Что-б их...
Бороться и искать, найти и перепрятать

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 2982
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Москва

Re: пару слов о 10 версии

Сообщение jangle » 13.07.2013 (Сб) 21:17

А вообще за такое надо руки отрывать разработчикам.
Новичок себе лоб расшибет, но фиг поймет почему
Код: Выделить всё
Graphic Get Client

в 9 и 10 версиях работает по-разному

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2751
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 13.07.2013 (Сб) 22:14

Сорри за оффтоп, я тут вспомнил, как Хакер про объявление As New в VB.NET возмущался, а там всё-таки разные языки были :)


Вернуться в Power Basic

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList  
cron