Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
15-1249849805
Юрий
2009-08-10 00:30
2009.10.11
С днем рождения ! 10 августа 2009 понедельник


2-1249493855
Сторонний Клиент
2009-08-05 21:37
2009.10.11
Расположение окна ShowMessage на форме


15-1250088161
Артур Пирожков
2009-08-12 18:42
2009.10.11
Вопрос про сайт в контакте.ру


15-1249457425
@!!ex
2009-08-05 11:30
2009.10.11
Напишите прокси за денежку.


4-1216364068
BaD.P1nG
2008-07-18 10:54
2009.10.11
Иконки установленых приложений





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский