Clarion 11-12

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4660
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 7 раз
Поблагодарили: 37 раз

Clarion 11-12

Сообщение finsoftrz »

На такой неприятный момент наступил пару раз. Если в оконном дизайнере удалить контрол, связанный с локальной переменной и саму эту переменную, то после выхода из дизайнера с сохранением пропадают все сделанные изменения, а в source окна появится информация до внесения изменений и сообщение об ошибке на удаленную локальную переменную.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4660
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 7 раз
Поблагодарили: 37 раз

Clarion 11-12

Сообщение finsoftrz »

Попытался воспроизвести на рантайме с11 ситуацию с утечкой памяти, анонсированную Игорем Столяровым. В диспетчере задач ничего криминального не вижу, менеджер памяти работает, как в с6. Или это как-то иначе проявляется? Это по поводу "увеличить максимальное количество объектов gdi".
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7417
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 16 раз
Поблагодарили: 49 раз

Clarion 11-12

Сообщение Игорь Столяров »

finsoftrz писал(а): 09 Май 2023, 8:02 увеличить максимальное количество объектов gdi
Вы же опишите пожалуйста методику Вашего тестирования - если хотите, что бы я как-то её прокомментировал ...

Здесь, кстати, нужно посмотреть когда я об этом сообщал - может быть это было в C11, а в С11.1 действительно проблем нет.
И какое значение для объёктов GDI у Вас установлено сейчас в реестре Windows.
Потому, что если Вы любопытствовали какую-нибудь программу корректирующую значение объектов GDI - то оно изменено. ;)

Что помню я. Проблема проявлялась в самых обычных программах, которые долго не закрывались (круглосуточно работающие точки).
Перекашивало контролы во всех окнах и сами окна тоже. Мы её диагностировали сделав открытие / закрытие (по событию)
MDI окна со 100 контролами. Насколько я помню там даже 500 повторов не проходило. Увеличение объктов GDI придумал не я -
а вычитал на stackoverflow.com. И это не решение, а как-бы костыль отодвигающий проявление проблемы очень далеко ... :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4660
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 7 раз
Поблагодарили: 37 раз

Clarion 11-12

Сообщение finsoftrz »

Вы сообщали про это в 2010 году для с7. Недавно вроде подтверждали. Вот я и подумал, насколько актуальна проблема.
Смотрю приложение, скомпилированное на с11 13505. Количество объектов в gdiview.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7417
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 16 раз
Поблагодарили: 49 раз

Clarion 11-12

Сообщение Игорь Столяров »

finsoftrz писал(а): 09 Май 2023, 9:28 Недавно вроде подтверждали
Насколько я помню - то я упомянул (!) об этой проблеме в теме класса с GDI графикой.
Это разное.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4660
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 7 раз
Поблагодарили: 37 раз

Clarion 11-12

Сообщение finsoftrz »

То есть, судя по всему, проблему пофиксили? Поскольку у Вас кто-то интенсивно работает с приложением на с11, это легко проверить - вернуть лимит на количество gdi объектов в стандартное значение и сразу будет видно, воспроизводится ли проблема на современной версии клариона. :-)
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7417
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 16 раз
Поблагодарили: 49 раз

Clarion 11-12

Сообщение Игорь Столяров »

finsoftrz писал(а): 09 Май 2023, 9:50 это легко проверить - вернуть лимит на количество gdi объектов в стандартное значение и сразу будет видно
Абсолютно логичное рассуждение. Если Вас эта тема интересует - сделайте и нам расскажете. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4660
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 7 раз
Поблагодарили: 37 раз

Clarion 11-12

Сообщение finsoftrz »

К сожалению, у меня нет пользователей, которые работают на рантайме с11.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7417
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 16 раз
Поблагодарили: 49 раз

Clarion 11-12

Сообщение Игорь Столяров »

Аналогично. У меня нет пользователей, которые бы жаловались на такую проблему с RunTime C11.1 ... ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4660
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 7 раз
Поблагодарили: 37 раз

Clarion 11-12

Сообщение finsoftrz »

В очередном тесте рантайма с11 при компиляции вылезла такая ошибка про дублирование.

kern32.jpg

Ругается вот на такую декларацию в классе.

Код: Выделить всё

   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
Толи я не понимаю чего-то, то ли это баг в компиляторе? При компиляции в с6 все нормально проходит и работает.
На всякий случай проверил на стандартном примере school, inc вставляется после глобальных include.
Вложения
fsWinApiExt.7z
(1.75 КБ) 23 скачивания
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7417
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 16 раз
Поблагодарили: 49 раз

Clarion 11-12

Сообщение Игорь Столяров »

К сожалению во вложении нет теста, который можно было бы прогнать ...
Вопрос: макропеременная DLL(_GetDiskFreeSpaceExA_) в какое значение установлена при сборке ?
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4660
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 7 раз
Поблагодарили: 37 раз

Clarion 11-12

Сообщение finsoftrz »

Игорь Столяров писал(а): 22 Май 2023, 11:47 К сожалению во вложении нет теста, который можно было бы прогнать ...
Вопрос: макропеременная DLL(_GetDiskFreeSpaceExA_) в какое значение установлена при сборке ?
Распакуйте архив в libscr (там 3 маленьких файлика, потом удалить можно). В примере вставьте include('FsWinApiExt.inc') в точке вставки после глобальных include. Компилируем, получаем ошибку.
_GetDiskFreeSpaceExA_ установлена в GetDiskFreeSpaceExA (в файле equ).
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4660
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 7 раз
Поблагодарили: 37 раз

Clarion 11-12

Сообщение finsoftrz »

Загрузка dll по аналогии с классом для atol, который Админ выкладывал. Разница в том, что вызывается функция из виндовой kernel32.dll.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7417
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 16 раз
Поблагодарили: 49 раз

Clarion 11-12

Сообщение Игорь Столяров »

finsoftrz писал(а): 22 Май 2023, 11:56 _GetDiskFreeSpaceExA_ установлена в GetDiskFreeSpaceExA
Там есть описание, но не установка значения.
Получается, что значение DLL(0) - т.е. Вы пытаетесь прилинковать внешнюю функцию к Вашему DLL/EXE.
finsoftrz писал(а): 22 Май 2023, 11:56 В примере вставьте
Если Вы заинтересованы в проверке проблемы - то есть смысл сделать работающий пример.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4660
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 7 раз
Поблагодарили: 37 раз

Clarion 11-12

Сообщение finsoftrz »

Игорь Столяров писал(а): 22 Май 2023, 12:10
finsoftrz писал(а): 22 Май 2023, 11:56 _GetDiskFreeSpaceExA_ установлена в GetDiskFreeSpaceExA
Там есть описание, но не установка значения.
Получается, что значение DLL(0) - т.е. Вы пытаетесь прилинковать внешнюю функцию к Вашему DLL/EXE.
finsoftrz писал(а): 22 Май 2023, 11:56 В примере вставьте
Если Вы заинтересованы в проверке проблемы - то есть смысл сделать работающий пример.
Установка значения в классе:

Код: Выделить всё

_GetDiskFreeSpaceExA_ = fsWAE_GetProcAddress(SELF.HandleDLL, cstr_GetDiskFreeSpaceExA)
Там же все по букварю, несколько строчек кода.
Хотите, чтобы я вставил одну строчку в school и выложил весь каталог примера в архиве? Могу скриншот с точкой вставки прислать. Уж до такого уровня опускаться не хотелось бы. :-)
C6/C11, ШВС, tps/btrieve.
Ответить