Форум: "Основная";
Текущий архив: 2009.10.11;
Скачать: [xml.tar.bz2];
ВнизКод из dll в программу Найти похожие ветки
← →
Vlad Oshin © (2008-08-20 14:05) [0]из 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";
← →
Сергей М. © (2008-08-20 14:07) [1]
> Как оставить и код?
Ну очевидно же - не выгружать длл !
Ты опять что-то не то курил ?)
← →
Medbe}I{onok XML © (2008-08-20 14:08) [2]не выгружать длл
← →
Vlad Oshin © (2008-08-20 14:12) [3]
> Ну очевидно же - не выгружать длл !
да это понятно :)
а подругому никак?
← →
Сергей М. © (2008-08-20 14:12) [4]
> 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
Так нет ведь, автору в очередной раз хочется собственным лблом провериьть грабли на прочность)
Что ж такое курить надо для этого ?)
← →
Leonid Troyanovsky © (2008-08-20 14:13) [5]
> Vlad Oshin © (20.08.08 14:05)
> dll выгружаю, кнопка осталась, а кода то нет уже.. Как оставить
> и код?
Вписать код в екзешник, а длл - в печь.
--
Regards, LVT.
← →
Германн © (2008-08-20 14:14) [6]
> Vlad Oshin © (20.08.08 14:12) [3]
>
>
> > Ну очевидно же - не выгружать длл !
>
> да это понятно :)
> а подругому никак?
>
Перенести все в главную программу и не страдать ерундой :)
← →
Vlad Oshin © (2008-08-20 14:33) [7]понятно, спасибо
только все равно, кажись, что можно.
1. dll говорит сколько у нее методов
2. программа создает столько же, и код переносит в них(это интересовало)
просто идея была вообще таковой:
Программа изначально никакая, может только dll запускать.
Загружает все dll, получает интерфейс, функционал
Выгружает dll (ну это можно и пропустить, раз говорите)
← →
Сергей М. © (2008-08-20 14:37) [8]
> просто идея была вообще таковой
Бестолковая идея.
> Программа изначально никакая
А нафих тогда в ней форма, раз она "никакая" ?
> Загружает все dll, получает интерфейс, функционал
Зачем тогда dll, если "интерфейс, функционал" можно держать прямо в образе исп.модуля программы ?
← →
Сергей М. © (2008-08-20 14:40) [9]
> код переносит в них(это интересовало)
Пока ты как следует прочувствуешь, каким геморроем грозит эта затея, с тебя сто потов сойдет и в конце-концов ты выбросишь эту траву)
← →
Сергей М. © (2008-08-20 14:42) [10]
> Vlad Oshin
Ну а для начала можно покурить траву под названием "позиционно-независимый код" и покурив выяснить самостоятельно, реализует ли Делфи-компилятор неявную генерацию такого кода)
← →
Vlad Oshin © (2008-08-20 15:01) [11]
> Зачем тогда dll
ну как обычно
1. Клиентов до чертиков, если найдется глюк - они все будут качать целое обновление.
2. Каждый программист может заниматься своей dll
3. Каждый может написать еще одну dll, разослать кому надо. Программа будет разной у всех. Кому какие dll не нужны/запрещены не берут/получают их, не имеют/имеют соотв возможности.
> Ну а для начала можно покурить траву под названием "позиционно-
> независимый код"
пошел гуглить.
← →
Сергей М. © (2008-08-20 15:09) [12]
> ну как обычно
Обычно в подобных "тяжелых случаях" речь идет о bpl, а не dll.
Только не говори, что ты слыхом не слыхивал про то, что такое bpl)
← →
Vlad Oshin © (2008-08-20 15:30) [13]да, уж, слышал :)
http://softwarer.ru/packages.html
вот после этой статьи особенно
большой проект надо (начальник сказал) разбить на модули. Думаю(уже 2 недели думаю), так буду делать.
думаю надо делать с пакетами(основное не меняющееся, vcl, rtl, компоненты там какие), а в dll функционал(он то и пишется в основном)
во всяком случае, учебные примеры с pluginaми с нета у меня стали получаться после этого подхода. (даже наши, перегруженные контрлами, в том числе сторонних разработчиков, формы перестали терять память и в AV вылеты прекратились)
← →
Сергей М. © (2008-08-20 15:35) [14]
> а в dll функционал
Ну так а за каким же лешим выгружать dll, если в ней функционал ?
← →
Сергей М. © (2008-08-20 15:39) [15]
> думаю надо делать с пакетами..., а в dll функционал
Ну и кому эта солянка, спрашиваеться, нужна ?
Большому начальнику большого проекта ?
Суй прямо в пакеты и интерфейсы и функционал !
← →
Anatoly Podgoretsky © (2008-08-20 15:50) [16]Мыжики вы с травой то побережнее, и трава вам нет и выкинуть.
Та трава и поделиться ею нужно с другими.
http://www.podgoretsky.com/OtherParts/DM/BadTips.aspx (3)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2009.10.11;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c