Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сокращенное имя файла, Преобразовать в нормальное 
V
    Опции темы
ActioN
Дата 4.5.2006, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 12.4.2005

Репутация: нет
Всего: нет



Есть файл который находится здесь: C:\Program Files\my test file.txt. ParamStr(1) возвращает C:\Progra~1\MYTEST~1... Как преобразовать путь и имя файла в нормальный вид? Функция ExpandFileName не помагает, она только путь к файлу делает нормальным, а имя файла остается сокращенным.
Нашел вот такой вариант, но неужели ничего проще нету?smile
Код

    TSearchRec SearchRec;
    FindFirst(ParamStr(1),faAnyFile,SearchRec);
    String fName = ExtractFilePath(ExpandFileName(ExtractFileName(ParamStr(1))))+SearchRec.Name;
 
PM MAIL WWW   Вверх
Romikgy
Дата 4.5.2006, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Цитата(ActioN @  3.5.2006,  23:00 Найти цитируемый пост)
C:\Program Files\my test file.txt

это командная строка , тлько где параметры?
тест или файл тхт? 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
DigitalDummy
  Дата 4.5.2006, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 7.4.2006
Где: В подвале шоколад ной фабрики.

Репутация: нет
Всего: 2



Цитата(ActioN @  4.5.2006,  00:00 Найти цитируемый пост)
неужели ничего проще нету?


Насколько мне известно, ничего проще нету, чем вызвать нужные API функции и вызов всего этого "завернуть" в свою функцию.
Но, по сути это получится тоже самое, что и приведённый Вами пример, потому что для получения полного имени файла средствами API надо использовать функцию FindFirstFile.

В идеале же, если программа разрабатывается для Windows 2000, XP или чего повыше, я бы рекомендовал использовать всё те же API функции для получения данных о путях и именах файлов таким образом, чтобы в программе участвовали только длинные имена файлов и папок. Может быть, даже, в Unicode формате. 
PM WWW   Вверх
likehood
Дата 4.5.2006, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 1
Всего: 24



Как передаются параметры командной строки? Если так, то все должно работать:
Код

myprog.exe "C:\Program Files\my test file.txt"
 
PM MAIL   Вверх
SergeCpp
Дата 4.5.2006, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: нет
Всего: 124



PM MAIL WWW ICQ   Вверх
ActioN
Дата 5.5.2006, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 12.4.2005

Репутация: нет
Всего: нет



Romikgy, несовсем Вас понял.
DigitalDummy, учтем.
baronp, проблема в том, что моя программа асоциирована с некоторым типом файла. Этот файл находится (к примеру) в вышеуказанной папке /Program Files/... и при двойном клике на нем из проводника запускается программа и узнается имя запускаемого файла.
SergeCpp, в MSDN написано: Client: Requires Windows XP, Windows 2000 Professional, Windows Me, or Windows 98. То есть на Windows 95 программа, используемая эту функцию не запустится? 
PM MAIL WWW   Вверх
DigitalDummy
Дата 5.5.2006, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 7.4.2006
Где: В подвале шоколад ной фабрики.

Репутация: нет
Всего: 2



Цитата(ActioN @  5.5.2006,  00:18 Найти цитируемый пост)
То есть на Windows 95 программа, используемая эту функцию не запустится?

 smile В том то всё и дело, что в Windows 95 данная функция не реализована. То есть, для этой системы придётся свою функцию писать, как я уже говорил выше. Но если Вам не нужна поддержка работы вашей программы в этой системе, то мучаться не стоит. В этом случае, GetLongPathName() лучший выбор. SergeCpp верно подсказал. 
PM WWW   Вверх
ActioN
Дата 6.5.2006, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 12.4.2005

Репутация: нет
Всего: нет



DigitalDummy, спасибо, понял 
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0618 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.