Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.04;
Скачать: CL | DM;

Вниз

Помогите плиз   Найти похожие ветки 

 
Mr.Fox   (2002-01-09 13:27) [0]

Скажите пожалуйста, как запихнуть в dll"ку форму и вызвать обработчик события из своей проги.
Заранее благодарен


 
Fellomena   (2002-01-09 13:31) [1]

New-> DLL,
затем New-> Form, на форме размещаешь всё что пожелаешь

library ModelF;

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,
Unit1 in "Unit1.pas" {Form1};

function ShowMyDialog(Msg: PChar): Boolean; stdcall;
begin
{Создаем экземпляр Form1 формы TForm1}
Form1 := TForm1.Create(Application);
{В Label1 выводим сообщение Msg}
Form1.Label1.Caption := StrPas(Msg);
{Возвращаем True если нажата OK (ModalResult = mrOk)}
Result := (Form1.ShowModal = mrOk);
Form1.Free;
end;

exports ShowMyDialog;

begin
end.

Ну а из главного :

...
implementation
function ShowMyDialog(Msg: PChar): Boolean; stdcall; external "project1.dll";
...
procedure TForm1.Button1Click(Sender: TObject);
begin
if ShowMyDialog(PChar("Work !!!"))= TRUE then
ShowMessage("TRUE !")
ELSE
ShowMessage("FALSE !");
end;


 
Wetnose   (2002-01-09 13:38) [2]

Забуть DLL, когда есть Delphi!
BPL - рулит... - это специальная разновидность DLL, которая cоздана специально для Delphi!
Работать с BPL также просто, как с простым модулем.
Тем более, что в DLL код VCL будет просто напросто дублироваться.
Откажись от одинокого exe-шника: пусть вместе с ним будет пара другая bpl-ок. Зато работать будет гораздо проще.

Есть недостаток: все юзаемые bpl-ки будут грузится в память. Но проблемма памяти, при размерах библиотек в несколько мегабайт, imho, не актуальна.


 
Fellomena   (2002-01-09 13:55) [3]

2 Wetnose:
проблема памяти неактуальна говоришь ? хех, "инетресны мне ваши слова, папаша"
Если программа использует много модальных форм, разных ресурсов, картинок и т.д. и всё это будет загружаться в память - это какой-то кошмар получится !
И просвети plz меня, с bpl другие проги совместимы ?
Всмысле dll могут использовать программы написанные на других языках (когда я на Builder-е что-то делаю мне иногда приходится некоторые свои здоровые ф-ии и процедуры, которые я в Delphi делала, в dll загонять, специально для того, что бы их на C-ый синтаксис не переписывать, а использовать "напрямую")
Будет моя bpl-ка работать с прогой на Builder-e написанной работать ?


 
Vovchik   (2002-01-09 14:16) [4]

А вот кстати, формат bpl может (скорее всего) одинаковый. Ведь VCL не зависит от Delphi/C++ Builder.
Только DLL, всё же лучше, это правда.


 
Fellomena   (2002-01-09 14:23) [5]

VCL то одинаковая, но соглашения о вызовах используемые при создании dll могут быть разные: Builder - cdecl ; Delphi (да и сам API 8) - stdcall;
Я просто с принципами работы bpl не знакома, поэтому и спрашиваю.


 
Vovchik   (2002-01-09 14:27) [6]

Вызовы то разные, но возможно при использовании bpl используется соглашение register, как для процедур объектов (или только секции published, не помню точно).
В конце концов, bpl построенный Дельфями цепляется к С++ Builder. Значит это как-то решено.


 
Fellomena   (2002-01-09 14:31) [7]

2 Vovchik:
наверное это так...
но я не могу понять, зачем так извращаться-то ?
Кто мне преймущества bpl по сравнению с dll скажет ?
Надо глянуть сегодня, что по этому поводу DelphiHelp говорит...


 
Виктор Щербаков   (2002-01-09 14:39) [8]

Кто мне преймущества bpl по сравнению с dll скажет?

Wetnose уже сказал:
Работать с BPL также просто, как с простым модулем.


 
Vovchik   (2002-01-09 14:47) [9]

Ну, люди всякие бывают. Я-то обеими руками за DLL!!!
>>>Виктор Щербаков © (09.01.02 14:39)
А с длл что, сложно что-ли?


 
Wetnose   (2002-01-09 15:14) [10]

Если в DLL делать форму, то весь необходимый код из vcl подцепится к ней подцепится. Он же подцепится и к exe-шнику. Получится, что один и тот же код присутствует в двух экземплярах. Зачем?

Естественно, использовать bpl с другими языками (кроме CBuilder) нерационально. Однако для Delphi, imho, это идеальный вариант.


 
Vovchik   (2002-01-09 15:21) [11]

Может я не в курсе, но как код из ДЛЛ подцепится к ехе-шнику? Мне казалось всегда, что при загрузке ДЛЛ, её код загружается в адресное пространство процесса, который ДЛЛ грузит. Откуда возьмётся дублирование? Можно поподробнее.


 
valery_f   (2002-01-09 15:22) [12]

DLL и BPL - несколько разные вещи. BPL - это хранилище компонент, которые могут быть доступны нескольким приложениям (и DLL тоже).
Скажем, если есть пакет EXE-шников + DLL-ли с формами - один и тот же код (компоненты и стандартные юниты) будет линковаться ко всем ним - расход памяти (и ОЗУ, и на диске) может возрасти в N-сколько раз. Run-time BPL для этого и придуманы - экономия по размеру пакета программ (общие компоненты только в одном экземпляре - в BPL) и используемой памяти (если работают несколько одновременно). На одном же EXE, соответственно, выигрыша не будет.


 
Vovchik   (2002-01-09 15:38) [13]

У ДЛЛ свои преимущества.


 
Fellomena   (2002-01-10 10:50) [14]

ok - вчера почитала у Тейксейры про bpl-ы и pakages...
С одной стороны bpl вещь действительно удобная - экономия места и т.д., но с другой стороны, как правильно сказал valery_f, использование bpl для одного exe-шника не имеет смысла.




 
GS   (2002-01-16 10:52) [15]

Я однажды уже связался с этими bpl, теперь никак отвязаться не могу. В своё время на Delphi 4.2 сделали один exe и кучу dll к нему, причём работало всё через bpl и вроде всё было круто.
Зато сейчас, с D6 нет никакой возможности всё перекомпилить на нём - и всё из-за bpl (в d4 и в d6 они РАЗНЫЕ, была даже носовместимость у D4.1 и D4.2!!!). По весу они большие, по инету переслать проблема. По стране ездить тоже проблема, так что получилась безвыходная ситуация... И приходится всё менять либо на d4 либо ехать с компашкой....



Страницы: 1 вся ветка

Текущий архив: 2002.02.04;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.011 c
1-8842
Nicolas_
2002-01-14 17:41
2002.02.04
Dock n drop Как убрать кнопку с заголовка прилепленного окна?


1-8927
MystiX
2002-01-17 16:59
2002.02.04
Помогите!!!


4-9032
Непонятливый
2001-12-06 23:55
2002.02.04
помогите чайнику напечатать текст


1-8835
tavwizard
2002-01-19 16:49
2002.02.04
add-in для Delphi


3-8797
andey
2001-12-20 19:31
2002.02.04
подскажите