Конференция "WinAPI" » Путь к файлу в котром присутствует кириллица [D7, WinXP]
 
  • yaric (30.08.08 23:32) [0]
    Уважаемые Мастера. столкнулся с проблемой которую никак не могу решить. Пишу программу которая в ходе своей работы достает ресурсы(картинки, звук) из архива и испоьзует их. Так вот проблема в том что если архив лежит по пути в котром отсутствуют кириллические символы то все работает нормально.иначе файлы после распаковки из архива просто не находятся...что делать не знаю уже пробовал пользоваться функцией GetShortPathName...но при преобразовании возвращается код ошибки что файл не найден...что делать? Заранее спасибо..
  • KilkennyCat © (30.08.08 23:38) [1]
    Ну и что это за чудо-архив? Как разархивация-то идет?
  • yaric (30.08.08 23:49) [2]
    обычный 7zip. нет на архивирование пенять врядли стоит...разархивирование всегда проходит нормально...а поиск файлов нет...ное сли нужно могу привести код модуля доступа к архиву и распаковки...
  • KilkennyCat © (30.08.08 23:53) [3]

    > ое сли нужно могу привести код модуля доступа к архиву и
    > распаковки...

    зачем? и так ясно, что проблема именно там. ща, схожу за Унтедонфом, и все сам увижу.
  • yaric (30.08.08 23:55) [4]
    Унтедонф это кто?....немного не понятно...как говорил Шура Воробьянинов...объясните пожалуйста Остап Ибрагимович...извини за шутку но все же если можно поподробнее...
  • KilkennyCat © (31.08.08 00:00) [5]
    Универсальный телепатор для отвечающих на форуме.
    Потому как без него приходится клещами вытягивать. Ибо иначе
    > немного не понятно...
  • Anatoly Podgoretsky © (31.08.08 00:06) [6]
    > yaric  (30.08.2008 23:32:00)  [0]

    Надо переходить на Юникод или менять локализацию системы.
  • Anatoly Podgoretsky © (31.08.08 00:06) [7]
    > yaric  (30.08.2008 23:32:00)  [0]

    GetShortPathName тоже надо использовать Юникод версию.
  • yaric (31.08.08 00:10) [8]
    >>Anatoly Podgoretsky
    так дело вcе таки в путях...я правильно понял?
  • yaric (31.08.08 00:11) [9]
    >>Anatoly Podgoretsky
    GetShortPathNameW? или как она называется...а почему сбоит FileExists
    объясните пожалуйста просто хочеться до конца разобраться
  • Германн © (31.08.08 00:38) [10]

    > а почему сбоит FileExists

    А в кавычки заключаешь?
  • yaric (31.08.08 00:56) [11]
    да заключаю все равно не находит ....попробовал GetShortPathNameW
    получаю котроткое имя...теперь находит(спасибо Anatoly Podgoretsky) а раньше нет. Так в чем собственно дело..почему такая ситуация взникла?
  • Anatoly Podgoretsky © (31.08.08 01:01) [12]
    > yaric  (31.08.2008 0:10:08)  [8]

    А я не знаю, что ты понял, я просто телепатировал на вопрос, он смутный, и я не уверен за свой телепатор.
  • Anatoly Podgoretsky © (31.08.08 01:02) [13]
    > yaric  (31.08.2008 0:11:09)  [9]

    FileExists -> FindFirstFileW
  • yaric (31.08.08 01:04) [14]
    итак еще раз...
    1) достаю из ахива файл
    2) пытаюсь его открыть
       а)не находил его если каталог вкотром он лежал содержал в названии кириллицу
       б) пробовал преобразовывать к котроткому пути GetShortPathName не получалось так как эта функция не чего не возвращает а говорит что файл не найден(через getlasterror)
       в) попробовал преобразовывать с помощью GetShortPathName теперь все вопрядке находит...

    в чем дело?
  • yaric (31.08.08 01:05) [15]
    ой опечатка
    в) попробовал преобразовывать с помощью GetShortPathNameW теперь все вопрядке находит...
  • Anatoly Podgoretsky © (31.08.08 01:15) [16]
    > yaric  (31.08.2008 0:56:11)  [11]

    Локализация для не Юникод программ не русская.
  • yaric (31.08.08 01:20) [17]
    т.е. насколько я правильно понял...в процессе локализации (работа функции GetShortPathName) неправильно преобразовывались кирилические символы)?
  • yaric (31.08.08 01:21) [18]
    где об этом можно более подробно почитать...
  • Anatoly Podgoretsky © (31.08.08 01:27) [19]
    > yaric  (31.08.2008 1:20:17)  [17]

    GetShortPathName, она же GetShortPathNameA работает правильно, поскольку это всего лишь заглушка, реально работает GetShortPathNameW но для этого нужно преобразовать из ANSI в Юникод, но правильно система это может сделать только в рамках локализация и если локализация не русская, то и преобразование будет неверное. Спасение только в прямой работе с Юникодом, пока единственная версия Дельфи, которая это умеет - это 2009
  • Anatoly Podgoretsky © (31.08.08 01:28) [20]
    > yaric  (31.08.2008 1:21:18)  [18]

    Ну стандартно MSDN только это монстр, можно также почитать Рихтера и некоторых других авторов, для того чтобы в этом монстре MSDN можно было ориентироваться.
  • yaric (31.08.08 01:48) [21]
    понятно...спасибо большое ...картина мира стала полнее...:)
  • Германн © (31.08.08 02:07) [22]

    > Anatoly Podgoretsky ©   (31.08.08 01:27) [19]


    > пока единственная версия Дельфи, которая это умеет - это
    > 2009

    А она уже есть? А она действительно умеет?
  • Riply © (31.08.08 04:56) [23]
    > [19] Anatoly Podgoretsky ©   (31.08.08 01:27)
    > Спасение только в прямой работе с Юникодом, пока единственная версия Дельфи, которая это умеет - это 2009

    ИМНО - если забыть про VCL, то умеет любая версия Delphi ибо она умеет использовать API и NT функции :)
    Или я что-то не так поняла ?
 
Конференция "WinAPI" » Путь к файлу в котром присутствует кириллица [D7, WinXP]
Есть новые Нет новых   [134435   +33][b:0][p:0.001]