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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2014, 14:37   #1
Klaxwork
Пользователь
 
Регистрация: 13.12.2013
Сообщений: 18
По умолчанию Возможно ли подключить dll без дополнительного описания, какие именно функции и процедуры я буду использовать?

Доброго времени суток.

В дельфи, насколько я знаю, при подключении своей dll (со своими функциями) нужно в Unit`е прописывать все процедуры и функции, которые я собираюсь использовать (поправьте, если я ошибаюсь).

Так вот вопрос: существует ли возможность подключать отдельную dll (с моими процедурами и функциями) без дополнительного описания, какие именно функции и процедуры я буду использовать?

Если можно, то напишите простейший пример, как создать такую библиотеку (код) с одной функцией и одной процедурой, к примеру.

Мне на другом форуме сказали, что можно как-то написать такую, чтоб потом просто в uses её прописать, как Dialogs, или как Windows, к примеру, и функции из нее можно будет просто использовать, без повторной инициализации.

Спасибо.
Klaxwork вне форума Ответить с цитированием
Старый 28.04.2014, 14:50   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну вообще-то тебе наверное о TLB говорили.
Насколько я знаю все делфийские библиотеки могут компилироваться с этой информацией. из которой потом можно в самой же Делфи склепать модуль-интерфейс для использования.
Впрочем могу ошибаться, так как сам я так поступал только с СОМ серверными DLL, а вот будет ли обычная создаваться с такой информацией точно наверное не скажу.

А что сложного склепать модуль? Выдели функции которые на export идут и скопируй в отдельный юнит, дописав им указание в какой либе их искать. Минутное дело даже для 1000 функций.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2014, 15:10   #3
Klaxwork
Пользователь
 
Регистрация: 13.12.2013
Сообщений: 18
По умолчанию

Stilet, а не подскажешь, как это сделать?
Можешь простейший проект накидать? (Delphi 7)
Форма, 2 кнопки: первая вызывает функцию из dll, вторая вызывает процедуру.

Буду премного благодарен.
Klaxwork вне форума Ответить с цитированием
Старый 28.04.2014, 15:27   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у дотнета может и можно.

а в нативном нет, функции должны быть объявлены, иначе как Делфи проверит код то?

а зачем сие нужно то?


можно подключать ДЛЛ динамически разве что, а не статически.
Цитата:
первая вызывает функцию из dll, вторая вызывает процедуру.
функция и процедура однофикственно, и то и то подпрограмма и вызываются одинакого.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.04.2014, 15:31   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Stilet, а не подскажешь, как это сделать?
ДЛЛ
Код:
library project2;

{$mode objfpc}{$H+}

uses
  Classes
  { you can add units after this };

function x:integer;
begin
  Result:=55;
end;

exports x;
begin
end.
Модуль к ней для других:
Код:
unit Unit2;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils;
 function x:integer; external 'project2.dll';
implementation

end.
форма:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses   unit2,
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;

type

  { TForm1 }

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  Caption:=IntToStr(x);
end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2014, 15:37   #6
Klaxwork
Пользователь
 
Регистрация: 13.12.2013
Сообщений: 18
По умолчанию

Пепел Феникса, просто будет много форм в проекте, поэтому не хочу в кучу форм прописывать каждый раз функции, которые я собираюсь использовать.
Хочу просто подключить библиотеку и не париться, думая, что я буду использовать, а что нет.
Klaxwork вне форума Ответить с цитированием
Старый 28.04.2014, 15:39   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Klaxwork Посмотреть сообщение
Пепел Феникса, просто будет много форм в проекте, поэтому не хочу в кучу форм прописывать каждый раз функции, которые я собираюсь использовать.
Хочу просто подключить библиотеку и не париться, думая, что я буду использовать, а что нет.
подключить один модуль импорта и не парится.
у вас так же было бы прописывание библиотеки каждый раз.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.04.2014, 15:46   #8
Klaxwork
Пользователь
 
Регистрация: 13.12.2013
Сообщений: 18
По умолчанию

Stilet, Спасибо огромное!
Но, как я понял, все равно надо даже в отдельном юните выписывать все функции и процедуры, которые есть в dll?
Klaxwork вне форума Ответить с цитированием
Старый 28.04.2014, 15:48   #9
Klaxwork
Пользователь
 
Регистрация: 13.12.2013
Сообщений: 18
По умолчанию

Пепел Феникса, да, именно один модуль. Просто я не мог понять, как это сделать.
Klaxwork вне форума Ответить с цитированием
Старый 28.04.2014, 16:09   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Но, как я понял, все равно надо даже в отдельном юните выписывать все функции и процедуры, которые есть в dll?
Не пропиши, обратись, посмотри что получится и вопросы отпадут
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как использовать ListBox внутри своей функции\процедуры calypso C++ Builder 1 29.05.2013 17:37
Как использовать в Delphi-программе функции из DLL, написанной на C# АТИКОН Общие вопросы Delphi 12 19.03.2013 08:28
Не возможно использовать dll WebbMan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 07.12.2012 17:34
существуют ли какие нибудь функции или процедуры которые сохраняют изменения на форме? street-walker Общие вопросы Delphi 5 04.05.2010 22:49
Вызов процедуры из дополнительного модуля vedro-compota Общие вопросы Delphi 23 25.04.2010 16:09