InRange изменение поведения и внешний

This commit is contained in:
Mikhalkovich Stanislav 2025-05-16 16:57:00 +03:00
parent 04059ab235
commit a914ab6ef5
16 changed files with 109 additions and 35 deletions

View file

@ -15,7 +15,7 @@ internal static class RevisionClass
public const string Major = "3";
public const string Minor = "10";
public const string Build = "3";
public const string Revision = "3626";
public const string Revision = "3627";
public const string MainVersion = Major + "." + Minor;
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;

View file

@ -1,4 +1,4 @@
%COREVERSION%=3
%REVISION%=3626
%MINOR%=10
%REVISION%=3627
%COREVERSION%=3
%MAJOR%=3

View file

@ -0,0 +1,12 @@
begin
// Поведение изменено!! Теперь диапазон [6,2] считается пустым
5.InRange(6,2).Println;
// Универсальная InRange. Должен поддерживаться интерфейс IEnumerable<T>
InRange(5,2,6).Println;
var dt1 := DateTime.Create(2025,04,16);
var dt2 := DateTime.Create(2025,04,29);
var dt3 := DateTime.Now;
InRange(dt2,dt1,dt3).Println;
end.

View file

@ -19,5 +19,5 @@ begin
leaderboard := leaderboard.OrderByDescending(p -> p.Points).ToArray;
Println(leaderboard);
if leaderboard.IsOrderedByDescending(p -> p.Points) then
Println('Теперь рейтинг составлен неверно!');
Println('Теперь рейтинг составлен верно!');
end.

View file

@ -4,6 +4,8 @@
<param name="Keyword" value="Eof">
<param name="Keyword" value="Eoln">
<param name="Keyword" value="Inc">
<param name="Keyword" value="InRange">
<param name="Keyword" value="ObjectToString">
<param name="Keyword" value="Ord">
<param name="Keyword" value="Pred">
<param name="Keyword" value="SeekEof">
@ -34,6 +36,10 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Óâåëè÷èâàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà 1</td></tr>
<tr><td><code><b>procedure</b> Inc(<b>var</b> e: ïåðå÷èñëèìûé òèï; n: integer);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Óâåëè÷èâàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà n</td></tr>
<tr><td><code><b>function</b> InRange&lt;T&gt;(val, a, b: T): boolean; <b>where</b> T: IComparable&lt;T&gt;;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò True, åñëè çíà÷åíèå val íàõîäèòñÿ ìåæäó a è b âêëþ÷èòåëüíî (a ? val ? b)</td></tr>
<tr><td><code><b>function</b> ObjectToString(obj: object): string;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðåîáðàçóåò îáúåêò â ñòðîêîâîå ïðåäñòàâëåíèå</td></tr>
<tr><td><code><b>function</b> Ord(a: öåëîå): öåëîå;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ïîðÿäêîâûé íîìåð çíà÷åíèÿ a</td></tr>
<tr><td><code><b>function</b> Ord(a: ïåðå÷èñëèìûé òèï): integer;</code>

View file

