> -- samuelspring писал(а):
> Например, используя StringWriter и StringReader из модуля Streams можно производить генерацию/разбор строк в памяти. Можно работать и с нуль-терминированными строками и с бинарными (символ 0X может встречаться и в середине строки) строками. Для бинарных строк следует использовать GetRaw() вместо Get(), SetRaw() вместо Set() и LEN вместо Strings.Length() соответственно. Используя базовые Writer и Reader можно осуществлять генерацию/разбор файлов на диске.
## Код:
```
MODULE StringsTest;

IMPORT
   Commands, Streams, Strings;

PROCEDURE Test*(context: Commands.Context);
VAR
   w: Streams.StringWriter;
   r: Streams.StringReader;
   s: Strings.String;
   a: ARRAY 32 OF CHAR;
   i: LONGINT;
BEGIN
   context.out.Ln;
   
   NEW(w, 128);
   
   w.String("one");
   w.Char(20X);
   w.Int(1, 0);
   w.Char(20X);
   w.String("two");
   w.Char(20X);
   w.Int(2, 0);
   w.Char(20X);
   
   NEW(s, w.Pos() + 1);
   w.Get(s^);
   NEW(r, Strings.Length(s^) + 1);
   r.Set(s^);
   
   IF r.GetString(a) THEN
      context.out.String(a);
      context.out.Char(20X)
   END;
   IF r.GetInteger(i, FALSE) THEN
      context.out.Int(i, 0);
      context.out.Char(20X)
   END;
   IF r.GetString(a) THEN
      context.out.String(a);
      context.out.Char(20X)
   END;
   IF r.GetInteger(i, FALSE) THEN
      context.out.Int(i, 0);
      context.out.Char(20X)
   END;

   context.out.Ln;
   
END Test;

END StringsTest.

StringsTest.Test ~

SystemTools.Free StringsTest ~
```
