Страница 131 из 158

Clarion 11-12

Добавлено: 18 Ноябрь 2022, 13:27
finsoftrz
На такой неприятный момент наступил пару раз. Если в оконном дизайнере удалить контрол, связанный с локальной переменной и саму эту переменную, то после выхода из дизайнера с сохранением пропадают все сделанные изменения, а в source окна появится информация до внесения изменений и сообщение об ошибке на удаленную локальную переменную.

Clarion 11-12

Добавлено: 09 Май 2023, 8:02
finsoftrz
Попытался воспроизвести на рантайме с11 ситуацию с утечкой памяти, анонсированную Игорем Столяровым. В диспетчере задач ничего криминального не вижу, менеджер памяти работает, как в с6. Или это как-то иначе проявляется? Это по поводу "увеличить максимальное количество объектов gdi".

Clarion 11-12

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

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

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

Clarion 11-12

Добавлено: 09 Май 2023, 9:28
finsoftrz
Вы сообщали про это в 2010 году для с7. Недавно вроде подтверждали. Вот я и подумал, насколько актуальна проблема.
Смотрю приложение, скомпилированное на с11 13505. Количество объектов в gdiview.

Clarion 11-12

Добавлено: 09 Май 2023, 9:39
Игорь Столяров
finsoftrz писал(а): 09 Май 2023, 9:28 Недавно вроде подтверждали
Насколько я помню - то я упомянул (!) об этой проблеме в теме класса с GDI графикой.
Это разное.

Clarion 11-12

Добавлено: 09 Май 2023, 9:50
finsoftrz
То есть, судя по всему, проблему пофиксили? Поскольку у Вас кто-то интенсивно работает с приложением на с11, это легко проверить - вернуть лимит на количество gdi объектов в стандартное значение и сразу будет видно, воспроизводится ли проблема на современной версии клариона. :-)

Clarion 11-12

Добавлено: 09 Май 2023, 10:10
Игорь Столяров
finsoftrz писал(а): 09 Май 2023, 9:50 это легко проверить - вернуть лимит на количество gdi объектов в стандартное значение и сразу будет видно
Абсолютно логичное рассуждение. Если Вас эта тема интересует - сделайте и нам расскажете. :)

Clarion 11-12

Добавлено: 09 Май 2023, 10:15
finsoftrz
К сожалению, у меня нет пользователей, которые работают на рантайме с11.

Clarion 11-12

Добавлено: 09 Май 2023, 16:15
Игорь Столяров
Аналогично. У меня нет пользователей, которые бы жаловались на такую проблему с RunTime C11.1 ... ;)

Clarion 11-12

Добавлено: 22 Май 2023, 11:34
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.

Clarion 11-12

Добавлено: 22 Май 2023, 11:47
Игорь Столяров
К сожалению во вложении нет теста, который можно было бы прогнать ...
Вопрос: макропеременная DLL(_GetDiskFreeSpaceExA_) в какое значение установлена при сборке ?

Clarion 11-12

Добавлено: 22 Май 2023, 11:56
finsoftrz
Игорь Столяров писал(а): 22 Май 2023, 11:47 К сожалению во вложении нет теста, который можно было бы прогнать ...
Вопрос: макропеременная DLL(_GetDiskFreeSpaceExA_) в какое значение установлена при сборке ?
Распакуйте архив в libscr (там 3 маленьких файлика, потом удалить можно). В примере вставьте include('FsWinApiExt.inc') в точке вставки после глобальных include. Компилируем, получаем ошибку.
_GetDiskFreeSpaceExA_ установлена в GetDiskFreeSpaceExA (в файле equ).

Clarion 11-12

Добавлено: 22 Май 2023, 12:07
finsoftrz
Загрузка dll по аналогии с классом для atol, который Админ выкладывал. Разница в том, что вызывается функция из виндовой kernel32.dll.

Clarion 11-12

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

Clarion 11-12

Добавлено: 22 Май 2023, 12:38
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 и выложил весь каталог примера в архиве? Могу скриншот с точкой вставки прислать. Уж до такого уровня опускаться не хотелось бы. :-)