Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.10.2015, 04:17
Loca Loca вне форума
Прохожий
 
Регистрация: 28.10.2015
Сообщения: 20
Версия Delphi: delphi 10
Репутация: 518
По умолчанию Скомпилировать unit в отдельный файл

Добрый день, друзья. Давно читаю этот форум и только сегодня решил зарегаться, т.к. не могу найти ответа.

Я ещё новичок, так что если вопросы глупые будут, не смейтесь)

В общем, недавно научился выносить процедуры в отдельный unit и вызывать их от туда. Возник такой вопрос, как можно сделать что бы при компиляции программы, юниты не собирались в .exe, а сохранялись отдельно, например после компиляции в папке был сам .ехе и рядом unit.*** (не знаю какое расширение, поэтому звездочки).

Такое возможно сделать?
Ответить с цитированием
  #2  
Старый 28.10.2015, 08:14
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

для коллекций часто используемых процедур, функций, ресурсов и т.п. используют динамически подключаемые библиотеки dll. обычно библиотеки нужны когда сразу много программ нуждаются в одном и том же. для одной - десяти программы это не нужно. ну если только в ресурсе не будет какой-нибудь gif, размером в сотню мегабайт.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 28.10.2015, 09:46
Loca Loca вне форума
Прохожий
 
Регистрация: 28.10.2015
Сообщения: 20
Версия Delphi: delphi 10
Репутация: 518
По умолчанию

Цитата:
Сообщение от NumLock
для коллекций часто используемых процедур, функций, ресурсов и т.п. используют динамически подключаемые библиотеки dll. обычно библиотеки нужны когда сразу много программ нуждаются в одном и том же. для одной - десяти программы это не нужно. ну если только в ресурсе не будет какой-нибудь gif, размером в сотню мегабайт.

Можно поподробнее, то есть можно весь код с юнита перенести в dll, и потом использовать его в главной форме?

Например создаю форму с кнопкой, компилирую. Создаю dll файл, туда пишу весь необходимый код, и при нажатии на кнопку выполняется код который в dll файле, так?

Что же, пойду почитаю об этих dll

п.с.
тему пока не закрывайте, скорей всего ещё вопросы будут
Ответить с цитированием
  #4  
Старый 28.10.2015, 18:22
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,048
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Нам, зачем новичка смущаешь?
Ему бы пока разобраться с юнитами.

Юнит всегда компилится в отдельный файл (.dcu), только выгоднее не сохранять скомпилированный код, т.к. он специфичен для конкретной версии среды и при переходе на следующую откажется работать, а просто собрать свои модули (исходники .pas) в отдельной папочке и добавить эту папочку в пути библиотек (можно глобально, можно конкретного проекта).
Ответить с цитированием
  #5  
Старый 30.10.2015, 05:19
Loca Loca вне форума
Прохожий
 
Регистрация: 28.10.2015
Сообщения: 20
Версия Delphi: delphi 10
Репутация: 518
По умолчанию

эмм... я наверно не совсем правильно выразился.
Хочу сделать вот что:
Допустим форма с кнопкой. Кода в ней (условно) нет, только событие на кнопке и вызов процедуры. При клике на кнопку запускается процедура из юнита. Но этот юнит не лежит внутри .exe файла (коряво конечно написал, но думаю поняли), он лежит рядом.
Без него программа работать не будет. И если заменить юнит на другой, с совершенно другим кодом, то программа будет выполнять уже другие действия. Типа как конструктор.

А то что в .dcu компилируются, программа то и без них работает, т.к. они все собрались в .exe

Я сейчас нарисовать попробую
Ответить с цитированием
  #6  
Старый 30.10.2015, 05:48
Loca Loca вне форума
Прохожий
 
Регистрация: 28.10.2015
Сообщения: 20
Версия Delphi: delphi 10
Репутация: 518
По умолчанию

На счёт dll, как я понял в них можно записать только функции? Напрямую к форме и компонентам я уже обратится не смогу? например form1.button2.click; такое уже не проканает?

