![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Код из dll в программу
Vlad Oshin © (2008-08-20 14:05:00)из dll делаю на форме главной программы кнопку, назначаю ей код.
dll выгружаю, кнопка осталась, а кода то нет уже.. Как оставить и код?
procedure ButtonClick (Self : TButton; Sender : TButton);
begin
ShowMessageFmt ('Нажата кнопка %s', [Sender.Caption]);
ShowMessageFmt ('Self = %s', [Self.Name]);
end;
procedure AssignButtonClick (const Button : TButton);
var Method : TMethod;
begin
Method.Code := @ButtonClick;
Method.Data := Button;
Button.OnClick := TNotifyEvent (Method);
end;
=======================================
//воткнуть свой контрол
bt:=tButton.Create(application.MainForm);
bt.Visible:=false;
bt.Left :=150;
bt.Width:=250;
bt.Top :=150;
bt.Height :=50;
bt.Caption:='Caption';
bt.Name:='btnFromDll';
AssignButtonClick(bt);
application.MainForm.InsertControl(bt);
bt.Visible:=true;
bt.Caption:='Caption';
Anatoly Podgoretsky (2008-08-20 15:50:00) [1]Мыжики вы с травой то побережнее, и трава вам нет и выкинуть.
Та трава и поделиться ею нужно с другими.
http://www.podgoretsky.com/OtherParts/DM/BadTips.aspx(3)
Сергей М. (2008-08-20 15:39:00) [2]
> думаю надо делать с пакетами..., а в dll функционал
Ну и кому эта солянка, спрашиваеться, нужна ?
Большому начальнику большого проекта ?
Суй прямо в пакеты и интерфейсы и функционал !
Сергей М. (2008-08-20 15:35:00) [3]
> а в dll функционал
Ну так а за каким же лешим выгружать dll, если в ней функционал?
Vlad Oshin (2008-08-20 15:30:00) [4]да, уж, слышал :)
http://softwarer.ru/packages.html
вот после этой статьи особенно
большой проект надо (начальник сказал) разбить на модули. Думаю(уже 2 недели думаю), так буду делать.
думаю надо делать с пакетами(основное не меняющееся, vcl, rtl, компоненты там какие), а в dll функционал(он то и пишется в основном)
во всяком случае, учебные примеры с pluginaми с нета у меня стали получаться после этого подхода. (даже наши, перегруженные контрлами, в том числе сторонних разработчиков, формы перестали терять память и в AV вылеты прекратились)
Сергей М. (2008-08-20 15:09:00) [5]
> ну как обычно
Обычнов подобных "тяжелых случаях" речь идет о bpl, а не dll.
Только не говори, что ты слыхом не слыхивал про то, что такое bpl)
Vlad Oshin (2008-08-20 15:01:00) [6]
> Зачем тогда dll
ну как обычно
1. Клиентов до чертиков, если найдется глюк - они все будут качать целое обновление.
2. Каждый программист может заниматься своей dll
3. Каждый может написать еще одну dll, разослать кому надо. Программа будет разной у всех. Кому какие dll не нужны/запрещены не берут/получают их, не имеют/имеют соотв возможности.
> Ну а для начала можно покурить траву под названием "позиционно-
> независимый код"
пошел гуглить.
Сергей М. (2008-08-20 14:42:00) [7]
> Vlad Oshin
Ну а для начала можно покурить траву под названием "позиционно-независимый код" и покурив выяснить самостоятельно, реализует ли Делфи-компилятор неявную генерацию такого кода)
Сергей М. (2008-08-20 14:40:00) [8]
> код переносит в них(это интересовало)
Пока ты как следует прочувствуешь, каким геморроем грозит эта затея, с тебя сто потов сойдет и в конце-концов ты выбросишь эту траву)
Сергей М. (2008-08-20 14:37:00) [9]
> просто идея была вообще таковой
Бестолковая идея.
> Программа изначально никакая
А нафих тогда в ней форма, раз она "никакая" ?
> Загружает все dll, получает интерфейс, функционал
Зачем тогда dll, если "интерфейс, функционал" можно держать прямо в образе исп.модуля программы ?
Vlad Oshin (2008-08-20 14:33:00) [10]понятно, спасибо
только все равно, кажись, что можно.
1. dll говорит сколько у нее методов
2. программа создает столько же, и код переносит в них(это интересовало)
просто идея была вообще таковой:
Программа изначально никакая, может только dll запускать.
Загружает все dll, получает интерфейс, функционал
Выгружает dll (ну это можно и пропустить, раз говорите)
Германн (2008-08-20 14:14:00) [11]
> Vlad Oshin © (20.08.08 14:12) [3]
>
>
> > Ну очевидно же - не выгружать длл !
>
> да это понятно :)
> а подругому никак?
>
Перенести все в главную программу и не страдать ерундой :)
Leonid Troyanovsky (2008-08-20 14:13:00) [12]
> Vlad Oshin © (20.08.08 14:05)
> dll выгружаю, кнопка осталась, а кода то нет уже.. Как оставить
> и код?
Вписать код в екзешник, а длл - в печь.
--
Regards, LVT.
Vlad Oshin (2008-08-20 14:12:00) [13]
> Ну очевидно же - не выгружать длл !
да это понятно :)
а подругому никак?
Сергей М. (2008-08-20 14:12:00) [14]
> application.MainForm.InsertControl(bt);
Сказано же черным по белому в справке:
Applications should not need to call InsertControl directly. Child controls are automatically inserted and removed when added or deleted at design time. At runtime, use the Parent property of the child control to insert it in the Controls array
Так нет ведь, автору в очередной раз хочется собственным лблом провериьть грабли на прочность)
Что ж такое курить надо для этого ?)
Medbe}I{onok XML (2008-08-20 14:08:00) [15]не выгружать длл
Сергей М. (2008-08-20 14:07:00) [16]
> Как оставить и код?
Ну очевидно же - не выгружать длл !
Ты опять что-то не то курил ?)