Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Разделение строки на элементы


Автор: n3m0 12.6.2007, 09:07
Столкнулся с такой проблемой: У меня есть входная строка, первым словом в ней является команда
Всё прекрасно работает если команда с одним параметром
Код

var ms:TStringList;
begin
ms:=TStringList.create;
ms.text:=stringReplace(Msg,' ',#13#10,[rfReplaceAll]);

if  ms[0]= 'REBOOT' then showmessage(ms[0]) else
if ms[0]='MSG' then
begin
 MessageDlg(ms[1], mtError    ,[mbOk], 0);
end;
end;



Но если мне, допустим, нада передать команду "MSG Текст Сообщения", то оно принимает слово "ТЕСТ" - за первый параметр и слово "Сообщение" - за второй
КАк сделать, чтоб текст после первого слова в строке считался весь сразу, без разбиения на отдельный слова???
Код

if ms[0]='MSG' then
begin
 MessageDlg(ms[1], mtError    ,[mbOk], 0);
end;


Точнее, как сделать чтоб в переменной ms[1] содержался весь текст после первого слова?

Зарание Благодарен


Автор: Rodman 12.6.2007, 09:12
а зачем ты тогда бьешь текст на 2 строки?!  Записуй в одну, а потом парсь строку!!!

Автор: n3m0 12.6.2007, 09:16
Вот мне и нада , чтоб Вы помогли мне с парсером. Дайте функцию парсера, чтоб вычленить первый елемент строки, и все остальные запихнуть в Одну отдельную строку

Автор: Rodman 12.6.2007, 09:22
короче есть у тя строка (допустим m[3]), в ней текст "MSG Текст Сообщения"
Код

ShowMessage(copy(m[3], pos(' ', m[3]), Length(m[3])-pos(' ', m[3])));

Автор: n3m0 12.6.2007, 09:31
А как же мне проверить первое слово в строке? ето ж моя команда. После её прочтения , я должен исполнить её параметры. В даном случаи, вывести текст, что после команды "MSG" 

Автор: Rodman 12.6.2007, 09:33
вот так!
Код

ShowMessage(copy(m[3], 1, pos(' ', m[3]));
ShowMessage(copy(m[3], pos(' ', m[3]), Length(m[3])-pos(' ', m[3])));

Автор: n3m0 12.6.2007, 09:51
Спасибо, вроде работает

Автор: Alexeis 12.6.2007, 13:09
Если в качестве параметра используется строка состоящая из нескольких слов разделенных пробелами, то ее необходимо взять в двойные кавычки.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)