|
|
|
API GetShortPathName не всегда корректно работает
|
|||
|---|---|---|---|
|
#18+
Привет всем. Писал программу, где была необходима разархиваиция при помощи WinRAR. Написал, протестировал её на своей машине - все работает. Понес ставить клиентам и на 1 машине из 5 программа работать отказалась (модуль, отвечающий за работу с архивами). Локализовал проблему и оказалось, что во всем виновата АПИшная функция GetShortPathName, которая как раз на этой машине не хочет отрабатывать и возвращает то же длинное имя архива с русскими буквами, что ей и давалось, и соответственно winrar ругается, что архив не найден. Проблемная машина: Win XP SP2, диск NTFS Взял специально написал небольшую програмку для конвертации длинного имени в короткое (файл проекта присоединил). Основной текст такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. И снова у меня работает, а на проблемной машине возваращает такую-же строку, а при повторном запуске (нажатии на кнопку) выдает ошибку что библиотека kernel32.dll не найдена в папке проекта. Посему взял и заменил kernel32 на Win32API во второй строке, после чего ошибки такой не выдаёт больше, однако имя остаётся прежним, как быть подскажите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2006, 08:30 |
|
||
|
API GetShortPathName не всегда корректно работает
|
|||
|---|---|---|---|
|
#18+
А на чем основана такая любовь к коротким именам? Небось сразу будет сказано, что рар не работает с длинными именами? И это утверждение уже проверено? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2006, 09:01 |
|
||
|
API GetShortPathName не всегда корректно работает
|
|||
|---|---|---|---|
|
#18+
1. Почитай про SYS(2014) - помогает уложиться в длину командной строки 2. может быть проблема из-за пробелах в путях так не сработает: rar a docs c:\Мои документы\*.* а так сработает: rar a docs "c:\Мои документы\*.*" т.е. все параметры которые теоретически могут содержать пробелы надо в двойные кавычки у rar.exe (который с WinRAR идет) проблем с длинными именами нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2006, 09:48 |
|
||
|
API GetShortPathName не всегда корректно работает
|
|||
|---|---|---|---|
|
#18+
Собственно, если необходима только разархивация, то можно воспользоваться функциями из unrar.dll. У меня прекрасно работает и с длинными путями и с русскими названиями. Да и winrar не нужно с собой таскать, и лицензионная чистота соблюдается ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2006, 09:18 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=235&tid=1590795]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 260ms |
| total: | 374ms |

| 0 / 0 |
