Путь как в DOS

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Viktor Zull
Сообщения: 117
Зарегистрирован: 10 ноя 2005, 02:00

В DOS длина имен файлов и папок не может превышать 8 символов.
Если длина имени больше 8 символов, то имя отображается сокращенным (Program Files=Progra~1).

Например есть длинный путь к файлу C:\Program Files\ABBYY FileReader\Fine Reader 7\FineReader\ABBYYFineReader.exe.

Как отобразить этот путь как в DOS
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Ну если чисто отобразить обреж после шистой и допиши ~1, хотя я не совсем понимаю, какой результат тебе нужен??
[syntax=Delphi] [/syntax]
Viktor Zull
Сообщения: 117
Зарегистрирован: 10 ноя 2005, 02:00

Мне нужно перевести путь Windows в Dos, чтобы можно было по этому пути обратиться к файлу.

Если я обрежу и добавлю то что нужно это будет соответствовать реальному пути DOS?
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

С большой вероятностью это будет соответствовать. :)

Для правильного преобразования есть функции WinAPI (см справку по Win32 API).
В названии было вроде что-то типа ShortName

Возможно также, что эта функция переобъявлена в Delphi где-нибудь в windows.pas
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

Просто обрезать нельзя, т.к. при наличии нескольких каталогов с именами совпадающими первыми 6-ю символами и длинной более 8-ми, имена в нотации будут приведены к, например, Progra~1 и Progra~2
вот функция (нашёл в хелпе за пару минут)

function ExtractShortPathName(const FileName: string): string;

Description

ExtractShortPathName converts the file name, FileName, to the short 8.3 form. ExtractShortPathName returns an empty string if the file or directory does not exist.

The first parameter, FileName, can be a full path name. For example, ExtractShortPathName would convert the full path name:

C:\Program Files\Borland\Delphi\Bin\Delphi32.exe

to the short form:

C:\Progra~1\Borland\Delphi\Bin\Delphi32.exe
Изображение
Ответить