powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Какой извращенец писал MessageBoxW?
25 сообщений из 196, страница 5 из 8
Какой извращенец писал MessageBoxW?
    #39485798
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rbDima Tпропущено...

Ты это на компе пиши , а не на своих девайсах. Там делов на полчаса-час: заполнить массив char значениями 1...255, отконвертировать в wchar_t с помощью MultiByteToWideChar , вывести в консоль что получилось и скопипастить в код в виде
Код: plaintext
1.
2.
3.
4.
5.
wchar_t table1251[256] = {0, ....};

wchar_t convert1251(unsigned char v) {
   return table1251[v];
}


дальше берешь по одному символу в 1251 и конвертируешь с помощью convert1251().

Я и пишу на компе, но запустить на нем не могу.Как ты думаешь, зачем на сайте Microsoft лежит эмулятор PocketPC с WinCE?
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39485815
Фотография Невезучий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devSergey_rbпропущено...


Я и пишу на компе, но запустить на нем не могу.Как ты думаешь, зачем на сайте Microsoft лежит эмулятор PocketPC с WinCE?
Толку с него, если прога на одном терминале работает, а на другом нет.
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39485879
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rbХорошо тому , у кого есть отладчик, а если вместо отладчика MessageBox с абракадаброй
вместо русских букв, то задача становится не такой простой.

О чём ты? Где в сообщении "MultibyteToWideChar() returned %d, error code %d" ты видишь
русские буквы?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487128
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я что-то не понимаю

Беру один символ , перевожу в hex и получаю FFFFFFCF
Код: plaintext
1.
2.
		wsprintf(t2, L" hex = %X",  str[i]);		
       ::MessageBoxW(NULL, t2, L"cp1251toUtf8", MB_ICONEXCLAMATION | MB_OK);




Беру численный эквивалент, получаю -49
Код: plaintext
1.
2.
		wsprintf(t2, L" hex = %d",  str[i]);		
       ::MessageBoxW(NULL, t2, L"cp1251toUtf8", MB_ICONEXCLAMATION | MB_OK);



Как код символа может быть отрицательным?
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487129
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может это число - какой-то сдвиг вниз, например от 256 или от 127?
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487145
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тип char знаковый, т.е. имеет значения -128 ... 127. Отрицательные хранятся в дополненном виде , т.е. все беззнаковые значения >127 будут выводится как отрицательные, например беззнаковое 255 будет показано как -1.

Перед использованием просто приведи к беззнаковому:
Код: plaintext
1.
wsprintf(t2, L" hex = %X",  (unsigned char)str[i]);
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487162
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TТип char знаковый, т.е. имеет значения -128 ... 127. Отрицательные хранятся в дополненном виде , т.е. все беззнаковые значения >127 будут выводится как отрицательные, например беззнаковое 255 будет показано как -1.

Перед использованием просто приведи к беззнаковому:
Код: plaintext
1.
wsprintf(t2, L" hex = %X",  (unsigned char)str[i]);



Получилось!

А как теперь новый код загнать в hex или в строку?

У меня есть дельфевая таблица перевода в формате:

Код: plaintext
1.
2.
3.
4.
5.
6.
    #127,               // #127
    #208#130,           // #128
    #208#131,           // #129
    #226#128#154,       // #130
    #209#147,           // #131
    #226#128#158,       // #132    
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487169
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rb, ни в unicode, ни в utf8 такого значения (FFFFFFCF) не может быть в принципе. Ты опять где-то накосячил!
Тут программист нужен.
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487185
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rbА как теперь новый код загнать в hex или в строку?
Ничего не понял. Пиши подробнее что делаешь.
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487188
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devSergey_rb, ни в unicode, ни в utf8 такого значения (FFFFFFCF) не может быть в принципе. Ты опять где-то накосячил!
Тут программист нужен.

unsigned char исправил ситуацию, теперь hex = CF и int = 207
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487196
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TSergey_rbА как теперь новый код загнать в hex или в строку?
Ничего не понял. Пиши подробнее что делаешь.

Я пишу функцию конвертации Win1251 в Win1252
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487216
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rbЯ пишу функцию конвертации Win1251 в Win1252
транслит что ли?
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487221
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rbDima Tпропущено...

Ничего не понял. Пиши подробнее что делаешь.

Я пишу функцию конвертации Win1251 в Win1252
Может в юникод? Как я выше предлагал 20629335
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487223
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилSergey_rbЯ пишу функцию конвертации Win1251 в Win1252
транслит что ли?

Описываю ситуацию.
На терминалах стоит WinCE, но с разными кодовыми страницами.
Если кодовая страница 1251, то русский отображается правильно, если стоит кодовая страница 1252, от козябры.

Нужна функция перевода из 1251 в 1252.
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487230
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rbНужна функция перевода из 1251 в 1252.
Sergey_rbИзопропилпропущено...

транслит что ли?

Описываю ситуацию.
На терминалах стоит WinCE, но с разными кодовыми страницами.
Если кодовая страница 1251, то русский отображается правильно, если стоит кодовая страница 1252, от козябры.

Нужна функция перевода из 1251 в 1252.

в 1252 кириллица - отсутствует
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487245
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилSergey_rbНужна функция перевода из 1251 в 1252.
Sergey_rbпропущено...


