Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 16.07.2017
Сообщений: 54

Парсинг текста

31.05.2022, 20:49. Показов 3794. Ответов 66

Студворк — интернет-сервис помощи студентам
Вечера Вам, мудрые филины!
Я любитель в дельфи, но загорелся задачей получить входящий номер астериска.
Подключаюсь по телнету, авторизовываюсь, события вижу вида:

Event: Newstate
Privilege: call,all
Channel: SIP/200-00000181
ChannelState: 5
ChannelStateDesc: Ringing
CallerIDNum: 200
CallerIDName: 200
ConnectedLineNum: 79120000000
ConnectedLineName: 222222_IN_79120000000
Language: ru
AccountCode:
Context: 222222
Exten: 200
Priority: 1
Uniqueid: 1654018920.863
Linkedid: 1654018908.862

Подскажите пожалуйста как мне написать парсинг, чтобы например в memo1 упало только 79120000000.
При этом, соблюдалось условие, что
channel: SIP/200-*
Event: Newstate

По человечески, при входящем на 200 отлавливался номер из ConnectedLineNum:
И падал в memo1
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2022, 20:49
Ответы с готовыми решениями:

Парсинг текста
Хай всем вернее доброй ночи! вот кодес var msg,paramdown1,paramdown2,id:string; begin id :='1g6j'; msg :=id+' >скачать...

Парсинг Текста
Ребят кто поможет сделать правильный парсинг текста вот что есть <td><span class="up_c"> США </span></td> ...

Парсинг текста
{"access_token":"91b81e63e14a5814ac45c7987a37d7561e29e0c178b7f89c33431514642759a65fa784c291632f0781956","expires_in":0,"user_id":285490918}...

66
0 / 0 / 0
Регистрация: 16.07.2017
Сообщений: 54
18.06.2022, 16:10  [ТС]
Студворк — интернет-сервис помощи студентам
Пытливый, Убрал Writeln, указал писать в label и о чудо! получил номер!!
Осталось малое, понять как брать данные не из
MS.LoadFromFile('D:\Work\Cyberforum\5\Lo g.txt');
А из memo1 в текущей форме
0
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
18.06.2022, 16:29
Delphi
1
2
3
4
  MS := TMemoryStream.Create;
  MS.LoadFromFile('D:\Work\Cyberforum\5\Log.txt');
  SetString(S, PAnsiChar(MS.Memory), MS.Size);
  MS.Free;
Это блок предназначен для загрузки всего текста из файла в строку S, а у вас эта строка уже есть Memo1.Text, следовательно вам он не нужен.
Но в ходе увлекательной переписки я так и не увидел ответа на вопрос - как в Memo1.Text собственно текст попадает? Memo1 это визуальный компонент для пользователя и является надстройкой над TStrings, а для обработки текста внутри приложения, без участия пользователя используют TStringList. Использовать Memo для отладки, когда в него при дизайне запихивают текст, это нормальное решение, но вот в рабочем приложении так уже не делается.
0
0 / 0 / 0
Регистрация: 16.07.2017
Сообщений: 54
18.06.2022, 16:35  [ТС]
Пытливый, Через компонент idAMI

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
begin
// настроки и подключения для телнет
  IdAMI.Host:= '192.168.1.5';
  IdAMI.Port:=StrToInt('5038');
  IdAMI.Connect;
// авторизация на AMI
  str:='Action: Login'+CR+'Username: mylogin'+CR+'Secret: mypassword'+CR +LF;
  IdAMI.SendString(str);
  mSendCommands.Lines.Add(str);
// сокращаем колличество событий с 490 до 150
  str:= 'Action: Events'+CR+'Eventmask: call'+CR +LF;  //третее поле
  IdAMI.SendString(str);
  mSendCommands.Lines.Add(str);
  str:= 'Action: Filter'+CR+'ActionID:'+CR+'Operation: Add'+CR+'Filter: (Newstate)'+CR +LF;  //третее поле
  IdAMI.SendString(str);
  mSendCommands.Lines.Add(str);
end;

То есть все, что терминал выдает после подключения к нему, попадает в memo
0
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
18.06.2022, 16:47
Уберите Memo и создайте переменную формы mSendCommands: TStringList;
В конструкторе формы инициализируйте ее:
Delphi
1
mSendCommands := TStringList.Create;
А в коде, вместо:
Delphi
1
mSendCommands.Lines.Add(str);
напишите:
Delphi
1
mSendCommands.Add(str);
и далее, вместо:
Delphi
1
reExt.Subject := s;
напишите:
Delphi
1
reExt.Subject := mSendCommands.Text;
Вот и все изменения.
0
0 / 0 / 0
Регистрация: 16.07.2017
Сообщений: 54
18.06.2022, 17:43  [ТС]
Пытливый, то есть вы предлагаете брать прям из терминала данные, минуя memo? Но я бы хотел оставить действующую конфигурацию, чтобы понимать что именно происходит. При этом, брать не из потока, а именно из моего memo

По сути, MS.LoadFromFile('D:\Work\Cyberforum\5\Lo g.txt'); заменить на load from memo1 если по простому)
0
 Аватар для Пытливый
3765 / 2272 / 706
Регистрация: 29.05.2013
Сообщений: 9,622
18.06.2022, 17:49
Это ваше приложение и вы ему хозяин, я предложил решение без ненужного, на мой взгляд, компонента.
0
0 / 0 / 0
Регистрация: 16.07.2017
Сообщений: 54
18.06.2022, 20:28  [ТС]
Пытливый, идея хорошая, я бы в конце его убрал. Но пока хочется видеть что по факту там появляется) маловато скилухи у меня еще, вот так слепо понимать процессы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.06.2022, 20:28

Парсинг текста в StringList
Приветствую, подскажите пожалуйста, как в StringList найти текст в указанном блоке и теге, и заменить его на новый из Мемо? Блок - это...

Парсинг текста в файле
Здравствуйте выручите пожалуйста , нужна срочно программа работы с текстом сам я новичок в этом деле, вообщем перехожу к делу Нужна...

Парсинг текста между тегами <b></b>
В веб браузере delphi загружена страница как достать все Элементы в теге &lt;b&gt;1204884&lt;/b&gt;...

Парсинг текста: получить значения в скобках
Здравствуйте Имеется строка: Param(123)Param(234)Param()...Param(333) Необходимо вытащить значения 123,234. Пробовал через...

Парсинг текста и назначение цвета, RichEdit
Здравствуйте. Есть такая строка: &quot;^ffcb4aТекст1 \r^ffffffТекст2 \r \r^ffcb4aТекст3 \r^ffffffТекст4 ^00ffffТекст5 \r^ffffffТекст6...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
67
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru