Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2011, 16:28   #11
StIX-S
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 69
По умолчанию Проблема с UNICODE

Почти разобрался в чем была проблема. Функция ReadFile() видимо работает только с ANSI, так как это не макрос а именно функция, ReadFileW() не существует.

Сделал так:
Код:
#include <windows.h>
#include <stdio.h>

INT main()
{
    HANDLE hFile;
    CHAR szBuffA[1000];
    WCHAR szBuffW[1000], *lpA, *lpB;
    DWORD dwBytesRead;
    BOOL bSkip = FALSE;

    hFile = CreateFileW(L"maps.ini", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if (hFile == INVALID_HANDLE_VALUE) return -1;

    ReadFile(hFile, szBuffA, sizeof(szBuffA)-1, &dwBytesRead, NULL);
    CloseHandle(hFile);
    szBuffA[dwBytesRead] = '\0';
    MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szBuffA, sizeof(szBuffA), szBuffW, sizeof(szBuffW));

    for (lpA = lpB = szBuffW; ; ++lpA)
    {
        if (*lpA == L' ' || *lpA == L'\t') continue;
        if (*lpA == L';' || *lpA == L'.') bSkip = TRUE;
        if (*lpA == L'\n' || *lpA == L'\0')
        {
            bSkip = FALSE;
            if (lpB == szBuffW && *lpA != L'\0') continue;
            *lpB = L'\0';
            wprintf(L"%s\n", szBuffW);
            if (*lpA == L'\0') break;
            lpB = szBuffW;
            continue;
        }
        if (!bSkip) *lpB++ = *lpA;
    }

    return 0;
}
Работает, только есть один косяк, не по формату юникода. т.е. выводит только с форматом %s, а с форматом %S (как должно быть) выводит только первый символ строки. В чем ошибка?
StIX-S вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с чтением файлов в Unicode Xeonc Общие вопросы C/C++ 1 09.11.2010 18:45
мусор в UNICODE X-954377 Общие вопросы C/C++ 2 04.07.2010 15:12
Unicode Pedro Общие вопросы Delphi 8 13.03.2009 10:50
Unicode и Delphi BOBAH13 Общие вопросы Delphi 3 27.09.2008 13:08
Unicode }{UTPUU Общие вопросы Delphi 4 02.04.2007 15:21