@ -17,6 +17,10 @@
<param name="Keyword" value="IndexMin">
<param name="Keyword" value="IndexOf">
<param name="Keyword" value="Indices">
<param name="Keyword" value="IsOrdered">
<param name="Keyword" value="IsOrderedBy">
<param name="Keyword" value="IsOrderedByDescending">
<param name="Keyword" value="IsOrderedDescending">
<param name="Keyword" value="LastIndexMax">
<param name="Keyword" value="LastIndexMin">
<param name="Keyword" value="LastIndexOf">
@ -97,6 +101,22 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ ýëåìåíòîâ îäíîìåðíîãî ìàññèâà, óäîâëåòâîðÿþùèõ óñëîâèþ</td></tr>
<tr><td><code><b>function</b> Indices&lt;T&gt;(Self: <b>array</b> <b>of</b> T; cond: (T,integer) -&gt;boolean): <b>sequence </b> <b>of</b> integer;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ ýëåìåíòîâ îäíîìåðíîãî ìàññèâà, óäîâëåòâîðÿþùèõ óñëîâèþ</td></tr>
<tr><td><code><b>function</b> IsOrdered&lt;T&gt;(self: <b>array</b> <b>of</b> T): boolean; <b>where</b> T: IComparable&lt;T&gt;;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðîâåðÿåò, îòñîðòèðîâàí ëè ìàññèâ ïî âîçðàñòàíèþ</td></tr>
<tr><td><code><b>function</b> IsOrdered&lt;T&gt;(self: <b>array</b> <b>of</b> T; comparer: IComparer&lt;T&gt;): boolean;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðîâåðÿåò, îòñîðòèðîâàí ëè ìàññèâ â ïîðÿäêå, çàäàííîì êîìïàðàòîðîì comparer</td></tr>
<tr><td><code><b>function</b> IsOrderedBy&lt;T, TKey&gt;(self: <b>array</b> <b>of</b> T; keySelector: T -&gt; TKey): boolean;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðîâåðÿåò, îòñîðòèðîâàí ëè ìàññèâ ïî âîçðàñòàíèþ êëþ÷à</td></tr>
<tr><td><code><b>function</b> IsOrderedBy&lt;T, TKey&gt;(self: <b>array</b> <b>of</b> T; keySelector: T -&gt; TKey;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðîâåðÿåò, îòñîðòèðîâàí ëè ìàññèâ ïî âîçðàñòàíèþ êëþ÷à ñ êîìïàðàòîðîì</td></tr>
<tr><td><code><b>function</b> IsOrderedByDescending&lt;T, TKey&gt;(self: <b>array</b> <b>of</b> T; keySelector: T -&gt; TKey): boolean;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðîâåðÿåò, îòñîðòèðîâàí ëè ìàññèâ ïî óáûâàíèþ êëþ÷à</td></tr>
<tr><td><code><b>function</b> IsOrderedByDescending&lt;T, TKey&gt;(self: <b>array</b> <b>of</b> T; keySelector: T -&gt; TKey;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðîâåðÿåò, îòñîðòèðîâàí ëè ìàññèâ ïî óáûâàíèþ êëþ÷à ñ êîìïàðàòîðîì</td></tr>
<tr><td><code><b>function</b> IsOrderedDescending&lt;T&gt;(self: <b>array</b> <b>of</b> T): boolean; <b>where</b> T: IComparable&lt;T&gt;;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðîâåðÿåò, îòñîðòèðîâàí ëè ìàññèâ ïî óáûâàíèþ</td></tr>
<tr><td><code><b>function</b> IsOrderedDescending&lt;T&gt;(self: <b>array</b> <b>of</b> T; comparer: IComparer&lt;T&gt;): boolean;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðîâåðÿåò, îòñîðòèðîâàí ëè ìàññèâ ïî óáûâàíèþ â ïîðÿäêå, çàäàííîì êîìïàðàòîðîì comparer</td></tr>
<tr><td><code><b>function</b> LastIndexMax&lt;T&gt;(Self: <b>array</b> <b>of</b> T; index: integer): integer; <b>where</b> T: IComparable&lt;T&gt;;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index-1]</td></tr>
<tr><td><code><b>function</b> LastIndexMax&lt;T&gt;(Self: <b>array</b> <b>of</b> T): integer; <b>where</b> T: IComparable&lt;T&gt;;</code>

View file

@ -18,7 +18,7 @@
<tr><td><code><b>function</b> Code(Self: char): integer;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Êîä ñèìâîëà â êîäèðîâêå Unicode</td></tr>
<tr><td><code><b>function</b> InRange(Self: char; a,b: char): boolean;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает True если значение находится между двумя другими</td></tr>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает True если символ находится в диапазоне [a,b]</td></tr>
<tr><td><code><b>function</b> IsDigit(Self: char);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ßâëÿåòñÿ ëè ñèìâîë öèôðîé</td></tr>
<tr><td><code><b>function</b> IsLetter(Self: char): boolean;</code>

View file

@ -35,7 +35,7 @@
<tr><td><code><b>function</b> Downto(Self: integer; n: integer): <b>sequence </b> <b>of</b> integer;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ãåíåðèðóåò ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ äî n â óáûâàþùåì ïîðÿäêå</td></tr>
<tr><td><code><b>function</b> InRange(Self: integer; a,b: integer): boolean;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает True если значение находится между двумя другими</td></tr>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает True если значение находится в диапазоне [a,b]</td></tr>
<tr><td><code><b>function</b> IsEven(Self: integer): boolean;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò, ÿâëÿåòñÿ ëè öåëîå ÷åòíûì</td></tr>
<tr><td><code><b>function</b> IsOdd(Self: integer): boolean;</code>

View file

@ -16,7 +16,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><link rel="StyleSheet" href="../../../default.css">
</HEAD><body><H1>Ìåòîäû ðàñøèðåíèÿ òèïà real</H1>
<table border=0 cellpadding=5><tr><td><code><b>function</b> Between(Self: real; a, b: real): boolean;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает True если значение находится между двумя другими</td></tr>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает True если значение находится в диапазоне [a,b]</td></tr>
<tr><td><code><b>function</b> Ceil(Self: real): integer;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò íàìåíüøåå öåëîå, áîëüøåå èëè ðàâíîå âåùåñòâåííîìó ÷èñëó</td></tr>
<tr><td><code><b>function</b> Clamp(Self: real; bottom,top: real): real;</code>
@ -28,7 +28,7 @@
<tr><td><code><b>function</b> Floor(Self: real): integer;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò íàèáîëüøåå öåëîå, ìåíüøåå èëè ðàâíîå âåùåñòâåííîìó ÷èñëó</td></tr>
<tr><td><code><b>function</b> InRange(Self: real; a,b: real): boolean;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает True если значение находится между двумя другими</td></tr>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает True если значение находится в диапазоне [a, b]</td></tr>
<tr><td><code><b>function</b> Round(Self: real): integer;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ÷èñëî, îêðóãëåííîå äî áëèæàéøåãî öåëîãî</td></tr>
<tr><td><code><b>function</b> Round(Self: real; digits: integer): real;</code>

View file

@ -9,6 +9,10 @@
<param name="Keyword" value="ForEach">
<param name="Keyword" value="Incremental">
<param name="Keyword" value="Interleave">
<param name="Keyword" value="IsOrdered">
<param name="Keyword" value="IsOrderedBy">
<param name="Keyword" value="IsOrderedByDescending">
<param name="Keyword" value="IsOrderedDescending">
<param name="Keyword" value="JoinToString">
<param name="Keyword" value="LastMaxBy">
<param name="Keyword" value="LastMinBy">
@ -106,6 +110,22 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;×åðåäóåò ýëåìåíòû òðåõ ïîñëåäîâàòåëüíîñòåé</td></tr>
<tr><td><code><b>function</b> Interleave&lt;T&gt;(Self: <b>sequence </b> <b>of</b> T; a, b, c: <b>sequence </b> <b>of</b> T): <b>sequence </b> <b>of</b> T;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;×åðåäóåò ýëåìåíòû ÷åòûðåõ ïîñëåäîâàòåëüíîñòåé</td></tr>
<tr><td><code><b>function</b> IsOrdered&lt;T&gt;(self: <b>sequence </b> <b>of</b> T; comparer: IComparer&lt;T&gt;): boolean;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Проверяет, отсортирована ли последовательность по возрастанию в порядке, заданном компаратором comparer</td></tr>
<tr><td><code><b>function</b> IsOrdered&lt;T&gt;(self: <b>sequence </b> <b>of</b> T): boolean; <b>where</b> T: IComparable&lt;T&gt;;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Проверяет, отсортирована ли последовательность по возрастанию</td></tr>
<tr><td><code><b>function</b> IsOrderedBy&lt;T, TKey&gt;(self: <b>sequence </b> <b>of</b> T; keySelector: T -&gt; TKey;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Проверяет, отсортирована ли последовательность по возрастанию ключа, используя компаратор</td></tr>
<tr><td><code><b>function</b> IsOrderedBy&lt;T, TKey&gt;(self: <b>sequence </b> <b>of</b> T; keySelector: T -&gt; TKey): boolean;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Проверяет, отсортирована ли последовательность по возрастанию ключа</td></tr>
<tr><td><code><b>function</b> IsOrderedByDescending&lt;T, TKey&gt;(self: <b>sequence </b> <b>of</b> T; keySelector: T -&gt; TKey;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Проверяет, отсортирована ли последовательность по убыванию ключа, используя компаратор</td></tr>
<tr><td><code><b>function</b> IsOrderedByDescending&lt;T, TKey&gt;(self: <b>sequence </b> <b>of</b> T; keySelector: T -&gt; TKey): boolean;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Проверяет, отсортирована ли последовательность по убыванию ключа</td></tr>
<tr><td><code><b>function</b> IsOrderedDescending&lt;T&gt;(self: <b>sequence </b> <b>of</b> T): boolean; <b>where</b> T: IComparable&lt;T&gt;;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Проверяет, отсортирована ли последовательность по убыванию</td></tr>
<tr><td><code><b>function</b> IsOrderedDescending&lt;T&gt;(self: <b>sequence </b> <b>of</b> T; comparer: IComparer&lt;T&gt;): boolean;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Проверяет, отсортирована ли последовательность по убыванию в порядке, заданном компаратором comparer</td></tr>
<tr><td><code><b>function</b> JoinToString&lt;T&gt;(Self: <b>sequence </b> <b>of</b> T; delim: string): string;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðåîáðàçóåò ýëåìåíòû ïîñëåäîâàòåëüíîñòè â ñòðîêîâîå ïðåäñòàâëåíèå, ïîñëå ÷åãî îáúåäèíÿåò èõ â ñòðîêó, èñïîëüçóÿ delim â êà÷åñòâå ðàçäåëèòåëÿ</td></tr>
<tr><td><code><b>function</b> JoinToString&lt;T&gt;(Self: <b>sequence </b> <b>of</b> T): string;</code>

View file

@ -35,7 +35,7 @@
<tr><td><code><b>function</b> IndicesOf(Self, SubS: string; overlay: boolean := False): <b>sequence </b> <b>of</b> integer;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ âõîæäåíèé ïîäñòðîêè â îñíîâíóþ ñòðîêóÏàðàìåòð overlay îïðåäåëÿåò, ðàçðåøåíû ëè ïåðåêðûòèÿ âõîæäåíèé ïîäñòðîê</td></tr>
<tr><td><code><b>function</b> InRange(Self: string; a, b: string): boolean;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает True если значение находится между двумя другими</td></tr>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает True если строка находится в диапазоне [a,b] (лексикографическое сравнение)</td></tr>
<tr><td><code><b>function</b> Inverse(Self: string): string;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò èíâåðñèþ ñòðîêè</td></tr>
<tr><td><code><b>function</b> IsInteger(Self: string): boolean;</code>

View file

@ -1 +1 @@
3.10.3.3626
3.10.3.3627

View file

@ -1 +1 @@
!define VERSION '3.10.3.3626'
!define VERSION '3.10.3.3627'

View file

@ -2334,6 +2334,8 @@ function Pred(x: uint64): uint64;
///--
function Pred(x: boolean): boolean;
/// Возвращает True, если значение val находится между a и b включительно (a val b)
function InRange<T>(val, a, b: T): boolean; where T: IComparable<T>;
/// Меняет местами значения двух переменных
procedure Swap<T>(var a, b: T);
/// Возвращает True, если достигнут конец строки
@ -2347,6 +2349,9 @@ function SeekEoln: boolean;
/// Возвращает аргумены командой строки, с которыми была запущена программа
function CommandLineArgs: array of string;
/// Преобразует объект в строковое представление
function ObjectToString(obj: object): string;
// -----------------------------------------------------
//>> Подпрограммы для работы с динамическими массивами # Subroutines for array of T
// -----------------------------------------------------
@ -2917,9 +2922,6 @@ function RuntimeInitialize(kind: byte; variable: object): object;
///Вычисление размера типа на этапе выполнения
function GetRuntimeSize<T>: integer;
/// Преобразует объект в строковое представление
function ObjectToString(obj: object): string;
function IsUnix: boolean;
///--
function ExecuteAssemlyIsDll: boolean;
@ -10682,6 +10684,12 @@ begin
Result := char(integer(x)-n);
end;
/// Возвращает True, если значение val находится между a и b включительно (a val b)
function InRange<T>(val, a, b: T): boolean; where T: IComparable<T>;
begin
Result := (val.CompareTo(a) >= 0) and (val.CompareTo(b) <= 0);
end;
procedure Swap<T>(var a, b: T);
begin
var v := a;
@ -14195,10 +14203,10 @@ begin
Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a);
end;
/// Возвращает True если значение находится между двумя другими
/// Возвращает True если значение находится в диапазоне [a,b]
function InRange(Self: integer; a,b: integer): boolean; extensionmethod;
begin
Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a);
Result := (a <= Self) and (Self <= b);
end;
///--
@ -14297,16 +14305,16 @@ end;
// -----------------------------------------------------
//>> Методы расширения типа real # Extension methods for real
// -----------------------------------------------------
/// Возвращает True если значение находится между двумя другими
/// Возвращает True если значение находится в диапазоне [a,b]
function Between(Self: real; a, b: real): boolean; extensionmethod;
begin
Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a);
end;
/// Возвращает True если значение находится между двумя другими
/// Возвращает True если значение находится в диапазоне [a, b]
function InRange(Self: real; a,b: real): boolean; extensionmethod;
begin
Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a);
Result := (a <= Self) and (Self <= b);
end;
/// Возвращает квадратный корень числа
@ -14412,10 +14420,10 @@ begin
Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a);
end;
/// Возвращает True если значение находится между двумя другими
/// Возвращает True если символ находится в диапазоне [a,b]
function InRange(Self: char; a,b: char): boolean; extensionmethod;
begin
Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a);
Result := (a <= Self) and (Self <= b);
end;
/// Предыдущий символ
@ -14485,10 +14493,10 @@ begin
Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a);
end;
/// Возвращает True если значение находится между двумя другими
/// Возвращает True если строка находится в диапазоне [a,b] (лексикографическое сравнение)
function InRange(Self: string; a, b: string): boolean; extensionmethod;
begin
Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a);
Result := (a <= Self) and (Self <= b);
end;
/// Считывает целое из строки начиная с позиции from и устанавливает from за считанным значением

