From fbb5dec9a97db334a5d888543f4788ff741afedb Mon Sep 17 00:00:00 2001 From: Mikhalkovich Stanislav Date: Sat, 17 May 2025 19:34:33 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D0=BD=D0=B5=D1=88=D0=BD=D0=B8=D0=B9=20Be?= =?UTF-8?q?tween?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/Lib/PABCSystem.pas | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/bin/Lib/PABCSystem.pas b/bin/Lib/PABCSystem.pas index 1eeb615f3..a1a5cd7cb 100644 --- a/bin/Lib/PABCSystem.pas +++ b/bin/Lib/PABCSystem.pas @@ -2334,8 +2334,10 @@ function Pred(x: uint64): uint64; ///-- function Pred(x: boolean): boolean; -/// Возвращает True, если значение val находится между a и b включительно (a ≤ val ≤ b) +/// Возвращает True, если значение val находится между a и b включительно function InRange(val, a, b: T): boolean; where T: IComparable; +/// Возвращает True, если значение val находится между a и b (включительно) независимо от порядка a и b +function Between(val, a, b: T): boolean; where T: IComparable; /// Меняет местами значения двух переменных procedure Swap(var a, b: T); /// Возвращает True, если достигнут конец строки @@ -10684,12 +10686,21 @@ begin Result := char(integer(x)-n); end; -/// Возвращает True, если значение val находится между a и b включительно (a ≤ val ≤ b) +/// Возвращает True, если значение val находится между a и b включительно function InRange(val, a, b: T): boolean; where T: IComparable; begin Result := (val.CompareTo(a) >= 0) and (val.CompareTo(b) <= 0); end; +/// Возвращает True, если значение val находится между a и b (включительно) независимо от порядка a и b +function Between(val, a, b: T): boolean; where T: IComparable; +begin + if a.CompareTo(b) > 0 then + Result := (val.CompareTo(b) >= 0) and (val.CompareTo(a) <= 0) + else + Result := (val.CompareTo(a) >= 0) and (val.CompareTo(b) <= 0); +end; + procedure Swap(var a, b: T); begin var v := a; @@ -14487,7 +14498,7 @@ begin Result := Self.Split(|oldStr|, count+1, System.StringSplitOptions.None).JoinToString(newStr); end; -/// Возвращает True если значение находится между двумя другими +/// Возвращает True если строка находится между двумя другими (лексикографическое сравнение) function Between(Self: string; a, b: string): boolean; extensionmethod; begin Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a);