Библиотека программирование, программирование, языки программирования, книги программирование На сайте представлена информация про программирование в Интернете и работу  

Печать в "нормальном" размере.., принтер...
Покрасить фон CheckBox'а заданной штриховкой?..
Как распечатать форму, если она длинная!!!, на ней скролинг
Program Files => PROGRA~1, Преобразование имен файлов и папок
Отправка сообщений по сети. С чего начать
не видно окно отладки Watch
двумерный массив как параметр, передать двумерный динамический м-в
Где достать Delphi 7, Delphi7
Ip, как узнать Ip?
Поиск файлов у которых в расширении есть слово...
Исключение путя файла во время поиска
Console App, Переменные
Как вычислить размер ресурса содержащего иконки
Как можно вытащить иконку, соответствующую типу файла?
как из вставить в вордовский документ textbox
MS AGENT, работа без Delphi
Findfunction ???
Запуск программы с параметрами из другой программы, запуск в режиме совместимости
Компоненты для шифрования, Посоветуйте
DLL + TADOQuery
Считать строку из ListBox
Еще вопрос по потокам (TThread )и базам данных, Одновременная работа потоков
Проблема с InterBase
Чтение реестра под гостем в 2000
Компонент для 3D диаграмм
вопрос по TImage, Проблемы с работой в run-time с TImage
AutoSize в дочерней форме, fsMDIChild
Как из .doc получить картинки?, Как преобразовать текст в картинки?
Мигание главного окна, при запуске второй копии приложения
Обращение к TAction в DLL
Формы в Outlook, Использование Outlook+Exchange
Вопрос по потокам (Thread) и базам данных, Взаим-е потоков с компонентом TTable
published property типа TWinControl, написание компонентов
Как определить требования своей программы, Как определить требования своей программ
Некоротые программы использоют интересный шрифт, но я не могу поставить себе такой же :(
Как Вы относитесь к курящим девушкам?
Где найти компоненты TDBGridEx и TkbmMemTable?
Сохранение региона в файл, subj.
При создании таблицы runtime хочу определить Langu
AlphaControls, проблемы с меню
Порядок инициализации и финализации модулей, обработчик OnException
FastReport, Отчет с помощью FastReport
Масштабирование полигонов..., желательно быстрый компонент...
Ошибка при поиске файлов
работа ф-ции деления, в цикле
Изменить цвет PageControl'a в XP-стиле..., все равно белый... :(
Помогите решить задачку плиззз, народ помогите умираю!!!
Как выключить\включить монитор в XP?
Отображение содержимого поля OLE из БД Paradox
Поиск окна
Работа с функциями в Delphi
ini файл, проблема повторного сохранения
Определение нажатия клавиши, Как отловить, какая нажата клавиша?
Как определить директорию с программой?, Путь, откуда прога запущена...
Опять перехват...
Chat, Chat
Error: Canvas does not allow drawing., что с этим делать.
ОСУБД для Delphi
Работа со скриптами, neeed some help
http://www.realcoding.net, http://www.realcoding.net
Закладка FastNet, Не могу сделать Finger-клиент
ImageImportByName
Инструмент создания диалогов, есть у кого нибудь?
Какое сообщение получает форма, когда становится н
Русские символы в английские, как преобразовать?
получение текста из html, как получить текст
Chat, Очень нужен
Функции в отдельный файл
FindProperty?
Чтение чисел из файла!

Платные хостинги     Раскрутка сайта     Книги по программированию


Обращение к TAction в DLL

Только здесь 1000 посетителей на Ваш сайт всего за 3 у.е.!

- Суть в следующем:Есть в программе кнопка и я хочу присвоить ей Action, находящийся в динамически подключаемой dll.Создается и присваивается все нормально, но не изменяются некоторые свойства кнопки, которые изменяются, если Action в основном модуле. Например, Caption, Hint... Но все-таки Action отрабатывает при нажатии кнопки.А вот если назначить этот Action пункту меню, то при нажатии (вызов метода Action.Execute) появляется бред в виде Exception - Invalid Typecast.Если кто-нить разбирается во внутренностях VCL, напишите, plz - где ошибка?Заранее благодарен.P.S. И не надо говорить, что ошибка у меня в ДНК . Это я и сам знаю .

- Используй Package-и.

- Те же яйца, только в профиль, однако. А собственно, BPL- та же DLL (только в профиль )Я еще не сказал, что речь идет об интерфейсе plug-in -ов,т.е. линковать нужно обязательно динамически.Еще идеи есть?

- >А собственно, BPL- та же DLLЯ бы не сказал. BPL - очень удобный способ создавать плагины. Сложно будет передать куски интерфейса из dll в твою программу. С пакетами это - проще...

- Сложно... проще...А можно поконкретнее что-нибудь, или где почитать, что-то в книгах эти темы не освещаются.В лучшем случае просто говориться - чтобы создать пакет (или dll), делайте так! А нюансов никаких Так почему, когда назначаешь пункту меню основного приложения TAction, который находится в динамически подключаемой библиотеке,происходит Exception - Invalid Typecast при обращении к этому пункту меню?А если назначить этот Action кнопке, то все работает, НО кнопка не реагирует на Action.Enable / Disable ?

- Судя по тому, что не отрабатывают свойства с типом string, возникает глупый вопрос - с uses ShareMem все нормально?

- Да, конечно с ShareMem все нормально - специально посмотрел в ProcessViewer-e юзается ли эта самая borlndmm.dll.Причем смотрел RTTI объектов TAction созданных в основной форме и в DLL, типа:var ac: TAction; ti: PTypeInfo; td: PTypeData;... ac := Action1; // Action1 или в форме или в dll ti := ac.ClassInfo(); td := getTypeData(ti);При просмотре структуры в отладчике td^.r jбъекты в обоих случаях одинаковые за исключением одной вещи:ClassType: TAction - для Action из формы иClassType: TClass($адрес) для Action из DllВо.

- Давно изывестная вещь. Таблицы типов для dll и exe разные. То есть и тот и другой имеют эту таблицу, которую туда вкомпиливает компилятор. Так как делфи определяет тип простым сравнением указателей на таблицы, то объект одного и того же типа для dll и ехе будет иметь разный тип. То есть если ты создал в exe TAction и передал его в dll через параметр action, то проверка в dll: action is TAction вернет false. А приведение с использованием RTTI: (action as TAction).DoSomething(); создаст исключение - плохой typecast. В то время как простой кастинг: TAction(action).DoSomething(); будет работать норамльно. А пакеты как раз тем и отличаются, что они разделяют общую таблицу типов, и потому все в них происходит норамльно.

- Т.е. то, что я хочу невозможно в принципе. Ведь если я пункту меню из основной проги назначаю TAction из DLL, то при клике автоматом идет вызов (action as TAction).Я пробовал это дело с run-time packag-ами. Разумеется и основной модуль и BPL, который plug-in.Т.е. вышеупомянутая таблица у них должна быть одна.Факт - exception не возникает, но все равно ничего не работает...

- Вот, что получилось.Если передать в DLL форму из основного приложения и там создать Action с этим Owner-ом, то и действительно все работает .А я пытался в DLL создать Action и привязать его к форме в основном приложении, причем был вариант - пересылал в DLL Application и создавал Action с Owner=Application - не работало.Усем бАльшой Тханкс!

Интернет казино     Онлайн игры     Увеличение члена     Купить DVD


Главная страница | графическое программирование | язык программирования си | оффшорное программирование | пролог программирование | программирование dos | программирование мобильных | программирование мини атс | выпуклое программирование | программирование микросхем | программирование ms | библиотека программирование | программирование 3d | программирование j2me | программирование под windows | коды программирования | программирование статьи | asp программирование | веб программирование | lotus программирование | описания языков программирования | примеры задач программирование | программирование symbian | программирование литература | введение программирование | сравнение языков программирования | Ссылки

Все про веб программирование