|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.08.2015, 02:51 | #1 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 273
|
Символ который приводит Delphi в недоумение
Всем доброго времени суток!
Возникла странная ситуация в понимании и разрешении которой я хотел бы попросить Вас мне помочь. Делаю чтение смсок приходящих на usb модем и их парсинг. До поры до времени все было нормально, но вот понадобилось читать смс от сервиса qiwi содержащее код для привязки электронной почты к кошельку и тут обнаружилась неведомая хрень, заключается она в том что в том месте где в смс указан привязываемый email на том месте где должна быть собака стоит неведомый символ который показывается обычным блокнотом как пробел, а notepadd++ на месте этого символа показывает черную иконку с надписью NUL. Но проблема собственно заключается в том что текстовые компоненты делфи TStringList, TMemo и сторонний TJVMemo пытаясь открыть файл с этим текстом не выводя абсолютно никаких ошибок обрывают текст как раз на месте этого символа и выводят только текст стоящий ДО него. TXT файлик в архиве прилагаю к сообщению. Мысль у меня только одна - что-то с кодировкой, но дальше эту мыль развить как-то не получается... Заранее огромное спасибо за помощь! |
04.08.2015, 03:25 | #2 |
Форумчанин
Регистрация: 31.05.2011
Сообщений: 301
|
Вместо собаки в тексте: #0 и когда мема видит этот символ, то приходит в бешенство и думает, что это конец))) Вобщем для мемы это не отображаемый символ))
|
04.08.2015, 03:34 | #3 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 273
|
Еще я обнаружил что если скопировать в буфер текст из этого файла открыв его в notepad++ и попытаться опять тудаже вставить или в новую вкладку то текст также обрезается... И ладно бы еслибы только мема не отображала, это не было бы проблемой, текст обрезается попадая в ЛЮБОЙ делфи компонент(TStringList, TListBox, TRichEdit итп)... Блин капец как бы это дело обойти, телефон же отображает эту смс...
ДралсяСошибками Подскажите а как вы узнали что там #0? У вас данный символ в каком-то редакторе отображается? Подскажите пожалуйста в каком) |
04.08.2015, 03:36 | #4 |
Форумчанин
Регистрация: 07.11.2011
Сообщений: 161
|
Дело в кодировке. В gsm-кодировке символ #0 это @ в той-же ansi это NUL(в ansi первые 30+ символов управляющие и не отображаются). В обычной смс около 70-140 символов - думаю если обработать её как массив, то это не будет большим преступлением, а саму таблицу сиволов можно глянуть на вики(стандарт GSM 03.38). И не забудь, что придётся учитывать то, что если в тексте есть символ не попадающий под gsm-стандарт, то весь текст кодируется в юникоде.
|
04.08.2015, 04:18 | #5 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 273
|
ДралсяСошибками, DIONISKA
Огромное спасибо! Реально выручили Решил немного иначе - читаю теперь не в стринглист а в стринг и ищу все #0 и заменяю на @ и только потом передаю дальше в стринглист |
04.08.2015, 07:24 | #6 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
04.08.2015, 10:51 | #7 |
фонатик DELPHI
Форумчанин
Регистрация: 14.01.2008
Сообщений: 714
|
Вопрос к автору темы, перед тем как нехорошие (TStringList, TListBox, TRichEdit итп) обрезают текст какими говносишными функциями Вы их читаете с порта?
Можете показать как именно выполняется чтение информации п.с. в какой то теме по сохранению на диск тектса в формате WideChar я уже писал, что юникод это череда символов (0 + код для англ.текста) и (4 + код для русской)
95% сбоев и ошибок приложений, находится в полу метрах от монитора
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
код, который должен открывать файл, находить в нем определенный символ и заменять его на другой, не записывает в файл | Dima-War | Общие вопросы C/C++ | 2 | 14.12.2013 21:35 |
Дана строка.найти в строке символ который встречается только один раз. | Un1q | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 09.12.2013 13:23 |
InvalidateRect не приводит к сообщениям WM_PAINT | Jugger | Win Api | 4 | 21.05.2012 18:07 |
Задача - найти символ, который встречается наименьшее количество раз | inoyvs | C++ Builder | 1 | 14.12.2011 03:24 |
найти символ, который встречается чаще других | Zhasik | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 27.12.2010 08:49 |