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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2015, 02:51   #1
Crystallon
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 273
По умолчанию Символ который приводит Delphi в недоумение

Всем доброго времени суток!
Возникла странная ситуация в понимании и разрешении которой я хотел бы попросить Вас мне помочь.
Делаю чтение смсок приходящих на usb модем и их парсинг. До поры до времени все было нормально, но вот понадобилось читать смс от сервиса qiwi содержащее код для привязки электронной почты к кошельку и тут обнаружилась неведомая хрень, заключается она в том что в том месте где в смс указан привязываемый email на том месте где должна быть собака стоит неведомый символ который показывается обычным блокнотом как пробел, а notepadd++ на месте этого символа показывает черную иконку с надписью NUL. Но проблема собственно заключается в том что текстовые компоненты делфи TStringList, TMemo и сторонний TJVMemo пытаясь открыть файл с этим текстом не выводя абсолютно никаких ошибок обрывают текст как раз на месте этого символа и выводят только текст стоящий ДО него. TXT файлик в архиве прилагаю к сообщению. Мысль у меня только одна - что-то с кодировкой, но дальше эту мыль развить как-то не получается...
Заранее огромное спасибо за помощь!
Вложения
Тип файла: zip test.zip (200 байт, 14 просмотров)
Crystallon вне форума Ответить с цитированием
Старый 04.08.2015, 03:25   #2
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Вместо собаки в тексте: #0 и когда мема видит этот символ, то приходит в бешенство и думает, что это конец))) Вобщем для мемы это не отображаемый символ))
ДралсяСошибками вне форума Ответить с цитированием
Старый 04.08.2015, 03:34   #3
Crystallon
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 273
По умолчанию

Еще я обнаружил что если скопировать в буфер текст из этого файла открыв его в notepad++ и попытаться опять тудаже вставить или в новую вкладку то текст также обрезается... И ладно бы еслибы только мема не отображала, это не было бы проблемой, текст обрезается попадая в ЛЮБОЙ делфи компонент(TStringList, TListBox, TRichEdit итп)... Блин капец как бы это дело обойти, телефон же отображает эту смс...

ДралсяСошибками
Подскажите а как вы узнали что там #0? У вас данный символ в каком-то редакторе отображается? Подскажите пожалуйста в каком)
Crystallon вне форума Ответить с цитированием
Старый 04.08.2015, 03:36   #4
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

Дело в кодировке. В gsm-кодировке символ #0 это @ в той-же ansi это NUL(в ansi первые 30+ символов управляющие и не отображаются). В обычной смс около 70-140 символов - думаю если обработать её как массив, то это не будет большим преступлением, а саму таблицу сиволов можно глянуть на вики(стандарт GSM 03.38). И не забудь, что придётся учитывать то, что если в тексте есть символ не попадающий под gsm-стандарт, то весь текст кодируется в юникоде.
DIONISKA вне форума Ответить с цитированием
Старый 04.08.2015, 04:18   #5
Crystallon
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 273
По умолчанию

ДралсяСошибками, DIONISKA
Огромное спасибо! Реально выручили
Решил немного иначе - читаю теперь не в стринглист а в стринг и ищу все #0 и заменяю на @ и только потом передаю дальше в стринглист
Crystallon вне форума Ответить с цитированием
Старый 04.08.2015, 07:24   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Подскажите а как вы узнали что там #0? У вас данный символ в каком-то редакторе отображается? Подскажите пожалуйста в каком)
ну, например
Изображения
Тип файла: jpg 280985.jpg (20.0 Кб, 129 просмотров)
Тип файла: jpg 280984.jpg (37.2 Кб, 132 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 04.08.2015, 10:51   #7
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Вопрос к автору темы, перед тем как нехорошие (TStringList, TListBox, TRichEdit итп) обрезают текст какими говносишными функциями Вы их читаете с порта?
Можете показать как именно выполняется чтение информации

п.с. в какой то теме по сохранению на диск тектса в формате WideChar я уже писал, что юникод это череда символов (0 + код для англ.текста) и (4 + код для русской)
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
код, который должен открывать файл, находить в нем определенный символ и заменять его на другой, не записывает в файл 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