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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2008, 07:10   #1
Parcenson
Пользователь
 
Аватар для Parcenson
 
Регистрация: 11.08.2008
Сообщений: 21
По умолчанию Пытаюсь создать Dll для своей проги

1) Я может не понимаю смысл как вообще использовать Dll-библиотеки?
Вот как я понял - Можно создать файл(Dll), который будет вызывать мою программу из других приложений и т.п.
2) Я создавал библиотеку с вызовом Формы, и указывал в нем создание одной формы, которая равна моей из проги, тоесть писал
function ShowForm : Integer; stdcall;
var
Form : TDLLForm;
begin
Form := TDLLForm.Create(Application);
Result := Form.ShowModal;
Form.Free;
end;
Но у меня в программе есть еще одна форма её тоже надо описать.
3) Если я написал набор слов вместо вопроса извините.(Сколько не пытался написать понятней выходило ещё хуже). :-)
Parcenson вне форума Ответить с цитированием
Старый 30.09.2008, 08:06   #2
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Цитата:
Сообщение от Parcenson Посмотреть сообщение
1) Я может не понимаю смысл как вообще использовать Dll-библиотеки?
Вот как я понял - Можно создать файл(Dll), который будет вызывать мою программу из других приложений и т.п.
2) Я создавал библиотеку с вызовом Формы, и указывал в нем создание одной формы, которая равна моей из проги, тоесть писал
function ShowForm : Integer; stdcall;
var
Form : TDLLForm;
begin
Form := TDLLForm.Create(Application);
Result := Form.ShowModal;
Form.Free;
end;
Но у меня в программе есть еще одна форма её тоже надо описать.
3) Если я написал набор слов вместо вопроса извините.(Сколько не пытался написать понятней выходило ещё хуже). :-)
Другие будут использовать твою DLL примерно так как ты используеш DLL видовые
Загружать библиотеку и вызывать функции которые ты экспортируешь
Особенностей много
Например твое (в DLL) Application не будет соответствовать основному если не предусмотришь передачу
не забывай про Exception

твой код лучше так
Код:
function ShowForm(AOwner: TComponent) : Integer; stdcall;
var
        Form : TDLLForm;
begin
  Form := TDLLForm.Create(AOwner);
  try
    Result := Form.ShowModal;
  finally
    Form.Free;
  end;
end;
или хотя бы так
Код:
function ShowForm : Integer; stdcall;
var
        Form : TDLLForm;
begin
  Form := TDLLForm.Create(nil);
  try
    Result := Form.ShowModal;
  finally
    Form.Free;
  end;
end;
s.Creator вне форума Ответить с цитированием
Старый 30.09.2008, 08:33   #3
Parcenson
Пользователь
 
Аватар для Parcenson
 
Регистрация: 11.08.2008
Сообщений: 21
По умолчанию

У меня вот библиотека создается(компилится), а вот когда вызываю ошибка могу написать дословно, но вроде смысл, что "Я не могу обратиться к ячейке памяти по такомоту адресу".

---А вызываю я её тупо вот так---
var
Form1: TForm1;
implementation
function ShowForm: integer; external 'C:\Documents and Settings\asutpst\Рабочий стол\Новая папка\Login.dll';
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Showform;

end;
Б.Ю. Сома программа работает нормально.
Parcenson вне форума Ответить с цитированием
Старый 30.09.2008, 09:30   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

1. function ShowForm : Integer; stdcall;
2. function ShowForm: integer; ?????? external 'C:\Documents and Settings\asutpst\Рабочий стол\Новая папка\Login.dll';
BOBAH13 вне форума Ответить с цитированием
Старый 30.09.2008, 11:08   #5
Parcenson
Пользователь
 
Аватар для Parcenson
 
Регистрация: 11.08.2008
Сообщений: 21
По умолчанию

Вы знаете, то что я написал Stdcall; ничего не изменило, может ошибка не в этом.
Я вот спрашивал не может это быть от того, что у меня две формы, а не одна.

Просто недавно начал изучать библиотеки и чего-то как делал простой вызов Dll с созданием имеющийся формы, было нормально, а как начал пробовать с прогой по-сложнее так ошибки.

Последний раз редактировалось Parcenson; 30.09.2008 в 11:11.
Parcenson вне форума Ответить с цитированием
Старый 30.09.2008, 17:25   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Меня еще вот эта строка интригует: "Form := TDLLForm.Create(Application);" если это в коде длл конечн. И вообщет нельзя ли код длл где и как описана и вызывается форма. И код проги опять теже где и как
BOBAH13 вне форума Ответить с цитированием
Старый 30.09.2008, 20:36   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вован, не стоит тратить время... Это - клиника. Пока он не прочитает книгу, например, Фленова для начинающих, мы так и будем чуметь от его перлов...
Админы, закройте тему, ради бога...
Работа с DLL у нас объяснялась не раз, в том числе и вашим покорным слугой. Сколько можно жевать одну и ту же жвачку? Пусть люди учатся пользоваться поиском по форуму...

Последний раз редактировалось mihali4; 30.09.2008 в 20:38.
mihali4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вынос компонентов программы (которые делфи всталяет в каждую программу) из проги в dll GanGSISoft Общие вопросы Delphi 17 02.07.2009 17:24
Нужно создать dll для защиты o_nix Фриланс 3 31.10.2008 15:06
Как сделать для своей проги скин? C++ Builder 6. Dunhil Помощь студентам 1 30.12.2007 13:37
Как со своей проги запустить чужую SeRhy Помощь студентам 5 04.11.2007 11:18
Защита окна своей проги joker Win Api 8 27.09.2007 10:27