|
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
|
|||||||||||
Stringlist и кириллица22.06.2016, 06:32. Показов 3073. Ответов 20
Метки нет (Все метки)
Добрый день!
Имеется служба и обычное приложение, которое может подключаться к этой службе через Socket и передавать сообщения. Таким образом приложение отправляет сообщение, а служба принимает и рассылает всем терминальным пользователям на сервере (через msg). Так-же есть логирование основных моментов: запуск службы,подключение пользователя, сообщение, отключение, остановка службы. Всё логируется на кириллице (русскими буквами) и при открытии лога в блокноте нормально читается, английский текст и цифры тоже нормально логируется, и живёт по соседству с сопровождающими его пояснениями на русском. Но стоит отправить службе что-нибудь русскими буквами-весь файл становится не читаемым (т.е. в кракозябрах кроме цифр и самого сообщения), и продолжает также писАться, а сообщения в логах видны нормально. Т.е. коряво отображается только русский текст, который жёстко зашит в программе. Запись идёт следующим кодом:
Код который сохраняет текст:
my_stroka-сам текст, который приходит службе session-переменная, которая определяет что дополнительно писать к строке Загрузкой файла в stringlist и снова сохранением его я обеспечил добавление новых строк в файл (по другому у меня тоже не выходило) Лог после отправки английского сообщения Кликните здесь для просмотра всего текста
22.06.2016 10:14:55:806 +++Я запустился. Слушаю порт 8090
22.06.2016 10:15:12:592 Ко мне подключился user с IP 192.168.*.* =========Begin========= 22.06.2016 10:15:13:652 Клиент user с IP 192.168.*.* написал сообщение qwerty 22.06.2016 10:15:13:746 Функция вывода отработала без ошибок, что удивительно. 22.06.2016 10:15:14:807 От меня отключился user с IP 192.168.*.* =========END======== 22.06.2016 10:15:39:314 ---Я остановился ======================================== ===== Лог после отправки русского сообщения Кликните здесь для просмотра всего текста
22.06.2016 10:18:34:362 +++Я запустился. Слушаю порт 8090
22.06.2016 10:18:46:156 РљРѕ РјРЅРµ подключился user СЃ IP 192.168.*.* =========Begin========= 22.06.2016 10:18:47:217 Клиент user СЃ IP 192.168.*.* написал сообщение йцукен 22.06.2016 10:18:47:248 Функция вывода отработала без ошибок, что удивительно. 22.06.2016 10:18:48:309 РћС‚ меня отключился user СЃ IP 192.168.*.* =========END======== Есть предположения, что надо что-то со строками в программе сделать, но что? Заранее спасибо!
0
|
|||||||||||
| 22.06.2016, 06:32 | |
|
Ответы с готовыми решениями:
20
StringList в VB Поиск в Stringlist |
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 22.06.2016, 08:24 | |
|
the_maksimka, то есть приход русского текста уродует уже записанный лог? Так не бывает. Разве что вы на самом деле не пишите его в момент вывода строчек а накапливаете где-то. Зачем вам стринглист? Почему в нормальный файл на прямую не пишите? Поясните ещё раз в какой строке записывается Русский текст и как он отправляется и принимается. Отправитель на той же машине?
0
|
|
|
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
|
|
| 22.06.2016, 08:44 [ТС] | |
|
vxg, да, после прихода русского текста весь лог портится и читаются только сами сообщения, но не "сопровождающий" текст.
Я сначала считываю весь лог в стринглист, затем в стринглист добавляю пришедшие строки,и затем снова всё сохраняю. В нормальный файл напрямую у меня не получалось записать-проблемы с кодировками. Функция записи одна и та-же. Разница только в том, на каком языке отправляется текст. Отправитель-хост, приёмник-виртуалка
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 22.06.2016, 09:01 | |
|
the_maksimka, очень странная схема работы с логом. я допускаю что на виртуальной машине может быть другая кодировка и сообщения от нее отображались бы убого но что бы они портили лог... в чем была проблема с кодировками которая заставила вас кувыркаться с стринглистом?
0
|
|
|
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
|
|
| 22.06.2016, 10:35 [ТС] | |
|
vxg, проблема в том, что оно изначально так-же коряво отображалось, даже когда изначально была не служба, а простое приложение (т.е. я изначально сделал приложение, а потом код переносил в службу). И как только я не изворачивался-всё время записывались только кракозябры. Нашёл на каком-то стороннем форуме вариант использования стринглиста. Некоторое время противился, но потом сдался.
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
||||||
| 22.06.2016, 10:40 | ||||||
|
the_maksimka, не знаю как у вас но у меня если я пишу к примеру
0
|
||||||
|
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
|
|||||||
| 23.06.2016, 07:02 [ТС] | |||||||
Но в лог теперь выводится Кликните здесь для просмотра всего текста
21d1ca4
2166f4c =========Begin========= =========END======== Лог вывелся только в корень системного диска, в мою папку (которая существует, но в которой есть кириллица) не захотел. Уже не знаю что ещё можно попробовать.Выложил проект
0
|
|||||||
|
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
|
|
| 23.06.2016, 10:25 [ТС] | |
|
Вместо String использовать AnsiString ?
Вроде немного допилил, и лог стал выводиться по правильному пути Добавлено через 57 минут И всё равно переписывается полностью файл и всё, кроме самого сообщения и чисел, становится не читаемым
0
|
|
|
Супер-модератор
|
|||||||||||
| 23.06.2016, 10:53 | |||||||||||
Сообщение было отмечено the_maksimka как решение
Решение
Обязательно колоться, но есть любимый кактус? Пишем в файл Юникод, читаем в StringList тоже Юникод:
1
|
|||||||||||
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
||||||
| 23.06.2016, 11:43 | ||||||
|
the_maksimka, у меня получилось вывести юникод вот таким вот костылем
по идее если вы сидите в XE и ваша String по факту содержит wchar_t то этот путь подойдет и для вас (в s будет ваша строка, возможно c_str надо будет подать как t_str а size наверное станет Length)
1
|
||||||
|
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
|
|
| 24.06.2016, 09:28 [ТС] | |
|
volvo, работает! Что-то я даже не подумал о таком варианте (с кодировкой).
vxg, попробовал, тоже работает, но в бинарном режиме всё пишется в одну строку, и я разными вариантами пробовал сделать перенос, но что-то не получилось (файл полностью портится). Ваш вариант, на самом деле, более правильный, но в этом случае у меня постоянно возникают проблемы. Добавлено через 1 час 18 минут А это может быть из-за того, что разрабатываю на 10 винде x64, а тестирую на 7 x86 ? Добавлено через 9 минут или службы что-то по своему делают, что даже первый вариант не работает...
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 24.06.2016, 11:45 | |
|
the_maksimka, для разделения строк используйте \n или \r\n.
0
|
|
|
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
|
||||||
| 24.06.2016, 11:49 [ТС] | ||||||
|
vxg, эти символы добавлять непосредственно в конец строки(когда она уже в переменной) или отдельной записью типа
0
|
||||||
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 24.06.2016, 14:50 | |
|
the_maksimka, эти символы добавлять при формировании строки если по нормальному. и кстати так как вы написали оно не выведет юникод
0
|
|
|
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
|
|
| 27.06.2016, 10:11 [ТС] | |
|
vxg, я на делфях переписал-там сразу всё завелось.
Я конечно прошу прощения за свою наглость, тем не менее можете подсказать кодом, как правильно сделать запись, учитывая, что у меня заходит простая юникодовая строка, без символов переноса.
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
||||||
| 27.06.2016, 13:26 | ||||||
Сообщение было отмечено the_maksimka как решение
Решение
the_maksimka
вот так
1
|
||||||
|
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
|
|
| 29.06.2016, 08:45 [ТС] | |
|
vxg,
к сожалению не заработало, пишет вот так 29.06.2016 12:42:12:384 Функция вывода отработала без ошибок, что удивительно. Причём сразу
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
|
| 29.06.2016, 09:21 | |
|
the_maksimka, тот код что написал я работает. покажите свой код который я мог бы запустить без дописывания 1001 модуля и можно будет сказать почему он у вас не работает
0
|
|
|
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
|
|
| 29.06.2016, 09:35 [ТС] | |
|
vxg, в принципе я серверную часть сделал на делфи, там заработало...думаю дальше решать проблему не стоит
0
|
|
|
Модератор
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,463
|
||
| 29.06.2016, 10:09 | ||
|
плюс: работает и ладно минус: прогрессирующее невежество и тиражирование уродства
0
|
||
| 29.06.2016, 10:09 | |
|
Помогаю со студенческими работами здесь
20
Из ListView в StringList Поиск по StringList
Вывести из stringlist
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|