Как этот пример? Он парсирует текст из поле редактирования с именем Edit1 и помещает полученные числа с список с именем Listbox1:
procedure TForm1.Button1Click(Sender: TObject);var Stream : TStream ;s : string ;beginStream := TMemoryStream.Create ;try{ получаем текст области редактирования и помещаем его в поток }s := Edit1.Text ;Stream.WriteBuffer( s[ 1 ], length( s ) ) ; { сбрасываем стартовую позицию потока и создаем парсер }Stream.Position := 0 ;with TParser.Create( Stream ) do try{ "добываем" числа и добавляем их в список }while Token <> toEOF do beginCheckToken( toInteger ) ; { возбуждаем исключение, если не toInteger }Listbox1.Items.Add( IntToStr( TokenInt ) ) ;NextToken ;end ;finallyFree ;end ;finallyStream.Free ;end ;end; |
Как вы можете видеть, бОльшая часть кода тривиальна: работа с потоком, его создание и освобождение, и парсер, естественно, с обработкой ошибок<g>. CheckToken проверяет, является ли текущий признак ожидаемым, и, если нет, генерирует исключительную ситуацию. В нашем случае мы ищем целые (toInteger), и читаем их из TParser.TokenInt. Просто!
Mike Scott. [000666]