|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.03.2012, 23:59 | #1 |
Пользователь
Регистрация: 28.02.2012
Сообщений: 46
|
Чтение русских имен файлов
Есть вот такой код
Код:
Как обучить, может кто знает? Спасибо
"THE ONLY WAY TO GET SMARTER IS BY PLAYING A SMARTER OPPONENT." -- Fundamentals of Chess 1883
|
20.03.2012, 00:02 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
он все видит, это консоль не отображает русский.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
20.03.2012, 00:04 | #3 |
Пользователь
Регистрация: 28.02.2012
Сообщений: 46
|
Я не вывожу, а сразу в файл пишу
это функция fputs режет?
"THE ONLY WAY TO GET SMARTER IS BY PLAYING A SMARTER OPPONENT." -- Fundamentals of Chess 1883
|
20.03.2012, 00:31 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
это wcstombs не работает с русскими символами.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
20.03.2012, 01:01 | #5 |
Пользователь
Регистрация: 28.02.2012
Сообщений: 46
|
Переписал без нее и с функцией fputws
эффект нулевой
"THE ONLY WAY TO GET SMARTER IS BY PLAYING A SMARTER OPPONENT." -- Fundamentals of Chess 1883
|
21.03.2012, 02:36 | #6 |
Пользователь
Регистрация: 28.02.2012
Сообщений: 46
|
что никто с русскими именами файлов не работал?
"THE ONLY WAY TO GET SMARTER IS BY PLAYING A SMARTER OPPONENT." -- Fundamentals of Chess 1883
|
21.03.2012, 04:39 | #7 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
если заглянуть в нутро wcstombs, то видно, что при установках локали по дефолту она просто в цикле копирует младший байт из двубайтового символа. При этом если старший байт не ноль, что и бывает с русскими символами, то сразу идет выход из цикла и функция возвращает -1.
А если установлена локаль типа setlocale(LC_ALL,"RUS"), то идет вызов WideCharToMultiByte и все корректно. |
21.03.2012, 04:51 | #8 |
Пользователь
Регистрация: 28.02.2012
Сообщений: 46
|
На данный момент код примерно такой - но русских нет((
Код:
"THE ONLY WAY TO GET SMARTER IS BY PLAYING A SMARTER OPPONENT." -- Fundamentals of Chess 1883
|
21.03.2012, 05:24 | #9 | |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Цитата:
if (ffd.cFileName[0] != '.') Код:
Последний раз редактировалось EUGY; 21.03.2012 в 05:28. |
|
21.03.2012, 05:31 | #10 | |
Пользователь
Регистрация: 28.02.2012
Сообщений: 46
|
Цитата:
Оказывается нехватало только setlocale(LC_ALL,"RUS"); wcstombs там случайно затесался)) Очень помогли
"THE ONLY WAY TO GET SMARTER IS BY PLAYING A SMARTER OPPONENT." -- Fundamentals of Chess 1883
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Добавление имен файлов в ListBox и их открытие | P@radise | Общие вопросы Delphi | 18 | 07.06.2011 15:12 |
количество имен открытых файлов | Пользователь1 | Microsoft Office Excel | 1 | 24.04.2011 08:53 |
Использование русских имен столбцов в FireBird | Lokos | БД в Delphi | 29 | 27.04.2010 03:30 |
Получить список имен файлов на сайте | syserg | Работа с сетью в Delphi | 8 | 28.03.2010 14:01 |
IdFTP and CharSet (кодировка имен файлов) | X11 | Работа с сетью в Delphi | 2 | 26.01.2010 12:21 |