...можно ли с помощью TParser "вытащить" из строки
целочисленные значения, разделенные между собой пробелом, например, из строки
"345 998 223 546 777" получить пять чисел?
Как этот пример? Он парсирует текст из поле редактирования с именем Edit1 и
помещает полученные числа с список с именем Listbox1:
procedure TForm1.Button1Click(Sender: TObject);
var
Stream: TStream;
s: string;
begin
Stream := TMemoryStream.Create;
try{ получаем текст области редактирования и помещаем его в поток }
s := Edit1.Text;
Stream.WriteBuffer(s[1], length(s));
{ сбрасываем стартовую позицию потока и создаем парсер }
Stream.Position := 0;
with TParser.Create(Stream) dotry{ "добываем" числа и добавляем их в список }while Token <> toEOF dobegin
CheckToken(toInteger); { возбуждаем исключение, если не toInteger }
Listbox1.Items.Add(IntToStr(TokenInt));
NextToken;
end;
finally
Free;
end;
finally
Stream.Free;
end;
end;
Как вы можете видеть, бОльшая часть кода тривиальна: работа с потоком, его
создание и освобождение, и парсер, естественно, с обработкой ошибок<g>.
CheckToken проверяет, является ли текущий признак ожидаемым, и, если нет,
генерирует исключительную ситуацию. В нашем случае мы ищем целые (toInteger), и
читаем их из TParser.TokenInt. Просто!
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Простое использование TParser", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!