Rev 7983 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
7983 | leency | 1 | (* |
8097 | maxcodehac | 2 | BSD 2-Clause License |
7983 | leency | 3 | |
8097 | maxcodehac | 4 | Copyright (c) 2020, Anton Krotov |
5 | All rights reserved. |
||
7983 | leency | 6 | *) |
7 | |||
8 | MODULE In; |
||
9 | |||
8097 | maxcodehac | 10 | IMPORT SYSTEM; |
7983 | leency | 11 | |
12 | |||
8097 | maxcodehac | 13 | CONST |
7983 | leency | 14 | |
8097 | maxcodehac | 15 | MAX_LEN = 1024; |
7983 | leency | 16 | |
17 | |||
8097 | maxcodehac | 18 | VAR |
7983 | leency | 19 | |
8097 | maxcodehac | 20 | Done*: BOOLEAN; |
21 | hConsoleInput: INTEGER; |
||
22 | s: ARRAY MAX_LEN + 4 OF CHAR; |
||
7983 | leency | 23 | |
24 | |||
8097 | maxcodehac | 25 | PROCEDURE [windows, "msvcrt.dll", ""] sscanf (buf: INTEGER; fmt: INTEGER; adr: INTEGER): INTEGER; |
26 | PROCEDURE [windows, "kernel32.dll", ""] GetStdHandle (nStdHandle: INTEGER): INTEGER; |
||
27 | PROCEDURE [windows, "kernel32.dll", ""] ReadConsoleA (hConsoleInput, lpBuffer, nNumberOfCharsToRead, lpNumberOfCharsRead, lpReserved: INTEGER); |
||
7983 | leency | 28 | |
29 | |||
8097 | maxcodehac | 30 | PROCEDURE String* (VAR str: ARRAY OF CHAR); |
31 | VAR |
||
32 | count: INTEGER; |
||
7983 | leency | 33 | |
34 | BEGIN |
||
8097 | maxcodehac | 35 | ReadConsoleA(hConsoleInput, SYSTEM.ADR(s[0]), MAX_LEN, SYSTEM.ADR(count), 0); |
36 | IF (s[count - 1] = 0AX) & (s[count - 2] = 0DX) THEN |
||
37 | DEC(count, 2) |
||
7983 | leency | 38 | END; |
8097 | maxcodehac | 39 | s[count] := 0X; |
40 | COPY(s, str); |
||
41 | str[LEN(str) - 1] := 0X; |
||
42 | Done := TRUE |
||
43 | END String; |
||
7983 | leency | 44 | |
45 | |||
8097 | maxcodehac | 46 | PROCEDURE Int* (VAR x: INTEGER); |
7983 | leency | 47 | BEGIN |
8097 | maxcodehac | 48 | String(s); |
49 | Done := sscanf(SYSTEM.ADR(s[0]), SYSTEM.SADR("%lld"), SYSTEM.ADR(x)) = 1 |
||
50 | END Int; |
||
7983 | leency | 51 | |
8097 | maxcodehac | 52 | |
53 | PROCEDURE Real* (VAR x: REAL); |
||
7983 | leency | 54 | BEGIN |
8097 | maxcodehac | 55 | String(s); |
56 | Done := sscanf(SYSTEM.ADR(s[0]), SYSTEM.SADR("%lf"), SYSTEM.ADR(x)) = 1 |
||
57 | END Real; |
||
7983 | leency | 58 | |
8097 | maxcodehac | 59 | |
60 | PROCEDURE Char* (VAR x: CHAR); |
||
7983 | leency | 61 | BEGIN |
8097 | maxcodehac | 62 | String(s); |
63 | x := s[0] |
||
7983 | leency | 64 | END Char; |
65 | |||
8097 | maxcodehac | 66 | |
7983 | leency | 67 | PROCEDURE Ln*; |
68 | BEGIN |
||
8097 | maxcodehac | 69 | String(s) |
7983 | leency | 70 | END Ln; |
71 | |||
72 | |||
73 | PROCEDURE Open*; |
||
74 | BEGIN |
||
75 | hConsoleInput := GetStdHandle(-10); |
||
76 | Done := TRUE |
||
77 | END Open; |
||
78 | |||
8097 | maxcodehac | 79 | |
7983 | leency | 80 | END In. |