| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- IMPLEMENTATION MODULE Conversions;
- PROCEDURE m2realstr(x : REAL; VAR s : ARRAY OF CHAR);
- EXTERNAL;
- PROCEDURE m2strreal(VAR s : ARRAY OF CHAR; VAR ok : INTEGER) : REAL;
- EXTERNAL;
- PROCEDURE IntToStr(n : INTEGER; VAR s : ARRAY OF CHAR);
- VAR v : INTEGER;
- i, k : CARDINAL;
- tmp : ARRAY [0 .. 31] OF CHAR;
- BEGIN
- IF n = 0 THEN
- s[0] := "0"; s[1] := CHR(0)
- ELSE
- IF n < 0 THEN v := -n ELSE v := n END;
- i := 0;
- WHILE (v > 0) AND (i <= HIGH(tmp)) DO
- tmp[i] := CHR(ORD("0") + (v MOD 10));
- v := v DIV 10;
- INC(i)
- END;
- k := 0;
- IF n < 0 THEN s[k] := "-"; INC(k) END;
- WHILE (i > 0) AND (k <= HIGH(s)) DO
- DEC(i);
- s[k] := tmp[i]; INC(k)
- END;
- IF k <= HIGH(s) THEN s[k] := CHR(0) END
- END
- END IntToStr;
- PROCEDURE CardToStr(n : CARDINAL; VAR s : ARRAY OF CHAR);
- VAR v : CARDINAL;
- i, k : CARDINAL;
- tmp : ARRAY [0 .. 31] OF CHAR;
- BEGIN
- IF n = 0 THEN
- s[0] := "0"; s[1] := CHR(0)
- ELSE
- v := n; i := 0;
- WHILE (v > 0) AND (i <= HIGH(tmp)) DO
- tmp[i] := CHR(ORD("0") + (v MOD 10));
- v := v DIV 10;
- INC(i)
- END;
- k := 0;
- WHILE (i > 0) AND (k <= HIGH(s)) DO
- DEC(i);
- s[k] := tmp[i]; INC(k)
- END;
- IF k <= HIGH(s) THEN s[k] := CHR(0) END
- END
- END CardToStr;
- PROCEDURE RealToStr(x : REAL; VAR s : ARRAY OF CHAR);
- BEGIN
- m2realstr(x, s)
- END RealToStr;
- PROCEDURE StrToInt(s : ARRAY OF CHAR; VAR n : INTEGER) : BOOLEAN;
- VAR i : CARDINAL;
- neg, seen : BOOLEAN;
- v : INTEGER;
- BEGIN
- n := 0; i := 0; neg := FALSE; seen := FALSE; v := 0;
- IF (i > HIGH(s)) OR (s[i] = CHR(0)) THEN RETURN FALSE END;
- IF s[i] = "-" THEN neg := TRUE; INC(i)
- ELSIF s[i] = "+" THEN INC(i)
- END;
- WHILE (i <= HIGH(s)) AND (s[i] >= "0") AND (s[i] <= "9") DO
- v := v * 10 + (ORD(s[i]) - ORD("0"));
- seen := TRUE;
- INC(i)
- END;
- IF NOT seen THEN RETURN FALSE END;
- IF (i <= HIGH(s)) AND (s[i] # CHR(0)) THEN RETURN FALSE END;
- IF neg THEN n := -v ELSE n := v END;
- RETURN TRUE
- END StrToInt;
- PROCEDURE StrToCard(s : ARRAY OF CHAR; VAR n : CARDINAL) : BOOLEAN;
- VAR i : CARDINAL;
- seen : BOOLEAN;
- v : CARDINAL;
- BEGIN
- n := 0; i := 0; seen := FALSE; v := 0;
- WHILE (i <= HIGH(s)) AND (s[i] >= "0") AND (s[i] <= "9") DO
- v := v * 10 + (ORD(s[i]) - ORD("0"));
- seen := TRUE;
- INC(i)
- END;
- IF NOT seen THEN RETURN FALSE END;
- IF (i <= HIGH(s)) AND (s[i] # CHR(0)) THEN RETURN FALSE END;
- n := v;
- RETURN TRUE
- END StrToCard;
- PROCEDURE StrToReal(VAR s : ARRAY OF CHAR; VAR x : REAL) : BOOLEAN;
- VAR ok : INTEGER;
- BEGIN
- x := m2strreal(s, ok);
- RETURN ok # 0
- END StrToReal;
- END Conversions.
|