|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Скомпилировать unit в отдельный файл
Добрый день, друзья. Давно читаю этот форум и только сегодня решил зарегаться, т.к. не могу найти ответа.
Я ещё новичок, так что если вопросы глупые будут, не смейтесь) В общем, недавно научился выносить процедуры в отдельный unit и вызывать их от туда. Возник такой вопрос, как можно сделать что бы при компиляции программы, юниты не собирались в .exe, а сохранялись отдельно, например после компиляции в папке был сам .ехе и рядом unit.*** (не знаю какое расширение, поэтому звездочки). Такое возможно сделать? |
#2
|
||||
|
||||
для коллекций часто используемых процедур, функций, ресурсов и т.п. используют динамически подключаемые библиотеки dll. обычно библиотеки нужны когда сразу много программ нуждаются в одном и том же. для одной - десяти программы это не нужно. ну если только в ресурсе не будет какой-нибудь gif, размером в сотню мегабайт.
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
Цитата:
Можно поподробнее, то есть можно весь код с юнита перенести в dll, и потом использовать его в главной форме? Например создаю форму с кнопкой, компилирую. Создаю dll файл, туда пишу весь необходимый код, и при нажатии на кнопку выполняется код который в dll файле, так? Что же, пойду почитаю об этих dll п.с. тему пока не закрывайте, скорей всего ещё вопросы будут |
#4
|
|||
|
|||
Нам, зачем новичка смущаешь?
Ему бы пока разобраться с юнитами. Юнит всегда компилится в отдельный файл (.dcu), только выгоднее не сохранять скомпилированный код, т.к. он специфичен для конкретной версии среды и при переходе на следующую откажется работать, а просто собрать свои модули (исходники .pas) в отдельной папочке и добавить эту папочку в пути библиотек (можно глобально, можно конкретного проекта). |
#5
|
|||
|
|||
эмм... я наверно не совсем правильно выразился.
Хочу сделать вот что: Допустим форма с кнопкой. Кода в ней (условно) нет, только событие на кнопке и вызов процедуры. При клике на кнопку запускается процедура из юнита. Но этот юнит не лежит внутри .exe файла (коряво конечно написал, но думаю поняли), он лежит рядом. Без него программа работать не будет. И если заменить юнит на другой, с совершенно другим кодом, то программа будет выполнять уже другие действия. Типа как конструктор. А то что в .dcu компилируются, программа то и без них работает, т.к. они все собрались в .exe Я сейчас нарисовать попробую |
#6
|
|||
|
|||
На счёт dll, как я понял в них можно записать только функции? Напрямую к форме и компонентам я уже обратится не смогу? например form1.button2.click; такое уже не проканает?
Вот на картинке видно, приложение обращается за кодом к файлам. Если файла нет, то и кода нет. Программа не работает. Если в первом файле showmessage('файл1'); и если первый файл заменить другим (но с таким же именем), в котором будет showmessage('Привет');, то программа выдаст сообщение "Привет" |
#7
|
|||
|
|||
п.с.
картинки только внутренние отображает, не знал( ещё не разобрался как сюда заливать файлы поэтому не сердитесь что выложу ссыль на сторонний сайт Вот картинка http://spaces.ru/files/?r=main%2Fvie...&sid=: :sid:: |
#8
|
||||
|
||||
Цитата:
Пишу программы за еду. __________________ |
#10
|
|||
|
|||
Цитата:
Тогда да, нужна dll, или COM-объект. Да, из DLL ты обратиться так не сможешь, unless ты передашь в функцию указатель на нужный тебе объект (в данном примере - на button2). |
#11
|
|||
|
|||
Ладно, я пока оставлю эту затею, потом вернусь, когда немного подучусь.
Что бы темы не плодить, можно тут вопрос по инди задам, вот так выполняю гет: Код:
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
|
||||
|
||||
Оффтоп:
Наблюдается нарушение ПФ, "Один вопрос - Одна тема", пжлст, создете её в соответствующей ветке форума Вот нашёл старый пример заделки форм в библиотеку и её вызова Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#13
|
||||
|
||||
Disconnect/Connected не нужны
Пишу программы за еду. __________________ |