InRange изменение поведения и внешний
This commit is contained in:
parent
04059ab235
commit
a914ab6ef5
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%COREVERSION%=3
|
||||
%REVISION%=3626
|
||||
%MINOR%=10
|
||||
%REVISION%=3627
|
||||
%COREVERSION%=3
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
12
InstallerSamples/WhatsNew/3_10_4/InRange.pas
Normal file
12
InstallerSamples/WhatsNew/3_10_4/InRange.pas
Normal 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.
|
||||
|
|
@ -19,5 +19,5 @@ begin
|
|||
leaderboard := leaderboard.OrderByDescending(p -> p.Points).ToArray;
|
||||
Println(leaderboard);
|
||||
if leaderboard.IsOrderedByDescending(p -> p.Points) then
|
||||
Println('Теперь рейтинг составлен неверно!');
|
||||
Println('Теперь рейтинг составлен верно!');
|
||||
end.
|
||||
|
|
@ -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> Óâåëè÷èâàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà 1</td></tr>
|
||||
<tr><td><code><b>procedure</b> Inc(<b>var</b> e: ïåðå÷èñëèìûé òèï; n: integer);</code>
|
||||
<br> Óâåëè÷èâàåò çíà÷åíèå ïåðå÷èñëèìîãî òèïà íà n</td></tr>
|
||||
<tr><td><code><b>function</b> InRange<T>(val, a, b: T): boolean; <b>where</b> T: IComparable<T>;</code>
|
||||
<br> Âîçâðàùàåò True, åñëè çíà÷åíèå val íàõîäèòñÿ ìåæäó a è b âêëþ÷èòåëüíî (a ? val ? b)</td></tr>
|
||||
<tr><td><code><b>function</b> ObjectToString(obj: object): string;</code>
|
||||
<br> Ïðåîáðàçóåò îáúåêò â ñòðîêîâîå ïðåäñòàâëåíèå</td></tr>
|
||||
<tr><td><code><b>function</b> Ord(a: öåëîå): öåëîå;</code>
|
||||
<br> Âîçâðàùàåò ïîðÿäêîâûé íîìåð çíà÷åíèÿ a</td></tr>
|
||||
<tr><td><code><b>function</b> Ord(a: ïåðå÷èñëèìûé òèï): integer;</code>
|
||||
|
|
|
|||
|
|
@ -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> Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ ýëåìåíòîâ îäíîìåðíîãî ìàññèâà, óäîâëåòâîðÿþùèõ óñëîâèþ</td></tr>
|
||||
<tr><td><code><b>function</b> Indices<T>(Self: <b>array</b> <b>of</b> T; cond: (T,integer) ->boolean): <b>sequence </b> <b>of</b> integer;</code>
|
||||
<br> Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ ýëåìåíòîâ îäíîìåðíîãî ìàññèâà, óäîâëåòâîðÿþùèõ óñëîâèþ</td></tr>
|
||||
<tr><td><code><b>function</b> IsOrdered<T>(self: <b>array</b> <b>of</b> T): boolean; <b>where</b> T: IComparable<T>;</code>
|
||||
<br> Ïðîâåðÿåò, îòñîðòèðîâàí ëè ìàññèâ ïî âîçðàñòàíèþ</td></tr>
|
||||
<tr><td><code><b>function</b> IsOrdered<T>(self: <b>array</b> <b>of</b> T; comparer: IComparer<T>): boolean;</code>
|
||||
<br> Ïðîâåðÿåò, îòñîðòèðîâàí ëè ìàññèâ â ïîðÿäêå, çàäàííîì êîìïàðàòîðîì comparer</td></tr>
|
||||
<tr><td><code><b>function</b> IsOrderedBy<T, TKey>(self: <b>array</b> <b>of</b> T; keySelector: T -> TKey): boolean;</code>
|
||||
<br> Ïðîâåðÿåò, îòñîðòèðîâàí ëè ìàññèâ ïî âîçðàñòàíèþ êëþ÷à</td></tr>
|
||||
<tr><td><code><b>function</b> IsOrderedBy<T, TKey>(self: <b>array</b> <b>of</b> T; keySelector: T -> TKey;</code>
|
||||
<br> Ïðîâåðÿåò, îòñîðòèðîâàí ëè ìàññèâ ïî âîçðàñòàíèþ êëþ÷à ñ êîìïàðàòîðîì</td></tr>
|
||||
<tr><td><code><b>function</b> IsOrderedByDescending<T, TKey>(self: <b>array</b> <b>of</b> T; keySelector: T -> TKey): boolean;</code>
|
||||
<br> Ïðîâåðÿåò, îòñîðòèðîâàí ëè ìàññèâ ïî óáûâàíèþ êëþ÷à</td></tr>
|
||||
<tr><td><code><b>function</b> IsOrderedByDescending<T, TKey>(self: <b>array</b> <b>of</b> T; keySelector: T -> TKey;</code>
|
||||
<br> Ïðîâåðÿåò, îòñîðòèðîâàí ëè ìàññèâ ïî óáûâàíèþ êëþ÷à ñ êîìïàðàòîðîì</td></tr>
|
||||
<tr><td><code><b>function</b> IsOrderedDescending<T>(self: <b>array</b> <b>of</b> T): boolean; <b>where</b> T: IComparable<T>;</code>
|
||||
<br> Ïðîâåðÿåò, îòñîðòèðîâàí ëè ìàññèâ ïî óáûâàíèþ</td></tr>
|
||||
<tr><td><code><b>function</b> IsOrderedDescending<T>(self: <b>array</b> <b>of</b> T; comparer: IComparer<T>): boolean;</code>
|
||||
<br> Ïðîâåðÿåò, îòñîðòèðîâàí ëè ìàññèâ ïî óáûâàíèþ â ïîðÿäêå, çàäàííîì êîìïàðàòîðîì comparer</td></tr>
|
||||
<tr><td><code><b>function</b> LastIndexMax<T>(Self: <b>array</b> <b>of</b> T; index: integer): integer; <b>where</b> T: IComparable<T>;</code>
|
||||
<br> Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ìèíèìàëüíîãî ýëåìåíòà â äèàïàçîíå [0,index-1]</td></tr>
|
||||
<tr><td><code><b>function</b> LastIndexMax<T>(Self: <b>array</b> <b>of</b> T): integer; <b>where</b> T: IComparable<T>;</code>
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
<tr><td><code><b>function</b> Code(Self: char): integer;</code>
|
||||
<br> Êîä ñèìâîëà â êîäèðîâêå Unicode</td></tr>
|
||||
<tr><td><code><b>function</b> InRange(Self: char; a,b: char): boolean;</code>
|
||||
<br> Возвращает True если значение находится между двумя другими</td></tr>
|
||||
<br> Возвращает True если символ находится в диапазоне [a,b]</td></tr>
|
||||
<tr><td><code><b>function</b> IsDigit(Self: char);</code>
|
||||
<br> ßâëÿåòñÿ ëè ñèìâîë öèôðîé</td></tr>
|
||||
<tr><td><code><b>function</b> IsLetter(Self: char): boolean;</code>
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
<tr><td><code><b>function</b> Downto(Self: integer; n: integer): <b>sequence </b> <b>of</b> integer;</code>
|
||||
<br> Ãåíåðèðóåò ïîñëåäîâàòåëüíîñòü öåëûõ îò òåêóùåãî çíà÷åíèÿ äî n â óáûâàþùåì ïîðÿäêå</td></tr>
|
||||
<tr><td><code><b>function</b> InRange(Self: integer; a,b: integer): boolean;</code>
|
||||
<br> Возвращает True если значение находится между двумя другими</td></tr>
|
||||
<br> Возвращает True если значение находится в диапазоне [a,b]</td></tr>
|
||||
<tr><td><code><b>function</b> IsEven(Self: integer): boolean;</code>
|
||||
<br> Âîçâðàùàåò, ÿâëÿåòñÿ ëè öåëîå ÷åòíûì</td></tr>
|
||||
<tr><td><code><b>function</b> IsOdd(Self: integer): boolean;</code>
|
||||
|
|
|
|||
|
|
@ -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> Возвращает True если значение находится между двумя другими</td></tr>
|
||||
<br> Возвращает True если значение находится в диапазоне [a,b]</td></tr>
|
||||
<tr><td><code><b>function</b> Ceil(Self: real): integer;</code>
|
||||
<br> Âîçâðàùàåò íàìåíüøåå öåëîå, áîëüøåå èëè ðàâíîå âåùåñòâåííîìó ÷èñëó</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> Âîçâðàùàåò íàèáîëüøåå öåëîå, ìåíüøåå èëè ðàâíîå âåùåñòâåííîìó ÷èñëó</td></tr>
|
||||
<tr><td><code><b>function</b> InRange(Self: real; a,b: real): boolean;</code>
|
||||
<br> Возвращает True если значение находится между двумя другими</td></tr>
|
||||
<br> Возвращает True если значение находится в диапазоне [a, b]</td></tr>
|
||||
<tr><td><code><b>function</b> Round(Self: real): integer;</code>
|
||||
<br> Âîçâðàùàåò ÷èñëî, îêðóãëåííîå äî áëèæàéøåãî öåëîãî</td></tr>
|
||||
<tr><td><code><b>function</b> Round(Self: real; digits: integer): real;</code>
|
||||
|
|
|
|||
|
|
@ -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> ×åðåäóåò ýëåìåíòû òðåõ ïîñëåäîâàòåëüíîñòåé</td></tr>
|
||||
<tr><td><code><b>function</b> Interleave<T>(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> ×åðåäóåò ýëåìåíòû ÷åòûðåõ ïîñëåäîâàòåëüíîñòåé</td></tr>
|
||||
<tr><td><code><b>function</b> IsOrdered<T>(self: <b>sequence </b> <b>of</b> T; comparer: IComparer<T>): boolean;</code>
|
||||
<br> Проверяет, отсортирована ли последовательность по возрастанию в порядке, заданном компаратором comparer</td></tr>
|
||||
<tr><td><code><b>function</b> IsOrdered<T>(self: <b>sequence </b> <b>of</b> T): boolean; <b>where</b> T: IComparable<T>;</code>
|
||||
<br> Проверяет, отсортирована ли последовательность по возрастанию</td></tr>
|
||||
<tr><td><code><b>function</b> IsOrderedBy<T, TKey>(self: <b>sequence </b> <b>of</b> T; keySelector: T -> TKey;</code>
|
||||
<br> Проверяет, отсортирована ли последовательность по возрастанию ключа, используя компаратор</td></tr>
|
||||
<tr><td><code><b>function</b> IsOrderedBy<T, TKey>(self: <b>sequence </b> <b>of</b> T; keySelector: T -> TKey): boolean;</code>
|
||||
<br> Проверяет, отсортирована ли последовательность по возрастанию ключа</td></tr>
|
||||
<tr><td><code><b>function</b> IsOrderedByDescending<T, TKey>(self: <b>sequence </b> <b>of</b> T; keySelector: T -> TKey;</code>
|
||||
<br> Проверяет, отсортирована ли последовательность по убыванию ключа, используя компаратор</td></tr>
|
||||
<tr><td><code><b>function</b> IsOrderedByDescending<T, TKey>(self: <b>sequence </b> <b>of</b> T; keySelector: T -> TKey): boolean;</code>
|
||||
<br> Проверяет, отсортирована ли последовательность по убыванию ключа</td></tr>
|
||||
<tr><td><code><b>function</b> IsOrderedDescending<T>(self: <b>sequence </b> <b>of</b> T): boolean; <b>where</b> T: IComparable<T>;</code>
|
||||
<br> Проверяет, отсортирована ли последовательность по убыванию</td></tr>
|
||||
<tr><td><code><b>function</b> IsOrderedDescending<T>(self: <b>sequence </b> <b>of</b> T; comparer: IComparer<T>): boolean;</code>
|
||||
<br> Проверяет, отсортирована ли последовательность по убыванию в порядке, заданном компаратором comparer</td></tr>
|
||||
<tr><td><code><b>function</b> JoinToString<T>(Self: <b>sequence </b> <b>of</b> T; delim: string): string;</code>
|
||||
<br> Ïðåîáðàçóåò ýëåìåíòû ïîñëåäîâàòåëüíîñòè â ñòðîêîâîå ïðåäñòàâëåíèå, ïîñëå ÷åãî îáúåäèíÿåò èõ â ñòðîêó, èñïîëüçóÿ delim â êà÷åñòâå ðàçäåëèòåëÿ</td></tr>
|
||||
<tr><td><code><b>function</b> JoinToString<T>(Self: <b>sequence </b> <b>of</b> T): string;</code>
|
||||
|
|
|
|||
|
|
@ -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> Âîçâðàùàåò ïîñëåäîâàòåëüíîñòü èíäåêñîâ âõîæäåíèé ïîäñòðîêè â îñíîâíóþ ñòðîêóÏàðàìåòð overlay îïðåäåëÿåò, ðàçðåøåíû ëè ïåðåêðûòèÿ âõîæäåíèé ïîäñòðîê</td></tr>
|
||||
<tr><td><code><b>function</b> InRange(Self: string; a, b: string): boolean;</code>
|
||||
<br> Возвращает True если значение находится между двумя другими</td></tr>
|
||||
<br> Возвращает True если строка находится в диапазоне [a,b] (лексикографическое сравнение)</td></tr>
|
||||
<tr><td><code><b>function</b> Inverse(Self: string): string;</code>
|
||||
<br> Âîçâðàùàåò èíâåðñèþ ñòðîêè</td></tr>
|
||||
<tr><td><code><b>function</b> IsInteger(Self: string): boolean;</code>
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
3.10.3.3626
|
||||
3.10.3.3627
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.10.3.3626'
|
||||
!define VERSION '3.10.3.3627'
|
||||
|
|
|
|||
|
|
@ -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 за считанным значением
|
||||
|
|
|
|||
|
|
@ -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.
Loading…
Reference in a new issue