Страница 1 из 1

Путь как в DOS

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

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

Как отобразить этот путь как в DOS

Добавлено: 16 дек 2005, 12:35
Duncon
Ну если чисто отобразить обреж после шистой и допиши ~1, хотя я не совсем понимаю, какой результат тебе нужен??

Добавлено: 16 дек 2005, 12:55
Viktor Zull
Мне нужно перевести путь Windows в Dos, чтобы можно было по этому пути обратиться к файлу.

Если я обрежу и добавлю то что нужно это будет соответствовать реальному пути DOS?

Добавлено: 16 дек 2005, 14:25
Naeel Maqsudov
С большой вероятностью это будет соответствовать. :)

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

Возможно также, что эта функция переобъявлена в Delphi где-нибудь в windows.pas

Добавлено: 16 дек 2005, 18:28
Игорь Акопян
Просто обрезать нельзя, т.к. при наличии нескольких каталогов с именами совпадающими первыми 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