Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880

Почему Delphi требует наличие dcu файла стороннего компонента?

24.06.2013, 21:48. Показов 5772. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго вечера форумчане.
Вопрос такой. С одним и тем же проектом на разных машинах Delphi ведёт себя по разному.
На обеих установлен компонент CoolTrayIcon. Но на одной ругается на отсутствие *dcu файла модуля CoolTrayIcon. На другой - нет. Перестаёт ругаться только если в папку проекта скопировать этот файл.
Могу добавить, что на машине, на которой не ругается - специально никаких путей не прописывал.
Где в настройках нужно чего сделать, чтобы и на второй не требовала наличия этого файла?
Заранее благодарю за ответы.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.06.2013, 21:48
Ответы с готовыми решениями:

Почему нет файла Proxies.dcu из Delphi 6
И почему у меня его нет :(

Delphi проверить наличие компонента
Ребят, помогите разобраться. Условие срабатывает всегда, даже когда компонент есть. if ((self.FindComponent('dynamicedit' +...

NFS Shift требует наличие файла d3dx9_41.dll
Помогите пожалуйста нфс шифт установил с диска... При запуске выдает системную ошибку d3dx9_41.dll Пишет что какой то файл тсутствует...

26
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
24.06.2013, 21:56
Скопируй в папку lib в папке с Delphi.
Одиночка, а я думал вы профессиональный программист и поймете в чем дело. А по вашему от куда машина будет брать код функций у CoolTrayIcon?
1
75 / 99 / 1
Регистрация: 01.10.2011
Сообщений: 177
24.06.2013, 21:58
чтобы программа работала на всех компьютерах, нужно провести следующие настройки в опциях проекта:
- закладка packages: убрать галочку Build with runtimes packages
- закладка linker: убрать галочку Use dinamyc RTL
2
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
24.06.2013, 21:58  [ТС]
саша40: А откуда она берёт этот код на другой машине, по вашему?
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
24.06.2013, 22:04
Цитата Сообщение от Одиночка Посмотреть сообщение
А откуда она берёт этот код на другой машине, по вашему?
Из exe. Компилятор автоматом компилирует все подключеные в Uses модули. Поэтому программы и весят по 300-500 кб. Иначе бы они весили 8-12 кб.

Не по теме:

И кто теперь дурак?:D

0
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
24.06.2013, 22:04  [ТС]
alex.-93: Второй галочки чего-то не нашел. Но, в общем-то, сам exe-шник запускается нормально из любого места без вопросов. А вот проект без этого dcu-файла не хочет компилироваться. Но может это и поможет. Спасибо. К сожалению, сейчас уже не могу проверить.
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
24.06.2013, 22:04
P.S. Если под словом она подразумевается система.
1
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
24.06.2013, 22:08
Цитата Сообщение от Одиночка Посмотреть сообщение
alex.-93: Второй галочки чего-то не нашел. Но, в общем-то, сам exe-шник запускается нормально из любого места без вопросов. А вот проект без этого dcu-файла не хочет компилироваться. Но может это и поможет. Спасибо. К сожалению, сейчас уже не могу проверить.
Одиночка не будь нубом! Просто копируй в lib dcu от CoolTrayIcon и не парься.

Добавлено через 2 минуты

Не по теме:

И для справки: Про то, что компилятор от Borland компилирует в exe все модули написал ещё Флёнов. Книга "Delphi глазами хакера" рассказ от 1995 года.

0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,900
Записей в блоге: 12
24.06.2013, 22:14
@Одиночка, проверь, прописан ли тот путь, откуда ты копируешь DCU на второй машине, в настройках первой машины (в списке LIB, конкретно).

То, что ты не делал каких-то специальных настроек - не значит, что их не сделал инсталлятор. Если бы пользовались родным инсталлером - то и настройки бы на каждой машине были одинаковы. А так, что там недохакер Вася соизволил крякнуть, а что - нет... Оно даже и самому Васе неизвестно, вот и получается, что на одной машине оно прописалось, а на другой - нет...
1
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
24.06.2013, 22:19  [ТС]
саша40: Прочитай ещё раз все сообщения. exe-файл запускается на обеих машинах из любого места (даже не из папки с проектом) не требуя никаких библиотек.
Проблема в том, что на одной при компиляции требует CoolTrayIcon.dcu в папке проекта, а на другой не требует.
Можно в папку проекта скопировать все файлы всех используемых компонент. Но это не выход.

Добавлено через 4 минуты
UI: Я то понимаю, что ей нужен путь в папку, где установлен этот компонент. Но я ведь на другой машине его не прописывал вручную. Да и свои компоненты когда использую, тоже пути не прописываю. Как сделать, чтобы они автоматом прописывались. Наверное где-то есть какой-то флажок?

Да и, думаю, Build with runtimes packages поможет только для включения библиотек в exe-шник.
0
angstrom
24.06.2013, 22:22
Специальных флагов, насколько знаю, нет. Путь прописывает инсталлятор компонента.
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
24.06.2013, 22:22
Цитата Сообщение от Одиночка Посмотреть сообщение
саша40: Прочитай ещё раз все сообщения. exe-файл запускается на обеих машинах из любого места (даже не из папки с проектом) не требуя никаких библиотек.
Проблема в том, что на одной при компиляции требует CoolTrayIcon.dcu в папке проекта, а на другой не требует.
Можно в папку проекта скопировать все файлы всех используемых компонент. Но это не выход.
Ты на первой этот компонент устанавливал? Дело в том, что на первой он есть в lib папке в директории с Delphi, а на другой машине его там нет, потому что просто не установлен! Exe запустится и будет идеально работать, потому компилированый dcu уже находится в нем. Из него система черпает код для выполнения процедур и функций как из модулей Windows, SysUtils, Classes, Forms, Dialogs, которые являются модулями по умолчанию. Более подробную информацию я не знаю. Если бы программа использовала бы dll, то они бы загружались в операционую память(как Kernel32.dll который там постояно). Наличие dll обязательно и для exe.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33395 / 21505 / 8236
Регистрация: 22.10.2011
Сообщений: 36,900
Записей в блоге: 12
24.06.2013, 22:24
Нет никакого флажка, некоторые компоненты прописывают пути сами, в некоторых надо это делать вручную.
Цитата Сообщение от Одиночка Посмотреть сообщение
Но я ведь на другой машине его не прописывал вручную.
Еще раз: Это мог сделать сам установщик. Версий Дельфи с предустановленными компонентами - over 9000... Один прописывает, другой в ReadMe где-нибудь говорит, чтоб ты прописал (или ты вообще мог его сам установить и не прописать пути). Или у тебя именно один и тот же установщик работал на обеих машинах?
1
angstrom
24.06.2013, 22:24
Цитата Сообщение от саша40 Посмотреть сообщение
Наличие dll обязательно и для exe.
Это зависит как программа вызывает dll .
 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
24.06.2013, 22:27  [ТС]
Ладно. Я понял. Не факт, что на этих машинах пользовались одним инсталлятором. Пропишу путь.
Всем спасибо. Думаю, вопрос решен.
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
24.06.2013, 23:19
Одиночка, дам совет - используйте компоненты (либы) динамически и ложите их в папку с проектом, тогда у вас никогда не будет означенных проблем.
1
angstrom
24.06.2013, 23:49

Не по теме:


Увы, не всегда такой совет удобен. К примеру RxLib имеет десятки файлов и загромождать ими папку с проектом не удобно и таких библиотек компонентов много.

 Аватар для Одиночка
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
24.06.2013, 23:58  [ТС]
Да, мне тоже такой вариант не нравится. Разве что, на крайний случай, собирать все нужные библиотеки при переносе проекта на другую машину. Потому и стараюсь пользоваться, в основном, стандартными компонентами.
А вот интересно, если на другой машине, допустим, этот CoolTrayIcon вообще не установлен. Достаточно будет положить *dcu файл в папку с проектом, чтобы можно было работать с проектом на этой другой машине?
0
angstrom
25.06.2013, 00:06
Достаточно, но в закладках он не появится.
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
25.06.2013, 00:10
Цитата Сообщение от angstrom Посмотреть сообщение
Достаточно, но в закладках он не появится.
У меня так не всегда получалось. Да и не удобно это. И как он в дизайнере будет отображаться, если не установлен?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.06.2013, 00:10
Помогаю со студенческими работами здесь

Assassin's Creed требует наличие файла для запуска
Привет всем!!! за ранее прошу прощения если не там где следует создал тему, так как я далек простой пользователь компьютера...

Патчинг стороннего exe файла в Delphi 7 и XE7
Здравствуй мой любимый форум (форумчане)! 1. У меня есть функция для патча стороннего ехе (уверен что комуто пригодится она...

Отсутствие компонента (File not found: 'JvChart.dcu')
Скачал исходник в нете, запустил выводит ошибку: unit_grafic.pas(7): F1026 File not found: 'JvChart.dcu', что делать?! Заранее...

Подключение стороннего компонента из проекта C#
Здравствуйте. Есть готовый рабочий проект VS2015 с компонентом mpK_Calendar. Как его можно вытащить, чтобы использовать в своих...

Получить текст компонента стороннего приложения
Добрый день! Подскажите, пожалуйста, есть у меня чужая программа, точно знаю что написана на .Net 4.0, в глубине главного окна есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru