|
|
| ||
ДНН 18.12.20 - 19:47 | Есть внешняя компонента на с++, которая с помощью библиотеки winsock2 запускает прослушку TCP порта. Есть консольный клиент, который тоже на С++. Если с клиента отправить сообщение на кириллице, то в компоненту приходят кракозябры. Где и что нужно добавить, чтобы кириллица корректно обрабатывалась? | ||
acht 1 - 18.12.20 - 19:49 | Это тебе к Гений 1С, он по компонентам C++ специалист. | ||
ДНН 2 - 18.12.20 - 19:50 | (1) ему бы с Visual Studio сначала разобраться) | ||
acht 3 - 18.12.20 - 19:51 | (0) Надо добавлять поддержку уникода и в компоненту и в консольного клиента. 21 век за окном, как никак. | ||
ДНН 4 - 18.12.20 - 19:54 | (3) как ее добавить? | ||
ДНН 5 - 18.12.20 - 19:56 | char msg[256]; int size = recv(newConnection, msg, sizeof(msg), NULL); wchar_t* Data; Data = (wchar_t*)malloc(MaxSizeOfPacket * sizeof(wchar_t)); mbstowcs(Data, msg, MaxSizeOfPacket); вот код получения сообщения с сокета. Что нужно добавить чтобы уникод можно было получать? | ||
mistеr 6 - 18.12.20 - 19:56 | Для начала попробуй chcp в консоли. | ||
ДНН 7 - 18.12.20 - 19:59 | (6) да ты гений! добавил в клиента system("chcp 1251"); и все заработало | ||
ДедМорроз 8 - 18.12.20 - 20:41 | Ну,вы передаёте байты,а символы они ж unicode.
Просто нужно правильно все преобразовывать. | ||
ДНН 9 - 18.12.20 - 22:27 | Не могу через свойство передать строку. В компоненте пишу:
if (TV_VT(varPropVal) != VTYPE_PSTR) return false; m_Ip = TV_STR(varPropVal); m_Ip - мое свойство. Сделал его доступным как для чтения, так и для записи. Тип char*. В 1С пишу: ОбъектКомпоненты.Ip = "127.0.0.1"; Проверяю в отладчике, равно пустой строке.Где ошибся? | ||
Garykom 10 - 18.12.20 - 22:30 | (9) В последней букве логина на мисте )) | ||
Garykom 11 - 18.12.20 - 22:50 | (9) у тебя ВК Native API ?
http://catalog.mista.ru/public/184119/ докрути до "Свойства Первое, что стоит рассмотреть – это инфраструктура свойств. Платформа запрашивает существование свойства методом FindProp" | ||
Garykom 12 - 18.12.20 - 22:58 | (11)+ хотя лучше тут http://catalog.mista.ru/public/484743/
case 2: if(TV_VT(var) == VTYPE_PSTR) { delete[] Prop2; size_t len = std::strlen(var->pstrVal); Prop2 = new char[len + 1]; std::strncpy(Prop2, var->pstrVal, len + 1); break; } else if(TV_VT(var) == VTYPE_PWSTR) { delete[] Prop2; WCHAR_to_char(Prop2, var->pwstrVal); break; } else return false; case 3: | ||
Garykom 13 - 18.12.20 - 22:59 | |||
ДНН 14 - 19.12.20 - 10:56 | Внешняя компонента в бесконечном цикле ожидает новых сообщений от подключенного сокета. Чтобы прервать цикл хочу отправлять команду ClosePort. В компоненте сделал так:
while (true) { int size = recv(newConnection, msg, sizeof(msg), NULL); if (size == -1) { closesocket(newConnection); break; } if (msg == "ClosePort") { break;} wchar_t* Source, * Event, * Data; Source = (wchar_t*)malloc(MaxSizeOfPacket * sizeof(wchar_t)); Event = (wchar_t*)malloc(MaxSizeOfPacket * sizeof(wchar_t)); Data = (wchar_t*)malloc(MaxSizeOfPacket * sizeof(wchar_t)); mbstowcs(Data, msg, MaxSizeOfPacket); wchar_t* ClosePort = L"ClosePort"; if (Data == ClosePort) { break; } Connect->ExternalEvent(L"Test", L"Test", Data); } Однако в условие не попадаю, цикл не прерывается. Отправляю так: char msg1[256]; std::cin.getline(msg1, sizeof(msg1)); send(Connection, msg1, sizeof(msg1), NULL); Что опять не так? | ||
H A D G E H O G s 15 - 19.12.20 - 11:02 | Боже, что за дичь | ||
Кирпич 16 - 19.12.20 - 13:10 | Автор, пройди курс по c++ для чайников, а то ты как Гений1с, ей богу. Пишу чо хочу, а работать оно обязано. | ||
ДНН 17 - 19.12.20 - 19:30 | Последний вопрос. Компонента собрана и под 32х и под 64х, но пока собирал перестали работать свойства и методы на русском. На английском работают. В отладчике выглядит примерно так: ОбъектКомпоненты.Статус
Где что сбилось? | ||
acht 18 - 19.12.20 - 19:33 | Кодировка в файлах | ||
ДНН 19 - 19.12.20 - 19:57 | (18) Где ее поменять В VS 2019? В интернете пишут Файл - расширенные настройки сохранения файлов, но в 2019 версии нет такого | ||
acht 20 - 19.12.20 - 20:11 | (19) В диалоге "File" / "Save ... as" на кнопке "Save" выбрать из выпадающего списка вариант "Save with Encoding" | ||
ДНН 21 - 19.12.20 - 20:15 | (20) Точно. Спасибо. Но я уже сделал как тут написано https://docs.microsoft.com/ru-ru/cpp/build/reference/utf-8-set-source-and-executable-character-sets-to-utf-8?view=msvc-160 | ||
Garykom 22 - 19.12.20 - 21:37 | кажется знаю кто студент который для гения взялся писать )) |
|
Список тем форума |