Описываю ситуацию.
На терминалах стоит WinCE, но с разными кодовыми страницами.
Если кодовая страница 1251, то русский отображается правильно, если стоит кодовая страница 1252, от козябры.

Нужна функция перевода из 1251 в 1252.

в 1252 кириллица - отсутствует

В Лазаре я перевожу в utf8.
Но Лазарь умный, он умеет определять кодировку текста, т.е. если текст не utf8, то перевожу в utf8.
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487354
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rbЕсли кодовая страница 1251, то русский отображается правильно, если стоит кодовая страница
1252, от козябры.

Нужна функция перевода из 1251 в 1252.

Не нужна. Нужна функция перевода 1251 в Unicode. И это MultiByteToWideChar(). А тебе надо
просто правильно её вызывать. А чтобы выяснить что ты сделал неправильно, надо проверять
возвращаемый ею код ошибки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487358
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rbОписываю ситуацию.
На терминалах стоит WinCE, но с разными кодовыми страницами.
Если кодовая страница 1251, то русский отображается правильно, если стоит кодовая страница 1252, от козябры.

Нужна функция перевода из 1251 в 1252.А тупо поменять в настройках терминала кодовую страницу по умолчанию или, на худой конец, поменять значение ключа "1252" в ветке реестра WinCE
Код: plaintext
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
с "c_1252.nls" на "c_1251.nls" не судьба? Обязательно надо программу писать? А о такой функции, как setlocale ты, когда-нибудь, слышал?
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487362
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rbВ Лазаре я перевожу в utf8.
Но Лазарь умный, он умеет определять кодировку текста, т.е. если текст не utf8, то перевожу в utf8.Функции WinAPI не понимают utf8, они понимают unicode. Улавливаешь основную мысль - UNICODE != UTF8 ?
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487370
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovSergey_rbЕсли кодовая страница 1251, то русский отображается правильно, если стоит кодовая страница
1252, от козябры.

Нужна функция перевода из 1251 в 1252.

Не нужна. Нужна функция перевода 1251 в Unicode. И это MultiByteToWideChar(). А тебе надо
просто правильно её вызывать. А чтобы выяснить что ты сделал неправильно, надо проверять
возвращаемый ею код ошибки.


Эту функцию я как только не крутил.
Но на одной кодировке (1251) она правильно выдает русские буквы, на кодировке 1252 выдает пустоту.
Можно поиграться с первым параметром, но либо пустота, либо квадратики.
Если первым параметром поставить 1252 то выдает абракадабру, которую я и пытаюсь русифицировать
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487374
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rbDimitry Sibiryakovпропущено...

Не нужна. Нужна функция перевода 1251 в Unicode. И это MultiByteToWideChar(). А тебе надо
просто правильно её вызывать. А чтобы выяснить что ты сделал неправильно, надо проверять
возвращаемый ею код ошибки.


Эту функцию я как только не крутил.
Но на одной кодировке (1251) она правильно выдает русские буквы, на кодировке 1252 выдает пустоту.
Можно поиграться с первым параметром, но либо пустота, либо квадратики.
Если первым параметром поставить 1252 то выдает абракадабру, которую я и пытаюсь русифицировать
Так делал 20583452 ? Что получилось?
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487378
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devSergey_rbОписываю ситуацию.
На терминалах стоит WinCE, но с разными кодовыми страницами.
Если кодовая страница 1251, то русский отображается правильно, если стоит кодовая страница 1252, от козябры.

Нужна функция перевода из 1251 в 1252.А тупо поменять в настройках терминала кодовую страницу по умолчанию или, на худой конец, поменять значение ключа "1252" в ветке реестра WinCE
Код: plaintext
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
с "c_1252.nls" на "c_1251.nls" не судьба? Обязательно надо программу писать? А о такой функции, как setlocale ты, когда-нибудь, слышал?

Нет на складе специалистов, которые поменяют реестр.

setlocale почему-то не линкуется,
#include <locale.h> прописал
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487381
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey_rbМожно поиграться с первым параметром, но либо пустота, либо квадратики.

Иди в Лего поиграйся. Тут программист нужен.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487386
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TSergey_rbпропущено...


Эту функцию я как только не крутил.
Но на одной кодировке (1251) она правильно выдает русские буквы, на кодировке 1252 выдает пустоту.
Можно поиграться с первым параметром, но либо пустота, либо квадратики.
Если первым параметром поставить 1252 то выдает абракадабру, которую я и пытаюсь русифицировать
Так делал 20583452 ? Что получилось?

Как я и писал, при первом параметре 1252 выдает количество перекодированных символов, при 1251 выдает 0 и соответственно пустой текст.
...
Рейтинг: 0 / 0
Какой извращенец писал MessageBoxW?
    #39487387
Sergey_rb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovSergey_rbМожно поиграться с первым параметром, но либо пустота, либо квадратики.

Иди в Лего поиграйся. Тут программист нужен.


Так я здесь и спрашиваю совет программистов.
...
Рейтинг: 0 / 0
25 сообщений из 196, страница 5 из 8
Форумы / C++ [игнор отключен] [закрыт для гостей] / Какой извращенец писал MessageBoxW?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]