![]() |
|
|
![]()
|
|
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Есть программа Program.exe. Есть файл File.my. Установлена ассоциативная связь между программой Program.exe и файлами типа *.my. При запуске файла File.my открывается программа Program.exe и заполняется данными из файла. Я хочу в Caption главной формы поместить имя запускаемого файла. В переменной ParamStr(1) имя какого-то другого файла, по всей видимости копии. Где взять имя нужного мне файла с путем нему?
Дополнительный вопрос. Как отображать имя файла, если путь к нему длинный? Что-то наподобие С:\MyFiles\...\Project\File.my. То есть смысл что средняя часть прячется троеточием, при этом общая строка укорачивается. |
|||
|
||||
| MAXIQ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 30.12.2006 Репутация: нет Всего: нет |
extern PACKAGE AnsiString __fastcall ExtractFilePath(const AnsiString FileName);
extern PACKAGE AnsiString __fastcall ExtractFileDir(const AnsiString FileName); Объявлены в файле SysUtils.hpp Может поюзай, по просматривай в отладчике результаты их работы... По крайней мере копия твоего файла создается в директории оригинала и его имя ты уже знаешь. Строку директории с вырезкой середины придется обработать самостоятельно ручками с привязкой к слэшам через призму длины конечной строки, у тебря все-таки в заголовке действительно места не так уж много и строки подворачивать не будешь))) Хотя, можно заголовок отрисовать самому со всеми наваротами, но жизнь слишком коротка)) Не претендую на правоту, просто высказал первое, что в голову пришло. |
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: нет Всего: 14 |
GetCommandLine не? )))
-------------------- |
|||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Эти функции дают не тот результат. Пример использования? Да и аргументы командной строки возвращаются функцией ParamStr, не? Так вот первый аргумент - это exe-приложение, а второй - запускаемый файл, но не тот, по которому я дважды кликнул, а какая-то его копия. |
|||
|
||||
| sawfish |
|
||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 30.7.2008 Где: Новосибирск Репутация: 8 Всего: 8 |
Почему вы так решили?
В ParamStr(1) как раз должно быть имя файла с путем к нему.
Зачем? ИМХО это неудобно. Можно извлечь имя и поместить его в заголовок, а полное (с путем) хранить в отдельной переменной.
|
||||||||
|
|||||||||
| borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
PathCompactPath -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
| Нитонисе |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Потому что я вижу совсем другое название. Или не верить глазам своим?
Так я в заголовок (Caption) и хочу кинуть имя файла. Только вот оно не соответствует тому файлу, который я запустил.
Мне нужен не исполняемый файл exe, а ассоциированный с ним файл моего типа. Он в ParamStr(1). И хотя имя у него не такое, как у того, что я запускаю, если сохранить этот файл, то изменения произойдут и в том, который я запускал. |
||||
|
|||||
| sawfish |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 30.7.2008 Где: Новосибирск Репутация: 8 Всего: 8 |
Видимо, ТС имел ввиду файл File.my (см. первое сообщение).
Добавлено через 5 минут и 17 секунд А в ParamStr(1) может возвращаться сокращенное имя (с тильдами). Тогда:
|
|||
|
||||
| borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 18 Всего: 135 |
из этого
можно сделать вывод, что нужен exe (executable == запускаемый). А вот на эту фразу
смотрел минут 5 и ничего не понял -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Неверный вывод. Запускаемым может быть любой файл. Например "Абракадабра.doc". Что будет в ParamStr(0)? Все очень просто на самом деле. Есть файл File.my. Он ассоциирован с приложением Program.exe. Кликаю (запускаю!) файл File.my - открывается приложение Program.exe и в него загружаются данные из файла File.my. При этом в Caption главной формы помещается ParamStr(1). Мне бы хотелось в данном случае там отобразилась надпись "File.my", но нет, там что-то типа "1431~.MY". Поработав с эти файлом я сохраняю изменения. Так вот изменения эти произошли как раз в файле "File.my". То есть получается что File.my и 1431~.MY - это суть один файл. |
|||
|
||||
| sawfish |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 30.7.2008 Где: Новосибирск Репутация: 8 Всего: 8 |
Еще раз напишу.
А в ParamStr(1) может возвращаться сокращенное имя (с тильдами). Тогда:
|
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 25 Всего: 50 |
::GetFullPathName ?
|
|||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
sawfish, спасибо за подсказку, ваша функция решила проблему.
Функция FindFirstFile ищет файл ParamStr(1) и помещает инормацию о нем в структуру WIN32_FIND_DATA. Два поля этой структуры cAlternateFileName и cFileName содержат как раз имя непонятное файла с тильдой и оригинальное название соответственно. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |