Clarion 11-12
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 3971
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 3 раза
- Поблагодарили: 9 раз
Clarion 11-12
На такой неприятный момент наступил пару раз. Если в оконном дизайнере удалить контрол, связанный с локальной переменной и саму эту переменную, то после выхода из дизайнера с сохранением пропадают все сделанные изменения, а в source окна появится информация до внесения изменений и сообщение об ошибке на удаленную локальную переменную.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 3971
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 3 раза
- Поблагодарили: 9 раз
Clarion 11-12
Попытался воспроизвести на рантайме с11 ситуацию с утечкой памяти, анонсированную Игорем Столяровым. В диспетчере задач ничего криминального не вижу, менеджер памяти работает, как в с6. Или это как-то иначе проявляется? Это по поводу "увеличить максимальное количество объектов gdi".
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 6752
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 5 раз
- Поблагодарили: 26 раз
Clarion 11-12
Вы же опишите пожалуйста методику Вашего тестирования - если хотите, что бы я как-то её прокомментировал ...
Здесь, кстати, нужно посмотреть когда я об этом сообщал - может быть это было в C11, а в С11.1 действительно проблем нет.
И какое значение для объёктов GDI у Вас установлено сейчас в реестре Windows.
Потому, что если Вы любопытствовали какую-нибудь программу корректирующую значение объектов GDI - то оно изменено.

Что помню я. Проблема проявлялась в самых обычных программах, которые долго не закрывались (круглосуточно работающие точки).
Перекашивало контролы во всех окнах и сами окна тоже. Мы её диагностировали сделав открытие / закрытие (по событию)
MDI окна со 100 контролами. Насколько я помню там даже 500 повторов не проходило. Увеличение объктов GDI придумал не я -
а вычитал на stackoverflow.com. И это не решение, а как-бы костыль отодвигающий проявление проблемы очень далеко ...

Совершенство достигается не когда нечего добавить, а когда нечего отнять !
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 3971
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 3 раза
- Поблагодарили: 9 раз
Clarion 11-12
Вы сообщали про это в 2010 году для с7. Недавно вроде подтверждали. Вот я и подумал, насколько актуальна проблема.
Смотрю приложение, скомпилированное на с11 13505. Количество объектов в gdiview.
Смотрю приложение, скомпилированное на с11 13505. Количество объектов в gdiview.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 6752
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 5 раз
- Поблагодарили: 26 раз
Clarion 11-12
Насколько я помню - то я упомянул (!) об этой проблеме в теме класса с GDI графикой.
Это разное.
Совершенство достигается не когда нечего добавить, а когда нечего отнять !
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 3971
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 3 раза
- Поблагодарили: 9 раз
Clarion 11-12
То есть, судя по всему, проблему пофиксили? Поскольку у Вас кто-то интенсивно работает с приложением на с11, это легко проверить - вернуть лимит на количество gdi объектов в стандартное значение и сразу будет видно, воспроизводится ли проблема на современной версии клариона. 

C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 6752
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 5 раз
- Поблагодарили: 26 раз
Clarion 11-12
Абсолютно логичное рассуждение. Если Вас эта тема интересует - сделайте и нам расскажете.

Совершенство достигается не когда нечего добавить, а когда нечего отнять !
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 3971
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 3 раза
- Поблагодарили: 9 раз
Clarion 11-12
К сожалению, у меня нет пользователей, которые работают на рантайме с11.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 6752
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 5 раз
- Поблагодарили: 26 раз
Clarion 11-12
Аналогично. У меня нет пользователей, которые бы жаловались на такую проблему с RunTime C11.1 ... 

Совершенство достигается не когда нечего добавить, а когда нечего отнять !
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 3971
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 3 раза
- Поблагодарили: 9 раз
Clarion 11-12
В очередном тесте рантайма с11 при компиляции вылезла такая ошибка про дублирование.
Ругается вот на такую декларацию в классе.
Толи я не понимаю чего-то, то ли это баг в компиляторе? При компиляции в с6 все нормально проходит и работает.
На всякий случай проверил на стандартном примере school, inc вставляется после глобальных include.
Ругается вот на такую декларацию в классе.
Код: Выделить всё
MAP
MODULE('kernel32.dll')
fsWAE_GetDiskFreeSpace(<*CSTRING lpDirectoryName>,LONG lpFreeBytesAvailableToCaller=0,LONG lpTotalNumberOfBytes=0,LONG lpTotalNumberOfFreeBytes=0),BOOL,PASCAL,RAW,DLL(_GetDiskFreeSpaceExA_),name('GetDiskFreeSpaceExA')
END
END
На всякий случай проверил на стандартном примере school, inc вставляется после глобальных include.
- Вложения
-
- fsWinApiExt.7z
- (1.75 КБ) 6 скачиваний
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 6752
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 5 раз
- Поблагодарили: 26 раз
Clarion 11-12
К сожалению во вложении нет теста, который можно было бы прогнать ...
Вопрос: макропеременная DLL(_GetDiskFreeSpaceExA_) в какое значение установлена при сборке ?
Вопрос: макропеременная DLL(_GetDiskFreeSpaceExA_) в какое значение установлена при сборке ?
Совершенство достигается не когда нечего добавить, а когда нечего отнять !
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 3971
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 3 раза
- Поблагодарили: 9 раз
Clarion 11-12
Распакуйте архив в libscr (там 3 маленьких файлика, потом удалить можно). В примере вставьте include('FsWinApiExt.inc') в точке вставки после глобальных include. Компилируем, получаем ошибку.Игорь Столяров писал(а): ↑22 Май 2023, 11:47 К сожалению во вложении нет теста, который можно было бы прогнать ...
Вопрос: макропеременная DLL(_GetDiskFreeSpaceExA_) в какое значение установлена при сборке ?
_GetDiskFreeSpaceExA_ установлена в GetDiskFreeSpaceExA (в файле equ).
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 3971
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 3 раза
- Поблагодарили: 9 раз
Clarion 11-12
Загрузка dll по аналогии с классом для atol, который Админ выкладывал. Разница в том, что вызывается функция из виндовой kernel32.dll.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 6752
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 5 раз
- Поблагодарили: 26 раз
Clarion 11-12
Там есть описание, но не установка значения.
Получается, что значение DLL(0) - т.е. Вы пытаетесь прилинковать внешнюю функцию к Вашему DLL/EXE.
Если Вы заинтересованы в проверке проблемы - то есть смысл сделать работающий пример.
Совершенство достигается не когда нечего добавить, а когда нечего отнять !
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 3971
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 3 раза
- Поблагодарили: 9 раз
Clarion 11-12
Установка значения в классе:Игорь Столяров писал(а): ↑22 Май 2023, 12:10Там есть описание, но не установка значения.
Получается, что значение DLL(0) - т.е. Вы пытаетесь прилинковать внешнюю функцию к Вашему DLL/EXE.
Если Вы заинтересованы в проверке проблемы - то есть смысл сделать работающий пример.
Код: Выделить всё
_GetDiskFreeSpaceExA_ = fsWAE_GetProcAddress(SELF.HandleDLL, cstr_GetDiskFreeSpaceExA)
Хотите, чтобы я вставил одну строчку в school и выложил весь каталог примера в архиве? Могу скриншот с точкой вставки прислать. Уж до такого уровня опускаться не хотелось бы.

C6/C11, ШВС, tps/btrieve.