![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Короткий путь [D7, Win95/98, WinME, NT4, Win2k, WinXP]
apic © (2006-08-17 17:30:00)Ситуация...
У меня есть список полных имен файлов (путь, имя, расширение), причем файлов может и не быть, просто список путей, ВОПРОС: как мне преобразовать их в короткие имена как в досе. Замечу, что русские пути и файлы винда преобразовывает в какието имены с цифирками, в которых и буков то нет, я это узнал когда изучал скрипты, там это делается легко, всебы нечего, до объектной модели скриптов можно добраться и через делфи с помощью OLE, но дело втом, что WSH возвращает короткое имя только в том случае, если файл существует, а мне нужно получить короткое имя еще до того как этот файл может появиться....
apic (2006-08-18 07:23:00) [1]Извините мужики, до меня хоть позно, но дошло.....
clickmaker (2006-08-17 18:23:00) [2]Да, что мешает?
Возьми путь, разбей на части (папка(и), имя, расширение), урежь каждую до 8 символов, вот тебе и будет короткое имя
Ketmar (2006-08-17 18:17:00) [3]> [13] apic © (17.08.06 18:06)
напиши лучше.
clickmaker (2006-08-17 18:16:00) [4]
> зачем эти уроды из Microsoft, придумали GetShortPathName(),
> если она не хрена не делает
чуть что, сразу MS виноват? Это из серии "кофе на клавиатуру тоже вирус пролил?"
var szShortPath: array[0..MAX_PATH] of char;
GetShortPathName('D:\Program Files\Microsoft SQL Server\80\Tools\Templates', szShortPath, SizeOf(szShortPath));
дает
D:\PROGRA~1\MICROS~4\80\Tools\TEMPLA~1
begin...end (2006-08-17 18:16:00) [5]> apic © (17.08.06 18:06) [13]
> придумали GetShortPathName(), если она не хрена не делает...
Она делает. Если файл существует на диске. А если его на диске нет, то не делает.
Что тут непонятного-то?
apic (2006-08-17 18:06:00) [6]Но винда то это как-то делает, кроме того я знаю, как это делает дос, но дос русские имена не коверкает, а винда их еще и цифирки превращает и в конце концов, зачем эти уроды из Microsoft, придумали GetShortPathName(), если она не хрена не делает...
begin...end (2006-08-17 18:05:00) [7]> apic © (17.08.06 18:02) [10]
У Вас?
clickmaker (2006-08-17 18:03:00) [8]
> Сомневаюсь, что это возможно
кстати, да. Вот у меня есть папки
Microsoft ActiveSync
Microsoft Baseline Security Analyzer
Microsoft Firewall Client
Microsoft Office
Microsoft SQL Server
Microsoft Visual Studio
Microsoft Works
и как генерить имя, если заранее не известно, сколько у меня папок будет с Microsoft начинаться?
apic (2006-08-17 18:02:00) [9]Недогон, что ли?...
begin...end (2006-08-17 17:59:00) [10]> apic © (17.08.06 17:55) [6]
И то, и другое.
apic (2006-08-17 17:58:00) [11]Так я не был пьян?!
Ketmar (2006-08-17 17:57:00) [12]> [0] apic © (17.08.06 17:30)
"до" не получишь. помжно максимум попробовать угадать. и ошибиться.
apic (2006-08-17 17:55:00) [13]begin...end, а можно по подробнее, у меня исходник не верный или это не возможно в принципе...
begin...end (2006-08-17 17:51:00) [14]> apic © (17.08.06 17:30)
> а мне нужно получить короткое имя еще до того как этот файл
> может появиться....
Сомневаюсь, что это возможно.
apic (2006-08-17 17:51:00) [15]Насколько я помню (комп не мой, Делфи не установлен) у это твари один параметр =>, что примерно так:
var
ShortPath:String;
fullLongPath:String;
...
fullLongPath:='c:\winnt\document and settings\cool.txt'; // к примеру
ShortPath:=GetShortPathName(fullLongPath);
clickmaker (2006-08-17 17:46:00) [16]
> Может это я в единственном параметре запутался
может... а как вызывал?
apic (2006-08-17 17:43:00) [17]Извини clickmakerможет быть я был пьян, но я эту функцию раз 5 пробывал, какой путь я ей даю, тот она мне и возвращает, хоть короткий он, хоть длинный, попробуй, если эта тварь выдаст тебе короткий путь, то я еще раз попробую и если у тебя получиться, буть добр вышли вызов этой функции буква в букву... Может это я в единственном параметре запутался...
clickmaker (2006-08-17 17:37:00) [18]
> когда изучал скрипты, там это делается легко, всебы нечего,
> до объектной модели скриптов можно добраться и через делфи
> с помощью OLE
зачем так сложно?
GetShortPathName()