View file

@ -2334,6 +2334,8 @@ function Pred(x: uint64): uint64;
///--
function Pred(x: boolean): boolean;
/// Возвращает True, если значение val находится между a и b включительно (a val b)
function InRange<T>(val, a, b: T): boolean; where T: IComparable<T>;
/// Меняет местами значения двух переменных
procedure Swap<T>(var a, b: T);
/// Возвращает True, если достигнут конец строки
@ -2347,6 +2349,9 @@ function SeekEoln: boolean;
/// Возвращает аргумены командой строки, с которыми была запущена программа
function CommandLineArgs: array of string;
/// Преобразует объект в строковое представление
function ObjectToString(obj: object): string;
// -----------------------------------------------------
//>> Подпрограммы для работы с динамическими массивами # Subroutines for array of T
// -----------------------------------------------------
@ -2917,9 +2922,6 @@ function RuntimeInitialize(kind: byte; variable: object): object;
///Вычисление размера типа на этапе выполнения
function GetRuntimeSize<T>: integer;
/// Преобразует объект в строковое представление
function ObjectToString(obj: object): string;
function IsUnix: boolean;
///--
function ExecuteAssemlyIsDll: boolean;
@ -10682,6 +10684,12 @@ begin
Result := char(integer(x)-n);
end;
/// Возвращает True, если значение val находится между a и b включительно (a val b)
function InRange<T>(val, a, b: T): boolean; where T: IComparable<T>;
begin
Result := (val.CompareTo(a) >= 0) and (val.CompareTo(b) <= 0);
end;
procedure Swap<T>(var a, b: T);
begin
var v := a;
@ -14195,10 +14203,10 @@ begin
Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a);
end;
/// Возвращает True если значение находится между двумя другими
/// Возвращает True если значение находится в диапазоне [a,b]
function InRange(Self: integer; a,b: integer): boolean; extensionmethod;
begin
Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a);
Result := (a <= Self) and (Self <= b);
end;
///--
@ -14297,16 +14305,16 @@ end;
// -----------------------------------------------------
//>> Методы расширения типа real # Extension methods for real
// -----------------------------------------------------
/// Возвращает True если значение находится между двумя другими
/// Возвращает True если значение находится в диапазоне [a,b]
function Between(Self: real; a, b: real): boolean; extensionmethod;
begin
Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a);
end;
/// Возвращает True если значение находится между двумя другими
/// Возвращает True если значение находится в диапазоне [a, b]
function InRange(Self: real; a,b: real): boolean; extensionmethod;
begin
Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a);
Result := (a <= Self) and (Self <= b);
end;
/// Возвращает квадратный корень числа
@ -14412,10 +14420,10 @@ begin
Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a);
end;
/// Возвращает True если значение находится между двумя другими
/// Возвращает True если символ находится в диапазоне [a,b]
function InRange(Self: char; a,b: char): boolean; extensionmethod;
begin
Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a);
Result := (a <= Self) and (Self <= b);
end;
/// Предыдущий символ
@ -14485,10 +14493,10 @@ begin
Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a);
end;
/// Возвращает True если значение находится между двумя другими
/// Возвращает True если строка находится в диапазоне [a,b] (лексикографическое сравнение)
function InRange(Self: string; a, b: string): boolean; extensionmethod;
begin
Result := (a <= Self) and (Self <= b) or (b <= Self) and (Self <= a);
Result := (a <= Self) and (Self <= b);
end;
/// Считывает целое из строки начиная с позиции from и устанавливает from за считанным значением

Binary file not shown.