Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
Доброго дня господа ! Delphi 10.3.3 64-bit Имею - основная форма на ней TStatusBar - открытие DLL (библиотека реализована с участием TInterface) - передача TStatusBar в функцию DLL и изменение значение панели - возникает ошибка памяти в момент повторного обращение к семейству Panels или при окончательном закрытие окна. Впечатление что Panels удален DLL ...... или что-то сделал не так Код приложен прошу уточнить где рукожопость Спасибо. P.S. - ранее вопрос рассматривался, здесь локализовал ситуацию и максимально упростил конструкции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2021, 08:26 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
HOME_X - передача TStatusBar в функцию DLL и изменение значение панели Не надо так делать. Для таких случаев есть понятный и простой шаблон Observer: авторШаблон observer — это шаблон, в котором объект, называемый subject, ведет список зависимых объектов, называемых observers, и автоматически уведомляет их о любых изменениях состояния, обычно вызывая один из их методов. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. ISubject - живёт в dll и вызывает метод Notify у всех своих подписчиков, по мере необходимости. IObserver - живёт в главном приложении, регистрируется в ISubject при создании формы, удаляется в деструкторе. В методе Notify обновляет TStatusBar формы (посылкой сообщения форме или через Syncronize). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2021, 10:48 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
zedxxx В методе Notify обновляет TStatusBar формы (посылкой сообщения форме или через Syncronize) Здесь не совсем ясно взаимодействие основной формы и поля объекта на ней с методом Notify Как передать и где хранить указатель на TStatusBar - если это посылка сообщения Syncronize - будет полезна я дальнейшем, планирую сделать потоковый метод Не могли бы в мой небольшой пример внедрить Вам механизм - буду весьма признателен ! Спасибо ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2021, 13:02 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
HOME_XКод приложен прошу уточнить где рукожопость В третьем пункте. TStatusBar нельзя передавать в DLL. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2021, 13:09 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
HOME_X zedxxx В методе Notify обновляет TStatusBar формы (посылкой сообщения форме или через Syncronize) Здесь не совсем ясно взаимодействие основной формы и поля объекта на ней с методом Notify Как передать и где хранить указатель на TStatusBar - если это посылка сообщения Syncronize - будет полезна я дальнейшем, планирую сделать потоковый метод Не могли бы в мой небольшой пример внедрить Вам механизм - буду весьма признателен ! Спасибо ! Работаю со статьей https://sourcemaking.com/design_patterns/observer/delphi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2021, 13:25 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov HOME_XКод приложен прошу уточнить где рукожопость В третьем пункте. TStatusBar нельзя передавать в DLL. Я хочу реализовать получение и визуализацию сообщения (промежуточного) из DLL - как это реализовать ? TStatusBar - это функциональный объекта именно для этого - другого не предлагать - панели не добавлять (уже сделал) На моем коде вложенном в сообщении можете провести корректировки ? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2021, 13:53 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
HOME_X Как передать и где хранить указатель на TStatusBar - если это посылка сообщения Syncronize - будет полезна я дальнейшем, планирую сделать потоковый метод Все параметры передаются в конструкторе IObserver и хранятся внутри него в приватных полях. Лучше всего передать туда хэндл главного окна и использовать механизм обмена сообщениями. Главная форма в конструкторе создаёт и конфигурирует IObserver, регистрирует его в ISubject. Далее она получает нотификации от IObserver, а при закрытии себя, в деструкторе удаляет IObserver из ISubject. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2021, 13:59 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
HOME_XЯ хочу реализовать получение и визуализацию сообщения (промежуточного) из DLL - как это реализовать ? Передавать можно интерфейсы или функциональные типы (в том числе function of object). HOME_XНа моем коде вложенном в сообщении можете провести корректировки ? На мой банковский счёт можете провести перечисление чтобы я сделал за тебя твою работу? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2021, 14:11 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov HOME_XЯ хочу реализовать получение и визуализацию сообщения (промежуточного) из DLL - как это реализовать ? Передавать можно интерфейсы или функциональные типы (в том числе function of object). HOME_XНа моем коде вложенном в сообщении можете провести корректировки ? На мой банковский счёт можете провести перечисление чтобы я сделал за тебя твою работу? HOME_X, лови реализацию паттерна Observer, который предлагают ребята выше. За основу взят код из твоего примера. Реализация упрощенная, но работает хорошо, проверил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2021, 17:26 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
Benten HOME_X, лови реализацию паттерна Observer, который предлагают ребята выше. За основу взят код из твоего примера. Реализация упрощенная, но работает хорошо, проверил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2021, 17:30 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
Господа ! zedxxx Спасибо за целеуказание - принято к изучению и разработке Benten Отдельное спасибо за корректировку, рабочий пример ВСЕГДА ценен, при любой теории и понимании сущности вещей. Буду еще вопрошать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2021, 17:45 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
старые добрые коллбэки и не надо никаких паттернов function FuncfromDLL(params..., StatusCallback: TProcWithStringParam) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2021, 10:32 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal старые добрые коллбэки и не надо никаких паттернов function FuncfromDLL(params..., StatusCallback: TProcWithStringParam) Это плохой стиль программирования :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2021, 12:59 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
Это работающий стиль программирования. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2021, 13:03 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
ziv-2014 Fr0sT-Brutal старые добрые коллбэки и не надо никаких паттернов function FuncfromDLL(params..., StatusCallback: TProcWithStringParam) Это плохой стиль программирования :) Да, конечно, не хватает смузи, гироскутера и аджайла... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2021, 14:04 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal ziv-2014 пропущено... Это плохой стиль программирования :) Да, конечно, не хватает смузи, гироскутера и аджайла... Нет, ты ошибаешься. Хватает всего. Но твой вариант не удобный и плохо расширяемый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2021, 16:43 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
ziv-2014 Fr0sT-Brutal пропущено... Да, конечно, не хватает смузи, гироскутера и аджайла... Нет, ты ошибаешься. Хватает всего. Но твой вариант не удобный и плохо расширяемый. Нормально он расширяемый, если вместо коллбэка передавать указатель на структуру с подобными коллбэками, и параметры самих коллбэков - тоже структуры. Старые плугины, таким образом, не будут видеть новых элементов, и всё будет ок. Ну, в параметрах струкрур, передаваемых в коллбэки, можно добавить параметр "размер структуры" навсякий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2021, 17:09 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
ziv-2014 Нет, ты ошибаешься. Хватает всего. Но твой вариант не удобный и плохо расширяемый. Вот так и появляются MVC Hello world-ы на три листа убористого кода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2021, 17:09 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
zedxxx Лучше всего передать туда хэндл главного окна и использовать механизм обмена сообщениями. Если окно VCL, то хэндл проживет до первого RecreateWnd ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2021, 17:11 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal zedxxx Лучше всего передать туда хэндл главного окна и использовать механизм обмена сообщениями. Если окно VCL, то хэндл проживет до первого RecreateWnd ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2021, 18:08 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
А потом трястись как бы эта DLL его не закэшировала или не вызвала того, что окно пересоздаст. Наф-наф. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2021, 18:12 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal старые добрые коллбэки и не надо никаких паттернов function FuncfromDLL(params..., StatusCallback: TProcWithStringParam) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2021, 18:51 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal, Dimitry Sibiryakov, ziv-2014, YuRock Господа ! Ваши замечания весьма существенны и ценны Приведите свой РЕАЛЬНЫЙ ПРИМЕР решения вопроса, основываясь на первичном коде Полагаю Все Ваши решения будут оценены и применены в зависимости от уровня разработчиков и степени сложности кода и приложения Повторное спасибо Benten - вижу Ваш вариант как конечный результат своих изысканий. Работаю с предложением zedxxx, как с первичным базовым вариантом. Благодарен за понимание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2021, 22:40 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
YuRock Можно же сделать коллбэк GetMainWindowHandle и передать его в dll Да уж :) легче потребовать, чтобы окно было специальное для сообщений, через AllocateHwnd. Но это мера административная, и никто не проверит, что вразрез с инструкциями туда не пихнули Form1.Handle. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 10:53 |
|
||
|
Использование TStatusBar в вызовах DLL
|
|||
|---|---|---|---|
|
#18+
HOME_X Fr0sT-Brutal, Dimitry Sibiryakov, ziv-2014, YuRock Господа ! Ваши замечания весьма существенны и ценны Приведите свой РЕАЛЬНЫЙ ПРИМЕР решения вопроса, основываясь на первичном коде Полагаю Все Ваши решения будут оценены и применены в зависимости от уровня разработчиков и степени сложности кода и приложения Разработчики понимают и оценивают и по советам. Код (если это разработчик, ага) он и сам напишет, главное на правильную идею навести. А если совета недостаточно, а нужен только код - то это не разработчик, а копи-пастер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 11:20 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=18&tid=2037274]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 153ms |

| 0 / 0 |
