| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как задать имя выходного файла |
| Автор: Coder 1.10.2007, 08:03 |
| Мне нужно гибко изменять имя выходного файла, в зависимости от компилируемой версии (определяется через $ifdef) Я проглядел раздел справки Delphi compiler directives (list), но нужной директивы не нашел. Как это сделать другими способами? |
| Автор: fse 1.10.2007, 09:18 |
| Привет! Я думаю, что никак нельзя сделать. Имя выходного файла задаётся в *.dof файле проекта. Там вроде того: [Directories] OutputDir= Я могу посоветовать сделать только отдельную утилитку, которая будет каждую ново-откомпилированную программку сохранять под своим именем. Это можно сделать, если в фоновой утилитке будет искаться твой exe-файл и смотреться на его версию. Напиши подробнее, по каким кретериям должно изменяться имя? |
| Автор: MetalFan 1.10.2007, 10:57 |
| с пом.директивы $E разве что расширение для библиотеки можно указать... а имя файла равно названию проекта... |
| Автор: Coder 1.10.2007, 12:00 |
| fse, слишком накладно. MetalFan, Ну вот и я тоже так думал. Прийдется так же в ручную переименовывать. Тема закрыта. |
| Автор: stab 1.10.2007, 12:35 |
| Coder, если у тебя D2007, там есть Post Build Events, тогда нехитрыми манипуляциями c помощью команд знакомыми нам\мне ещё со времён DOS можно сделать то, что тебе требуется. |
| Автор: Coder 1.10.2007, 15:40 |
| stab, у меня Delphi 7. Когда до D2007 доберусь - обязательно попробую, спасибо. |
| Автор: fse 2.10.2007, 00:18 | ||
| Хм, что ж Коль уж углубляться, то предложу вообще экстра-вариант: Написание простенькой утилитки для 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 2.10.2007, 01:20 | ||||
| fse, я немного развил твою идею. Сейчас имя для переименования берется из файла ParamFile.txt лежащего рядом с EXE файлом. А в этот ParamFile.txt программа сама пишет свое желаемое имя в зависимости от режима:
Вот:
fse, тебе +1 однозначно! Добавлено через 5 минут и 49 секунд сейчас тестирую - штука замечательная! и меню Tools с созможностью писать макросами вообще порадовло! |
| Автор: fse 2.10.2007, 01:56 |
| Coder, тоже не дурно, а ещё, можно сделать, если удобно будет, вот так: В главном модуле пишешь такую псевдо-дериктиву, вроде {ХОЧУ ИМЯ ...} А макросом сообщаешь утилитке имя главного модуля. Утилитка открывает для чтения этот сорс и ищет нашу псевдо-дерективу, на подобии Pos('{ХОЧУ ИМЯ', SourceText). А потом вычленяет то имя, которое хотелось бы екзешке. Можно и в эту сторону подумать п.с. Так по-тихоньку дойдём до полноценного интерпретатора дельфийских сорсов |
| Автор: Coder 2.10.2007, 03:50 | ||||
Да, но тогда прийдется каждый раз это имя заново прописывать. Я думаю сделать так: Создать что-то на подобии Alias файлов для имен EXE. В файле проекта DPR вводим свои директивы для ExeStore:
* - указывает текущую версию. т.е. для изменения выходного имени всего лишь нужно переместить звезду. У ExeStore есть база соответствия версий и названий (Aliases.ini):
Такой файл может быть у каждого проекта свой. Запускаем ExeStore c именем DPR и $EXENAME() |
| Автор: fse 2.10.2007, 06:27 |
| Хм, вполне рабоче! Добавлено через 5 минут Borland что-то не дадумалась! |