Вот на картинке видно, приложение обращается за кодом к файлам. Если файла нет, то и кода нет. Программа не работает. Если в первом файле showmessage('файл1'); и если первый файл заменить другим (но с таким же именем), в котором будет showmessage('Привет');, то программа выдаст сообщение "Привет"
Ответить с цитированием
  #7  
Старый 30.10.2015, 05:52
Loca Loca вне форума
Прохожий
 
Регистрация: 28.10.2015
Сообщения: 20
Версия Delphi: delphi 10
Репутация: 518
По умолчанию

п.с.
картинки только внутренние отображает, не знал(
ещё не разобрался как сюда заливать файлы поэтому не сердитесь что выложу ссыль на сторонний сайт
Вот картинка http://spaces.ru/files/?r=main%2Fvie...&sid=: :sid::
Ответить с цитированием
  #8  
Старый 30.10.2015, 08:10
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от Loca
Допустим форма с кнопкой. Кода в ней (условно) нет, только событие на кнопке и вызов процедуры. При клике на кнопку запускается процедура из юнита. Но этот юнит не лежит внутри .exe файла (коряво конечно написал, но думаю поняли), он лежит рядом.
Без него программа работать не будет. И если заменить юнит на другой, с совершенно другим кодом, то программа будет выполнять уже другие действия. Типа как конструктор.
использование dll в данном случае как раз легко реализует данный алгоритм работы. достаточно в библиотеках экспортировать одну и туже функцию, но в каждой библиотеке она выполняет различные действия. подменяя библиотеку в зависимости от требований. а в exe будет делать вызов этой функции.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #9  
Старый 30.10.2015, 10:12
Loca Loca вне форума
Прохожий
 
Регистрация: 28.10.2015
Сообщения: 20
Версия Delphi: delphi 10
Репутация: 518
По умолчанию

dll.rar
Вот посмотрите пожалуйста, я что то не то делаю

проект1 это сама прога, а проект2 это длл

Последний раз редактировалось Loca, 30.10.2015 в 10:14.
Ответить с цитированием
  #10  
Старый 30.10.2015, 17:51
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,048
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Loca
На счёт dll, как я понял в них можно записать только функции? Напрямую к форме и компонентам я уже обратится не смогу? например form1.button2.click; такое уже не проканает?

Тогда да, нужна dll, или COM-объект.
Да, из DLL ты обратиться так не сможешь, unless ты передашь в функцию указатель на нужный тебе объект (в данном примере - на button2).
Ответить с цитированием
  #11  
Старый 31.10.2015, 10:14
Loca Loca вне форума
Прохожий
 
Регистрация: 28.10.2015
Сообщения: 20
Версия Delphi: delphi 10
Репутация: 518
По умолчанию

Ладно, я пока оставлю эту затею, потом вернусь, когда немного подучусь.

Что бы темы не плодить, можно тут вопрос по инди задам, вот так выполняю гет:

Код:
var
obn:string;
begin

      repeat //подключение в цикле, в случае не удачи пробует снова и снова и снова
        try
         obn := idhttp0.Get('site');
        except
          idhttp0.Disconnect;
          idhttp0.Connected;
          sleep(5000);
        end;
      until (pos('Site © 2015',obn)) or (stop=true);
end;

Так приемлемо, или нужно нужно ещё что то дописать?
Цель: Переподключение к сайту при разрыве интернета (связь пропала и т.п.)
Ответить с цитированием
  #12  
Старый 31.10.2015, 14:13
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Оффтоп:
Наблюдается нарушение ПФ, "Один вопрос - Одна тема", пжлст, создете её в соответствующей ветке форума

Вот нашёл старый пример заделки форм в библиотеку и её вызова
Вложения
Тип файла: zip KlvAuto.zip (111.1 Кбайт, 4 просмотров)
Ответить с цитированием
  #13  
Старый 01.11.2015, 10:23
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Disconnect/Connected не нужны
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:06.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter