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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2010, 21:48   #1
DenisVoronov
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 29
По умолчанию Разбор строки

Такая ситуация. Сервер отправляет клиенту текст
Код:
<open>c:/folder/ddd.mp3
Клиент должен получить ее и разобрать.
Если в треугольных скобках написано "open" значит открыть файл "c:/folder/ddd.mp3"

Как разобрать такую строку? И примеры читал разбора и парсинга и похожие темы читал. Не пойму все-равно...
Помогите плз....
DenisVoronov вне форума Ответить с цитированием
Старый 16.11.2010, 23:39   #2
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

постарайся сначала сам разбить строку на 2 строки. На '<open>' и 'c:/folder/ddd.mp3'. Уже на 1:4 этого подзадания придёт осознание. Гарантия. Дорого.
r9m вне форума Ответить с цитированием
Старый 17.11.2010, 00:06   #3
DenisVoronov
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 29
По умолчанию

Будет ли верно:
Код:
var
s,key,param:string;
begin
s:=Socket.ReceiveText;
key:=Copy(s,1,6);
param:=Copy(s,7,Pos(' ',s)-1);
if key='<open>' then begin открыть файл param
Вот как-то так........
DenisVoronov вне форума Ответить с цитированием
Старый 17.11.2010, 07:13   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Если команда всегда будет только такого вида, то можно искать символ > - это граница между командой и ее параметром. Иными словами - все что после этого символа это есть параметры, а все что до и плюс сам символ это команда. Уже проще не правда ли?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 17.11.2010, 08:18   #5
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Цитата:
Сообщение от DenisVoronov Посмотреть сообщение
Будет ли верно:
Код:
var
s,key,param:string;
begin
s:=Socket.ReceiveText;
key:=Copy(s,1,6);
param:=Copy(s,7,Pos(' ',s)-1);
if key='<open>' then begin открыть файл param
Вот как-то так........
А если команда будет <close> тогда как?
SERG1980 вне форума Ответить с цитированием
Старый 18.11.2010, 00:44   #6
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Лампочка

1) Проверим есть ли открывающая и закрывающая угловые скобки... Если нет, то возможно полученный текст с ошибками (нарушена структура команды)...

2) Если есть, то копируем текст между открывающей и закрывающей угловыми скобками и ищем есть ли оно в списке возможных команд... Если нет, то возможно полученный текст с ошибками (неизвестная команда)...

3) Если есть, то копируем то что после первой закрывающей угловой скобки (если нужно) и делаем какие-то выводы (соответствующие команде выясненной в предыдущем пункте)...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 18.11.2010, 07:01   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Вариация на тему построения лексического анализатора рассмотрена в журнале при форуме Клуба Программистов. Найти можно на сайте www.procoder.info
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 18.11.2010, 09:52   #8
DenisVoronov
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 29
По умолчанию

Цитата:
Сообщение от SERG1980 Посмотреть сообщение
А если команда будет <close> тогда как?
По всем моим идеям будут команды, которые занимают всего 6 символов с учетом скобок.
Например:
Код:
<open>
<play>
<paus>
<stop>
Доп. параметр будет передаваться только в редких случаях.... Тогда определение переменной "param" надо будет только в том случае, если будет определенный key.
DenisVoronov вне форума Ответить с цитированием
Старый 18.11.2010, 09:59   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

DenisVoronov, давай разъясним ситуацию. Это нужно лично тебе или как задание для препода? То чем ты занимаешься, называется лексический анализ, велосипед изобретен давно и трехколесный и тандем. Если надо тебе - скачал, подключил модуль, настроил и радуешься жизни, если преподу, то конечно придется писать для частного случая.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 18.11.2010, 10:19   #10
DenisVoronov
Пользователь
 
Регистрация: 01.05.2009
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
DenisVoronov,Это нужно лично тебе или как задание для препода? То чем ты занимаешься, называется лексический анализ, велосипед изобретен давно и трехколесный и тандем. Если надо тебе - скачал, подключил модуль, настроил и радуешься жизни, если преподу, то конечно придется писать для частного случая.
Это надо лично мне. Просто я не ас в Delphi.. Поэтому пишу как понимаю....
DenisVoronov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбор задачи Seferus Общие вопросы C/C++ 3 19.09.2010 14:47
Разбор строки... CodeExpert Помощь студентам 3 23.02.2010 18:16
разбор строки на части Wi1D Общие вопросы C/C++ 7 27.12.2009 23:31
разбор текста kinogruppa Microsoft Office Excel 4 26.09.2009 23:42
Разбор строки GPS TIT0 Общие вопросы C/C++ 1 08.03.2009 18:44