Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2010, 20:57   #1
Chayhana
Новичок
Джуниор
 
Регистрация: 16.04.2010
Сообщений: 3
Смущение Загрузка формы в DLL по умолчанию

Заранее соррьте за пожалуй детский вопрос.
Но как загрузить в DLL библиотеку форму которая бы загружалась(отображалась) по умолчанию, при запуске самой DLL библиотеке?

library Bot;

{ Important note about DLL memory management: ShareMem must be the
first unit in your library's USES clause AND your project's (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }

uses
SysUtils,
Classes,
Forms,
Unit1 in 'Unit1.pas' {Form1};

// это функция для проверки и отладки создана!
Function Summ(x,y:integer):integer; StdCall;
begin
result:=X+Y;
end;
exports Summ;

{$R *.res}

begin
Form1.ShowModal;
end.

Такое выдает кучу ошибок. Форма конечно создана.
Chayhana вне форума Ответить с цитированием
Старый 17.04.2010, 14:34   #2
Chayhana
Новичок
Джуниор
 
Регистрация: 16.04.2010
Сообщений: 3
По умолчанию

Блин, ну что никто не знает что ответить??!

Кодинг проги отладки через которую запускается DLL:
Цитата:
unit Otladka;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
Handle : THandle;
begin
Handle:=LoadLibrary('botik.dll');
FreeLibrary(Handle);
end;

end.
Как видите простой код. На форме две кнопки - по одной запускается DLL по другой закрывается форма.


Код самой DLL:
Цитата:
library Botik;

{ Important note about DLL memory management: ShareMem must be the
first unit in your library's USES clause AND your project's (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }

uses
SysUtils,
Classes,
Forms, Dialogs,
Unit1 in '..\Unit1.pas' {DLLS};

{$R *.res}

begin
ShowMessage('Покажись!!');
DLLS.Show;
end.
Простой код. Сообщение "Покажись" отображается без проблем. Но команда DLLS.Show(пробовал и ShowModal) вываливает ошибку вида:

Project C:\\.... raised too many consecutive exception: 'access violation at 0x00b5c883: read of address 0x000000'. Process Stopped. Use Step or Run to continue.

Что не так делаю то??
Chayhana вне форума Ответить с цитированием
Старый 17.04.2010, 14:43   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Код:
ShowMessage('Покажись!!');
DLLS.Show;
а кто будет создавать объект(форму) DLLS
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 17.04.2010, 15:18   #4
Chayhana
Новичок
Джуниор
 
Регистрация: 16.04.2010
Сообщений: 3
По умолчанию

Цитата:
а кто будет создавать объект(форму) DLLS
Епт. учиться учиться и еще раз учиться!

изменил на:
Application.CreateForm(TDLLS,DLLS);
DLLS.ShowModal;

все заработало.
Спасибо.
Chayhana вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[DLL] Загрузка и выгрузка dll в/из чужого процесса Человек_Борща Win Api 4 28.02.2010 17:47
Загрузка dll Колючка* Общие вопросы Delphi 3 12.02.2010 19:45
Обращение из формы в dll к элементу главной формы (delphi) a_n_n_a Помощь студентам 3 10.05.2009 04:00
загрузка .dll blackstersl Общие вопросы Delphi 1 29.04.2009 21:53
Загрузка DLL Hollander Общие вопросы Delphi 3 21.05.2007 20:19