Открыть файл на чтение

Тема в разделе "WASM.WIN32", создана пользователем test896, 27 май 2009.

  1. test896

    test896 New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2009
    Сообщения:
    132
    Всем привет!
    Подскажите как открыть файл на чтение если в имени файла или в пути есть русские буквы?
    Использую API (_lopen), у меня выдает ошибку.
    (прога консольная, кстати FAR тоже не открывает)
    Windows все файлы открывает.
     
  2. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Надо использовать CreateFileW, а не CreateFileA. С CreateFileW можно открыть файл хоть с именем на китайском :).
     
  3. test896

    test896 New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2009
    Сообщения:
    132
    Mika0x65
    CreateFileA работает, если W то не работает.
    Спасибо помогло, конечно не на все файлы, есть файлы в которых имя и путь состоит из пробелов и символов, англ и русских букв --- на эти файл выходит ошибка eax=7bh
    (Error Invalid Name).

    На занятые файлы который Winda не дает доступ eax=20h
    (Error sharing violation)
     
  4. MirrorBlack

    MirrorBlack Алексей

    Публикаций:
    0
    Регистрация:
    21 июн 2008
    Сообщения:
    249
    Адрес:
    Moscow
    test896
    Ну ты прям колдун Кулебякин. То FAR не работает, то CreateFileW.
    Поделись опытом как тебе это удаётся :)
     
  5. test896

    test896 New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2009
    Сообщения:
    132
    MirrorBlack
    Не знаю.
    Вообщем сделал обход по всему диску через FindFirstFile и FindNextFile
    прога консольная и чтоб отображались русские имена файлов на экране в начале проги стоит SetFileApisToOEM.
    Пишу на FASM.
    Все время путаница с этой кодировкой, мож что не так подскажи
     
  6. MirrorBlack

    MirrorBlack Алексей

    Публикаций:
    0
    Регистрация:
    21 июн 2008
    Сообщения:
    249
    Адрес:
    Moscow
    test896
    Выкини это и используй UNICODE.
     
  7. intel_x128

    intel_x128 New Member

    Публикаций:
    0
    Регистрация:
    17 май 2009
    Сообщения:
    345
    Что-то мне подсказывает, что человек юзает FindFirstFileA / FindNextFileA, после которых само-собой CreateFileW работать не будет:)
     
  8. test896

    test896 New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2009
    Сообщения:
    132
    как использовать FindNextFileW ?
    FindNextFileA (путь 'c:\*',0) как будет выгледеть у FindNextFileW?
    Буфер куда помещается имя найденного файла (260 байт) нужно расширять до 32000 ?
     
  9. intel_x128

    intel_x128 New Member

    Публикаций:
    0
    Регистрация:
    17 май 2009
    Сообщения:
    345
    WIN32_FIND_DATAW wfd32_w;

    FindFirstFileW(L"C:\\*", &wfd32_w);
     
  10. test896

    test896 New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2009
    Сообщения:
    132
    intel_x128
    А зачем L - ?
    а на асме будет buf db 'C:\\*',0 ?
     
  11. MirrorBlack

    MirrorBlack Алексей

    Публикаций:
    0
    Регистрация:
    21 июн 2008
    Сообщения:
    249
    Адрес:
    Moscow
    test896
    на асме будет buf db 'C:\\*',0

    Думаю сам скоро над этим посмеёшся
     
  12. test896

    test896 New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2009
    Сообщения:
    132
    так не работает (File not found)
     
  13. MirrorBlack

    MirrorBlack Алексей

    Публикаций:
    0
    Регистрация:
    21 июн 2008
    Сообщения:
    249
    Адрес:
    Moscow
    test896
    Ты серьёзно шутки не понял?
    Однако как всё запущено...
    Во первых воспользуйся поиском формата UNICODE. Во вторых, тебе никто не поможет пока ты не поможеш себе сам. В третьих открывай свои "темы" в ветке для новичков. Ну и в четвёртых - не работает ТВОЯ программа а не функция.
    Ну очччень сомневаюсь что ты со своими знаниями способен обнаружить ошибку в винде.
     
  14. test896

    test896 New Member

    Публикаций:
    0
    Регистрация:
    8 апр 2009
    Сообщения:
    132
    одна критика