![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Coder |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: 5 Всего: 11 |
Мне нужно гибко изменять имя выходного файла, в зависимости от компилируемой версии (определяется через $ifdef)
Я проглядел раздел справки Delphi compiler directives (list), но нужной директивы не нашел. Как это сделать другими способами? |
|||
|
||||
| fse |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 28.9.2007 Где: г. Рязань Репутация: 1 Всего: 1 |
Привет! Я думаю, что никак нельзя сделать.
Имя выходного файла задаётся в *.dof файле проекта. Там вроде того: [Directories] OutputDir= Я могу посоветовать сделать только отдельную утилитку, которая будет каждую ново-откомпилированную программку сохранять под своим именем. Это можно сделать, если в фоновой утилитке будет искаться твой exe-файл и смотреться на его версию. Напиши подробнее, по каким кретериям должно изменяться имя? |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
с пом.директивы $E разве что расширение для библиотеки можно указать...
а имя файла равно названию проекта... -------------------- There are always someone smarter than you... |
|||
|
||||
| Coder |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: 5 Всего: 11 |
fse, слишком накладно.
MetalFan, Ну вот и я тоже так думал. Прийдется так же в ручную переименовывать. Тема закрыта. |
|||
|
||||
| stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 14 Всего: 48 |
Coder, если у тебя D2007, там есть Post Build Events, тогда нехитрыми манипуляциями c помощью команд знакомыми нам\мне ещё со времён DOS можно сделать то, что тебе требуется.
-------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
| Coder |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: 5 Всего: 11 |
stab, у меня Delphi 7. Когда до D2007 доберусь - обязательно попробую, спасибо.
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Зачем же утилитку, можно компонентик. Компонент после бросания на форму может по таймеру че нить делать, причем можно сделать так, что это все будет делаться только в Disign Time, или по разному вести себя. Так как это сделано в KOL. Там в Disign time зеркала многое творят, создают файлы записывают текущие настройки в файлы, так что все очень даже реально безо всяких дополнительных программ. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| fse |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 28.9.2007 Где: г. Рязань Репутация: 1 Всего: 1 |
Хм, что ж
Коль уж углубляться, то предложу вообще экстра-вариант: Написание простенькой утилитки для Delphi, некое расширение. Coder, и вариант совсем не накладный;) Текст программки:
Лезим в среде Tools->Configure tools... Там нажимаем Add и в форме указываем: Title = Exe storing Program = путь и имя к скомпилированной программе, например C:\Documents and Settings\Sergey\Desktop\ExeStore\ExeStore.exe Parameters = $EXENAME() Теперь что получилось. Когда пишешь проект, то после компиляции в меню Tools жмакаешь наш Exe storing. Приведённая программа его переименует в тот же файл, но с суфиксом текущего времени. Это как пример, а вообще, имя исполняемого файла в проекте утилитке передаётся в параметрах, так что сделать с ним можно что угодно;) p.s. Кстати, меню Tools даёт возможность создания очень полезных вещей! |
|||
|
||||
| Coder |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: 5 Всего: 11 |
fse, я немного развил твою идею. Сейчас имя для переименования берется из файла ParamFile.txt лежащего рядом с EXE файлом.
А в этот ParamFile.txt программа сама пишет свое желаемое имя в зависимости от режима:
Вот:
fse, тебе +1 однозначно! Добавлено через 5 минут и 49 секунд сейчас тестирую - штука замечательная! и меню Tools с созможностью писать макросами вообще порадовло! |
||||
|
|||||
| fse |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 28.9.2007 Где: г. Рязань Репутация: 1 Всего: 1 |
Coder, тоже не дурно, а ещё, можно сделать, если удобно будет, вот так:
В главном модуле пишешь такую псевдо-дериктиву, вроде {ХОЧУ ИМЯ ...} А макросом сообщаешь утилитке имя главного модуля. Утилитка открывает для чтения этот сорс и ищет нашу псевдо-дерективу, на подобии Pos('{ХОЧУ ИМЯ', SourceText). А потом вычленяет то имя, которое хотелось бы екзешке. Можно и в эту сторону подумать п.с. Так по-тихоньку дойдём до полноценного интерпретатора дельфийских сорсов |
|||
|
||||
| Coder |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 13.12.2004 Репутация: 5 Всего: 11 |
Да, но тогда прийдется каждый раз это имя заново прописывать. Я думаю сделать так: Создать что-то на подобии Alias файлов для имен EXE. В файле проекта DPR вводим свои директивы для ExeStore:
* - указывает текущую версию. т.е. для изменения выходного имени всего лишь нужно переместить звезду. У ExeStore есть база соответствия версий и названий (Aliases.ini):
Такой файл может быть у каждого проекта свой. Запускаем ExeStore c именем DPR и $EXENAME() |
||||
|
|||||
| fse |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 28.9.2007 Где: г. Рязань Репутация: 1 Всего: 1 |
Хм, вполне рабоче!
Добавлено через 5 минут Borland что-то не дадумалась! |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |