This commit is contained in:
Ivan Sukin 2016-11-11 22:09:21 +00:00 committed by GitHub
commit 2c07d9edc0

View file

@ -634,25 +634,36 @@ Especially Length would become fairly complex.
END ReadLReal; END ReadLReal;
PROCEDURE ReadString* (VAR R: Rider; VAR x: ARRAY OF CHAR); PROCEDURE ReadString* (VAR R: Rider; VAR x: ARRAY OF CHAR);
VAR i: INTEGER; ch: CHAR; VAR i: INTEGER; ch: CHAR; pos: LONGINT;
BEGIN i := 0; BEGIN i := 0; pos := Pos(R);
REPEAT Read(R, ch); x[i] := ch; INC(i) UNTIL ch = 0X REPEAT Read(R, ch); x[i] := ch; INC(i) UNTIL ch = 0X;
x[i] := 0X;
IF ~R.eof THEN Set(R, R.buf.f, pos + i + 1); END;
END ReadString; END ReadString;
PROCEDURE ReadLine* (VAR R: Rider; VAR x: ARRAY OF CHAR); PROCEDURE ReadLine* (VAR R: Rider; VAR x: ARRAY OF CHAR);
VAR i: INTEGER; ch: CHAR; b : BOOLEAN; VAR i: INTEGER; ch: CHAR; b : BOOLEAN; pos: LONGINT; tail: INTEGER;
BEGIN BEGIN
i := 0; i := 0;
b := FALSE; b := FALSE;
pos := Pos(R);
tail := 0;
REPEAT REPEAT
Read(R, ch); Read(R, ch);
IF ((ch = 0X) OR (ch = 0AX) OR (ch = 0DX)) THEN IF ((ch = 0X) OR (ch = 0AX) OR (ch = 0DX)) THEN
IF (ch = 0X) THEN
tail := 1;
ELSE
tail := Strings.Length(Platform.nl);
END;
b := TRUE b := TRUE
ELSE ELSE
x[i] := ch; x[i] := ch;
INC(i); INC(i);
END; END;
UNTIL b UNTIL b;
x[i] := 0X;
IF ~R.eof THEN Set(R, R.buf.f, pos + i + tail); END;
END ReadLine; END ReadLine;
PROCEDURE ReadNum* (VAR R: Rider; VAR x: LONGINT); PROCEDURE ReadNum* (VAR R: Rider; VAR x: LONGINT);