From 752d819c1edd4b616e55e06ec15c50cad4505bb6 Mon Sep 17 00:00:00 2001 From: AntKrotov Date: Thu, 5 Oct 2023 19:38:00 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BC=D0=B5=D0=BB=D0=BA=D0=B8=D0=B5=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/KOSDRV/API.ob07 | 2 +- lib/Math/Rand.ob07 | 10 +++++----- lib/Windows/Out.ob07 | 12 +++++++++--- samples/Windows/Console/HelloRus.ob07 | 4 ++-- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/lib/KOSDRV/API.ob07 b/lib/KOSDRV/API.ob07 index 36606e9..22399e4 100644 --- a/lib/KOSDRV/API.ob07 +++ b/lib/KOSDRV/API.ob07 @@ -1,7 +1,7 @@ (* BSD 2-Clause License - Copyright (c) 2018-2022, Anton Krotov + Copyright (c) 2023, Anton Krotov All rights reserved. *) diff --git a/lib/Math/Rand.ob07 b/lib/Math/Rand.ob07 index c13deb6..9c98b03 100644 --- a/lib/Math/Rand.ob07 +++ b/lib/Math/Rand.ob07 @@ -30,7 +30,7 @@ BEGIN END Randomize; -(* Целые какбыслучайные числа до RAND_MAX *) +(* Целые какбыслучайные числа 0..RAND_MAX-1 *) PROCEDURE RandomI* (): INTEGER; CONST a = 630360016; @@ -41,14 +41,14 @@ BEGIN END RandomI; -(* Какбыслучайные числа с плавающей запятой от 0 до 1 *) +(* Какбыслучайные числа с плавающей запятой [0, 1) *) PROCEDURE RandomR* (): REAL; RETURN FLT(RandomI()) / FLT(RAND_MAX) END RandomR; -(* Какбыслучайное число в диапазоне от 0 до l. - Return a random number in a range 0 ... l *) +(* Какбыслучайное число в диапазоне 0..aTo-1 + Return a random number in a range 0..aTo-1 *) PROCEDURE RandomITo* (aTo: INTEGER): INTEGER; RETURN FLOOR(RandomR() * FLT(aTo)) END RandomITo; @@ -57,7 +57,7 @@ END RandomITo; (* Какбыслучайное число в диапазоне. Return a random number in a range *) PROCEDURE RandomIRange* (aFrom, aTo: INTEGER): INTEGER; - RETURN FLOOR(RandomR() * FLT(aTo - aFrom)) + aFrom + RETURN FLOOR(RandomR() * FLT(aTo - aFrom + 1)) + aFrom END RandomIRange; diff --git a/lib/Windows/Out.ob07 b/lib/Windows/Out.ob07 index 5da9fd1..cc70a1a 100644 --- a/lib/Windows/Out.ob07 +++ b/lib/Windows/Out.ob07 @@ -33,10 +33,10 @@ PROCEDURE [windows, "kernel32.dll", ""] GetStdHandle (nStdHandle: INTEGER): INTEGER; -PROCEDURE Char* (x: CHAR); +PROCEDURE CharW* (c: WCHAR); BEGIN - printf1(SYSTEM.SADR("%c"), ORD(x)) -END Char; + WriteConsoleW(hConsoleOutput, SYSTEM.ADR(c), 1, 0, 0) +END CharW; PROCEDURE StringW* (s: ARRAY OF WCHAR); @@ -45,6 +45,12 @@ BEGIN END StringW; +PROCEDURE Char* (c: CHAR); +BEGIN + printf1(SYSTEM.SADR("%c"), ORD(c)) +END Char; + + PROCEDURE String* (s: ARRAY OF CHAR); BEGIN printf2(SYSTEM.SADR("%.*s"), LENGTH(s), SYSTEM.ADR(s[0])) diff --git a/samples/Windows/Console/HelloRus.ob07 b/samples/Windows/Console/HelloRus.ob07 index 5036196..55b3fb4 100644 --- a/samples/Windows/Console/HelloRus.ob07 +++ b/samples/Windows/Console/HelloRus.ob07 @@ -10,8 +10,8 @@ VAR BEGIN str := "Привет!"; Out.StringW(str); Out.Ln; - str[2] := "е"; - str[5] := "д"; + str[0] := "п"; + str[6] := "?"; Out.StringW(str) END main;