Форум: "Прочее";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
ВнизНеправильная работа "GetShortPathName" Найти похожие ветки
← →
Piter © (2006-09-23 19:59) [0]Столкнулся с необъяснимым фактом... У удаленного пользователя неправильно отрабатывает функция GetShortPathName. Вот такой путь к файлу:
F:\Music\Mus2\Pink Floyd\Tribute To Pink Floyd\London Philharmonic Orchestra - Plays The Music Of Pink Floyd\00. The London Philharmonic Orchestra - Plays The Music Of Pink Floyd.m3u
Почему-то преобразовывается в путь:F:\Music\Mus2\Pink Floyd\TRIBUT~1\LONDON~1\00THEL~1.M3U
В результате, получается лажа какая-то... Почему "Pink Floyd" не преобразовался? Эта папка явно не соответствует стандарту 8:3.
С этим пробелом моя программа начинает сбоить.
Система: WinXP SP2, файловая система: NTFS.
Принимаются любые догадки и способы обхода проблемы.
← →
Piter © (2006-09-23 20:04) [1]при этом на своем компьютере я пытался эмулировать такую ситуацию... У меня все ок, данный путь (только с диском E:) у меня получается в виде:
"E:\Music\Mus2\PINKFL~1\TRIBUT~1\LONDON~1\00THEL~1.M3U"
что правильно...
Не могу ничего представить, кроме как ошибки в реализации функции GetShortPathName в системе у удаленного пользователя...
Само преобразование достаточно тривиально в программе:LenS := GetShortPathName(PChar(FilePath), PChar(ShortFilePath), 0);
SetLength(ShortFilePath, LenS);
LenS := GetShortPathName(PChar(FilePath), PChar(ShortFilePath), LenS);
SetLength(ShortFilePath, LenS);
← →
Desdechado © (2006-09-23 20:09) [2]а зачем эти махинации? не удобнее ли с длинными именами работать?
← →
Alx2 © (2006-09-23 20:12) [3]>Piter © (23.09.06 20:04)
В коде ошибки, возвращаемом функцией, подсказок нет?
← →
Piter © (2006-09-23 20:27) [4]Desdechado © (23.09.06 20:09) [2]
не удобнее ли с длинными именами работать?
при перехвате консольного вывода - не удобнее
Alx2 © (23.09.06 20:12) [3]
В коде ошибки, возвращаемом функцией, подсказок нет?
и какая функция по твоему возвращает ошибку?
← →
Alx2 © (2006-09-23 20:31) [5]>Piter © (23.09.06 20:27) [4]
Сам же писал:
>Принимаются любые догадки и способы обхода проблемы.
>и какая функция по твоему возвращает ошибку?
Вестимо, GetLastError?
Я задал вопрос, потому-что в MSDN не нашел никаких намеков на "особые случаи", кроме этого. Но ведь от чего-то отталкиваться надо? :)
← →
default © (2006-09-23 20:32) [6]щаз кто-нибудь придёт и на
> Принимаются любые догадки и способы обхода проблемы.
скажет - сумма не озвучена:):)
← →
Kerk © (2006-09-23 20:33) [7]Сумма не озвучена
← →
Alx2 © (2006-09-23 20:35) [8]>Kerk © (23.09.06 20:33)
>Сумма не озвучена
Напомнило описанных тобой чувашей :)
← →
Kerk © (2006-09-23 20:36) [9]Удалено модератором
← →
Kerk © (2006-09-23 20:42) [10]Ох уж эти чуваши (с)
:)
← →
Furyz © (2006-09-23 20:45) [11]В таких основных функциях ошибок не бывает как правило , возможно разраотчику Pink Floyd как и мне не нравится
← →
Piter © (2006-09-23 21:30) [12]Alx2 © (23.09.06 20:31) [5]
Вестимо, GetLastError?
блин. GetLastError возвращает код ошибки, которая произошла в последней вызываемой функции в этом потоке. Но GetShortPathName отрабатывает нормально, она НЕ ВОЗВРАЩАЕТ ноль. Что вроде как очевидно из приведенного листинга программы и получающихся результатов...
← →
Alx2 © (2006-09-23 22:02) [13]>Piter © (23.09.06 21:30) [12]
Из результатов очевидно, что они некорректные. К сожалению, не могу воспроизвести описанную ситуацию - все вроде корректно отрабатывает. В качестве проверки "корректности отработки" пользовался старой доброй командой dir.
Еинственное, чем еще могу помочь - это то, что но нашел в инете нечто отдаленно похожее на твою проблему.
http://www.experts-exchange.com/Programming/Programming_Languages/Cplusplus/Q_21995516.html
← →
Alx2 © (2006-09-23 22:12) [14]Со второго раза пойти по тому линку у меня не вышло - требует регистрации. Тем не менее, текст обсуждения сдернуть удалось.
← →
Piter © (2006-09-23 22:19) [15]Alx2 © (23.09.06 22:02) [13]
Из результатов очевидно, что они некорректные
но в тоже время очевидно, что результаты есть. ВСЕ подпапки отработаны нормально, а вот эта "Pink Floyd" осталась на месте :(
Остальные 2 поддиректории и имя файла приведены к формату 8:3
← →
Alx2 © (2006-09-23 22:22) [16]>Piter © (23.09.06 22:19) [15]
По линку не ходил? Может, что-то подобное и у тебя?
← →
Piter © (2006-09-23 22:26) [17]как я понял - там вся фишка в спец. кодах, которые при преобразовании заменяются на символы.
У меня, как видно из названия папки, никаких кодов нету.
← →
guav © (2006-09-24 17:14) [18]Вроде существует настройка, которая отключает генерацию коротких имён на НТФС.
← →
Piter © (2006-09-24 20:16) [19]guav © (24.09.06 17:14) [18]
в смысле? И как это может помочь?
← →
guav © (2006-09-24 20:27) [20]> [19] Piter © (24.09.06 20:16)
в смысле - помочь ?
это предположение насчёт причины проблемы - короткое имя не было создано.
← →
Piter © (2006-09-24 21:25) [21]guav © (24.09.06 20:27) [20]
короткое имя не было создано
а-а-а... Понял! А отключать генерацию коротких имен можно для конкретной папки (а внутри папок, чтобы нет??
Тогда это вариант, спасибо!
Интересно, а где это отключение находится? Никогда ничего подобного не видел...
← →
ИА (2006-09-24 22:00) [22]Посмотрите не затесалось ли в \Tribute To Pink Floyd\ русская буковка. GetShortPathName это вроде A а не W.
p.s. есть готовая обертка ExtractShortPathName от Борланда,но там тоже GetShortPathName.
← →
guav © (2006-09-24 22:27) [23]> А отключать генерацию коротких имен можно для конкретной
> папки (а внутри папок, чтобы нет??
Вроде, это глобальная настройка. http://www.google.com.ua/search?hl=ru&q=NtfsDisable8dot3NameCreation
Но, думаю, можно отключить генерацию коротких имён, создать папку Pink Floyd, и перед созданием подпапок опять включить.
Это всего лишь предположение, никогда не отключал генерацию коротких имён и не вызывал GetShortPathName.
← →
Германн © (2006-09-25 00:02) [24]
> ИА (24.09.06 22:00) [22]
>
> Посмотрите не затесалось ли в \Tribute To Pink Floyd\ русская
> буковка.
Точно. Наверняка какой-либо из пробелов или даже все три введены при русской раскладке...
← →
Piter © (2006-09-25 15:33) [25]Германн © (25.09.06 0:02) [24]
Наверняка какой-либо из пробелов или даже все три введены при русской раскладке
а что, пробелы в разных раскладках имеют разные коды?
← →
guav © (2006-09-25 15:52) [26]
> [25] Piter © (25.09.06 15:33)
> а что, пробелы в разных раскладках имеют разные коды?
ага, отличаются в 17ом байте.
← →
Германн © (2006-09-25 17:14) [27]
> а что, пробелы в разных раскладках имеют разные коды?
А ты думал нет?
У меня вот был ноутбук (сперли год назад пока я был в отпуске) так на нем аглицкие символы на клавишах были белые, а русские - красные. Так вот на клавишах со стрелками было по две стрелки! Одна белая, а другая красная!
...
← →
Piter © (2006-09-25 18:16) [28]вы такие шутники - просто пипец, чувство юмора прет из всех щелей. Я не удивлюсь, если окажется, что существует несколько типов пробелов.
← →
clickmaker © (2006-09-25 18:20) [29]
> если окажется, что существует несколько типов пробелов
конечно. Длинный и короткий
← →
Piter © (2006-09-25 19:03) [30]а еще толстый и тонкий?
← →
Плохиш © (2006-09-25 19:12) [31]
> Piter © (25.09.06 19:03) [30]
> а еще толстый и тонкий?
похихикай, похихикай. А получишь в Веб-сервисе $A0 и будешь удивляться, чёй-то прога не работает.
← →
Marser © (2006-09-25 19:37) [32]Удалено модератором
← →
Piter © (2006-09-25 20:08) [33]Плохиш © (25.09.06 19:12) [31]
похихикай, похихикай
Вот и я про это! Бесит блин, шутники все такие. Потом хрен отличишь где правда, где прикол.
← →
Virgo_Style © (2006-09-25 20:10) [34]не все же других бесить, приходится когда-то и самому побеситься
← →
ИА (2006-09-25 23:01) [35]Piter, я, собственно, не шутил.
В этой фразе: "Тributе То Рink Flоyd" 6 русских символов.
← →
Piter © (2006-09-25 23:10) [36]ИА (25.09.06 23:01) [35]
да я понял! Не к тебе обращался, а к остальным шутникам.
← →
Германн © (2006-09-26 03:04) [37]
> Piter © (25.09.06 18:16) [28]
>
> вы такие шутники - просто пипец, чувство юмора прет из всех
> щелей. Я не удивлюсь, если окажется, что существует несколько
> типов пробелов.
>
А если б мы не были ими, мы бы давно разделили бы участь динозавров! :-)
И кстати. Я не шутил по поводу двух стрелок разных цветов на клавишах! Это пошутил кто-то другой, который имел отношение к изготовлению НБ АйРу. :-)
← →
Ketmar © (2006-09-26 03:09) [38]>[28] Piter(c) 25-Sep-2006, 18:16
>Я не удивлюсь, если окажется,
>что существует несколько типов пробелов.
будешь смеяться -- оно таки так. да-да, я опять уйдё в сторону, и не стану пояснять, какие конкретно.
← →
Zeqfreed © (2006-09-26 09:21) [39]> [38] Ketmar © (26.09.06 03:09)
Зачем уходить? :)
http://en.wikipedia.org/wiki/Space_character
← →
wal © (2006-09-26 10:08) [40]Давным-давно, в прошлом веке, когда про виндовс уже слышали, а некоторые даже видели, преподаватель, объясняя азы ДОС-а сказал, что нельзя создать папку/файл, у которого в названии только пробелы. После этого гордого заявления я создал несколько файлов вида #255.#255, был обруган, выдворен из компьютерного класса, преподаватель отобрал зачетку, вернул узе с зачетом ;)
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.044 c