This commit is contained in:
Mikhalkovich Stanislav 2024-10-05 15:33:20 +03:00
parent 0a20c8d32c
commit 79f9ab73a0
19 changed files with 3323 additions and 15 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 = "0";
public const string Revision = "3547";
public const string Revision = "3550";
public const string MainVersion = Major + "." + Minor;
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;

View file

@ -1,4 +1,4 @@
%MINOR%=10
%REVISION%=3547
%COREVERSION%=0
%REVISION%=3550
%MINOR%=10
%MAJOR%=3

View file

@ -2,10 +2,14 @@
<param name="Keyword" value="AdjacentFind">
<param name="Keyword" value="Fill">
<param name="Keyword" value="IndexMax">
<param name="Keyword" value="IndexMaxBy">
<param name="Keyword" value="IndexMin">
<param name="Keyword" value="IndexMinBy">
<param name="Keyword" value="Indices">
<param name="Keyword" value="LastIndexMax">
<param name="Keyword" value="LastIndexMaxBy">
<param name="Keyword" value="LastIndexMin">
<param name="Keyword" value="LastIndexMinBy">
<param name="Keyword" value="RandomElement">
<param name="Keyword" value="RemoveLast">
<param name="Keyword" value="Replace">
@ -24,8 +28,12 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Çàïîëíÿåò ýëåìåíòû ñïèñêà çíà÷åíèÿìè, âû÷èñëÿåìûìè ïî íåêîòîðîìó ïðàâèëó</td></tr>
<tr><td><code><b>function</b> IndexMax&lt;T&gt;(Self: List&lt;T&gt;; index: integer := 0): integer; <b>where</b> T: IComparable&lt;T&gt;;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò èíäåêñ ïåðâîãî ìàêñèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index</td></tr>
<tr><td><code><b>function</b> IndexMaxBy&lt;T, TKey&gt;(Self: <b>array</b> <b>of</b> T; keySelector: T -&gt; TKey): integer;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ñ ìàêñèìàëüíûì çíà÷åíèåì êëþ÷à</td></tr>
<tr><td><code><b>function</b> IndexMin&lt;T&gt;(Self: List&lt;T&gt;; index: integer := 0): integer; <b>where</b> T: IComparable&lt;T&gt;;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò èíäåêñ ïåðâîãî ìèíèìàëüíîãî ýëåìåíòà íà÷èíàÿ ñ ïîçèöèè index</td></tr>
<tr><td><code><b>function</b> IndexMinBy&lt;T, TKey&gt;(Self: <b>array</b> <b>of</b> T; keySelector: T -&gt; TKey): integer;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò èíäåêñ ïåðâîãî ýëåìåíòà ñ ìèíèìàëüíûì çíà÷åíèåì êëþ÷à</td></tr>
<tr><td><code><b>function</b> Indices&lt;T&gt;(Self: List&lt;T&gt;): <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> Indices&lt;T&gt;(Self: List&lt;T&gt;; cond: T-&gt;boolean): <b>sequence </b> <b>of</b> integer;</code>
@ -36,10 +44,14 @@
<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: List&lt;T&gt;): integer; <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> LastIndexMaxBy&lt;T, TKey&gt;(Self: <b>array</b> <b>of</b> T; keySelector: T -&gt; TKey): integer;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ýëåìåíòà ñ ìàêñèìàëüíûì çíà÷åíèåì êëþ÷à</td></tr>
<tr><td><code><b>function</b> LastIndexMin&lt;T&gt;(Self: List&lt;T&gt;; 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> LastIndexMin&lt;T&gt;(Self: List&lt;T&gt;): integer; <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> LastIndexMinBy&lt;T, TKey&gt;(Self: <b>array</b> <b>of</b> T; keySelector: T -&gt; TKey): integer;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ýëåìåíòà ñ ìèíèìàëüíûì çíà÷åíèåì êëþ÷à</td></tr>
<tr><td><code><b>function</b> RandomElement&lt;T&gt;(Self: List&lt;T&gt;): T;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ñëó÷àéíûé ýëåìåíò ñïèñêà</td></tr>
<tr><td><code><b>function</b> RemoveLast&lt;T&gt;(Self: List&lt;T&gt;): List&lt;T&gt;;</code>

View file

@ -84,9 +84,9 @@
<tr><td><code><b>function</b> High(Self: System.Array);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò èíäåêñ ïîñëåäíåãî ýëåìåíòà ìàññèâà</td></tr>
<tr><td><code><b>function</b> IndexMax&lt;T&gt;(Self: <b>array</b> <b>of</b> T; index: integer := 0): integer; <b>where</b> T: IComparable&lt;T&gt;;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает индекс первого максимального элемента начиная с позиции index</td></tr>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает индекс первого максимального элемента</td></tr>
<tr><td><code><b>function</b> IndexMin&lt;T&gt;(Self: <b>array</b> <b>of</b> T; index: integer := 0): integer; <b>where</b> T: IComparable&lt;T&gt;;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает индекс первого минимального элемента начиная с позиции index</td></tr>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает индекс первого минимального элемента</td></tr>
<tr><td><code><b>function</b> IndexOf&lt;T&gt;(Self: <b>array</b> <b>of</b> T; x: T): integer;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò èíäåêñ ïåðâîãî âõîæäåíèÿ ýëåìåíòà èëè -1 åñëè ýëåìåíò íå íàéäåí</td></tr>
<tr><td><code><b>function</b> IndexOf&lt;T&gt;(Self: <b>array</b> <b>of</b> T; x: T; start: integer): integer;</code>

View file

@ -35,6 +35,7 @@
<param name="Keyword" value="TakeLast">
<param name="Keyword" value="ToHashSet">
<param name="Keyword" value="ToLinkedList">
<param name="Keyword" value="ToSet">
<param name="Keyword" value="ToSortedSet">
<param name="Keyword" value="UnZipTuple">
<param name="Keyword" value="WriteLines">
@ -46,9 +47,9 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Группирует одинаковые подряд идущие элементы, получая последовательность массивов</td></tr>
<tr><td><code><b>function</b> Average(Self: <b>sequence </b> <b>of</b> BigInteger): real;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает среднее элементов последовательности</td></tr>
<tr><td><code><b>function</b> Batch&lt;T&gt;(Self: <b>sequence </b> <b>of</b> T; size: integer): <b>sequence </b> <b>of</b> <b>sequence </b> <b>of</b> T;</code>
<tr><td><code><b>function</b> Batch&lt;T&gt;(Self: <b>sequence </b> <b>of</b> T; size: integer): <b>sequence </b> <b>of</b> <b>array</b> <b>of</b> T;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Разбивает последовательность на серии длины size</td></tr>
<tr><td><code><b>function</b> Batch&lt;T, Res&gt;(Self: <b>sequence </b> <b>of</b> T; size: integer; proj: Func&lt;IEnumerable&lt;T&gt;, Res&gt;): <b>sequence </b> <b>of</b> Res;</code>
<tr><td><code><b>function</b> Batch&lt;T, Res&gt;(Self: <b>sequence </b> <b>of</b> T; size: integer; proj: Func&lt;<b>array</b> <b>of</b> T, Res&gt;): <b>sequence </b> <b>of</b> Res;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Разбивает последовательность на серии длины size и применяет проекцию к каждой серии</td></tr>
<tr><td><code><b>function</b> Cartesian&lt;T, T1, TRes&gt;(Self: <b>sequence </b> <b>of</b> T; b: <b>sequence </b> <b>of</b> T1; func: (T,T1)-&gt;TRes): <b>sequence </b> <b>of</b> TRes;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает декартово произведение последовательностей, проектируя каждую пару на значение</td></tr>
@ -104,13 +105,13 @@
<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>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Преобразует элементы последовательности в строковое представление, после чего объединяет их в строку, используя пробел в качестве разделителя</td></tr>
<tr><td><code><b>function</b> LastMaxBy&lt;T, TKey&gt;(Self: <b>sequence </b> <b>of</b> T; selector: T-&gt;TKey): T;</code>
<tr><td><code><b>function</b> LastMaxBy&lt;T, TKey&gt;(Self: <b>sequence </b> <b>of</b> T; keySelector: T -&gt; TKey): T;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает последний элемент последовательности с максимальным значением ключа</td></tr>
<tr><td><code><b>function</b> LastMinBy&lt;T, TKey&gt;(Self: <b>sequence </b> <b>of</b> T; selector: T-&gt;TKey): T;</code>
<tr><td><code><b>function</b> LastMinBy&lt;T, TKey&gt;(Self: <b>sequence </b> <b>of</b> T; keySelector: T -&gt; TKey): T;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает последний элемент последовательности с минимальным значением ключа</td></tr>
<tr><td><code><b>function</b> MaxBy&lt;T, TKey&gt;(Self: <b>sequence </b> <b>of</b> T; selector: T-&gt;TKey): T;</code>
<tr><td><code><b>function</b> MaxBy&lt;T, TKey&gt;(Self: <b>sequence </b> <b>of</b> T; keySelector: T -&gt; TKey): T;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает первый элемент последовательности с максимальным значением ключа</td></tr>
<tr><td><code><b>function</b> MinBy&lt;T, TKey&gt;(Self: <b>sequence </b> <b>of</b> T; selector: T-&gt;TKey): T;</code>
<tr><td><code><b>function</b> MinBy&lt;T, TKey&gt;(Self: <b>sequence </b> <b>of</b> T; keySelector: T -&gt; TKey): T;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает первый элемент последовательности с минимальным значением ключа</td></tr>
<tr><td><code><b>function</b> Numerate&lt;T&gt;(Self: <b>sequence </b> <b>of</b> T): <b>sequence </b> <b>of</b> (integer, T);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Нумерует последовательность с единицы</td></tr>
@ -190,6 +191,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает множество HashSet по данной последовательности</td></tr>
<tr><td><code><b>function</b> ToLinkedList&lt;T&gt;(Self: <b>sequence </b> <b>of</b> T): LinkedList&lt;T&gt;;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает LinkedList по данной последовательности</td></tr>
<tr><td><code><b>function</b> ToSet&lt;T&gt;(Self: <b>sequence </b> <b>of</b> T): HashSet&lt;T&gt;;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîçâðàùàåò ìíîæåñòâî ïî äàííîé ïîñëåäîâàòåëüíîñòè</td></tr>
<tr><td><code><b>function</b> ToSortedSet&lt;T&gt;(Self: <b>sequence </b> <b>of</b> T): SortedSet&lt;T&gt;;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Возвращает множество SortedSet по данной последовательности</td></tr>
<tr><td><code><b>function</b> UnZipTuple&lt;T, T1&gt;(Self: <b>sequence </b> <b>of</b> (T, T1)): (<b>sequence </b> <b>of</b> T, <b>sequence </b> <b>of</b> T1);</code>

View file

@ -98,7 +98,7 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðåîáðàçóåò ñòðîêó â ìàññèâ âåùåñòâåííûõ</td></tr>
<tr><td><code><b>function</b> ToReals(Self: string; nfi: NumberFormatInfo): <b>array</b> <b>of</b> real;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðåîáðàçóåò ñòðîêó â ìàññèâ âåùåñòâåííûõ</td></tr>
<tr><td><code><b>function</b> ToReals(Self: string; DecimalSeparator: string := '.'): <b>array</b> <b>of</b> real;</code>
<tr><td><code><b>function</b> ToReals(Self: string; DecimalSeparator: string): <b>array</b> <b>of</b> real;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðåîáðàçóåò ñòðîêó â ìàññèâ âåùåñòâåííûõ</td></tr>
<tr><td><code><b>function</b> ToWords(Self: string; <b>params</b> delim: <b>array</b> <b>of</b> char): <b>array</b> <b>of</b> string;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ïðåîáðàçóåò ñòðîêó â ìàññèâ ñëîâ</td></tr>

View file

@ -9,6 +9,7 @@
<param name="Keyword" value="Load">
<param name="Keyword" value="RandomPoint">
<param name="Keyword" value="Save">
<param name="Keyword" value="SaveToClipboard">
<param name="Keyword" value="Top">
<param name="Keyword" value="Width"></object>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><link rel="StyleSheet" href="../../../default.css">
@ -40,5 +41,7 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîññòàíàâëèâàåò ñîäåðæèìîå ãðàôè÷åñêîãî îêíà èç ôàéëà ñ èìåíåì fname</td></tr>
<tr><td><code><b>procedure</b> Save(fname: string);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîõðàíÿåò ñîäåðæèìîå ãðàôè÷åñêîãî îêíà â ôàéë ñ èìåíåì fname</td></tr>
<tr><td><code><b>procedure</b> SaveToClipboard;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîõðàíÿåò ñîäåðæèìîå ãðàôè÷åñêîãî îêíà â áóôåð îáìåíà</td></tr>
</tr></table>
</body></HTML>

View file

@ -2,6 +2,7 @@
<param name="Keyword" value="Clear">
<param name="Keyword" value="Load">
<param name="Keyword" value="Save">
<param name="Keyword" value="SaveToClipboard">
<param name="Keyword" value="WindowTypeWPF"></object>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><link rel="StyleSheet" href="../../../default.css">
</HEAD><body><H1>Êëàññ WindowTypeWPF</H1>Òèï ãðàôè÷åñêîãî îêíà WindowTypeWPF. Áàçîâûé êëàññ - <code>WindowType</code>.
@ -15,6 +16,8 @@
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Âîññòàíàâëèâàåò ñîäåðæèìîå ãðàôè÷åñêîãî îêíà èç ôàéëà ñ èìåíåì fname</td></tr>
<tr><td><code><b>procedure</b> Save(fname: string);</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîõðàíÿåò ñîäåðæèìîå ãðàôè÷åñêîãî îêíà â ôàéë ñ èìåíåì fname</td></tr>
<tr><td><code><b>procedure</b> SaveToClipboard;</code>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ñîõðàíÿåò ñîäåðæèìîå ãðàôè÷åñêîãî îêíà â áóôåð îáìåíà</td></tr>
</tr><tr><td></td></tr><tr><td class="secttitle"><font style="font-size: 11pt">Ñâîéñòâà áàçîâîãî êëàññà WindowType</font></td></tr>
<tr><tr><td><code><b>property</b> Caption: string;</code>

View file

@ -1 +1 @@
3.10.0.3547
3.10.0.3550

View file

@ -1 +1 @@
!define VERSION '3.10.0.3547'
!define VERSION '3.10.0.3550'

View file

@ -11,7 +11,7 @@ uses
WPFObjects,
NumLibABC,
IniFile, PointerTools, PointRect,
PT4, PT4Exam, PT4MakerNetX, PT4TaskMakerNET,
PT4, PT4_32, PT4Exam, PT4MakerNetX, PT4TaskMakerNET,
Robot, RobotField,
RobotTaskMaker, RobotZadan, Sockets, Utils, VCL, Timers, RBDMUtils,
Collections, Arrays, Core, FormsABC, MPI, ClientServer, Speech, Sounds, Countries,

View file

@ -117,6 +117,7 @@
File ..\bin\Lib\PointerTools.pcu
File ..\bin\Lib\PointRect.pcu
File ..\bin\Lib\PT4.pcu
File ..\bin\Lib\PT4_32.pcu
File ..\bin\Lib\PT4Exam.pcu
File ..\bin\Lib\PT4MakerNetX.pcu
File ..\bin\Lib\PT4TaskMakerNET.pcu
@ -208,6 +209,7 @@
${AddFile} "PointerTools.pcu"
${AddFile} "PointRect.pcu"
${AddFile} "PT4.pcu"
${AddFile} "PT4_32.pcu"
${AddFile} "PT4Exam.pcu"
${AddFile} "PT4MakerNetX.pcu"
${AddFile} "PT4TaskMakerNET.pcu"
@ -320,6 +322,7 @@
File ..\bin\Lib\PointerTools.pas
File ..\bin\Lib\PointRect.pas
File ..\bin\Lib\PT4.pas
File ..\bin\Lib\PT4_32.pas
File ..\bin\Lib\PT4Exam.pas
File ..\bin\Lib\PT4MakerNetX.pas
File ..\bin\Lib\xPT4MakerNetX.pas
@ -399,6 +402,7 @@
${AddFile} "PointerTools.pas"
${AddFile} "PointRect.pas"
${AddFile} "PT4.pas"
${AddFile} "PT4_32.pas"
${AddFile} "PT4Exam.pas"
${AddFile} "PT4MakerNetX.pas"
${AddFile} "xPT4MakerNetX.pas"

View file

@ -11606,6 +11606,17 @@ begin
Result += 1;
end;
/// Возвращает элементы последовательности, ключи для которых отличаются, используя компоратор comp
function DistinctBy<T, TKey>(Self: sequence of T; by: T->TKey; comp: IEqualityComparer<TKey>): sequence of T; extensionmethod;
begin
var hs := new HashSet<TKey>(comp);
foreach var x in Self do
if hs.Add(by(x)) then
yield x;
end;
/// Возвращает элементы последовательности, ключи для которых отличаются, используя компоратор по-умолчанию
function DistinctBy<T, TKey>(Self: sequence of T; by: T->TKey); extensionmethod := Self.DistinctBy(by, nil);
// -----------------------------------------------------
//>> Методы расширения списков # Extension methods for List T
// -----------------------------------------------------

View file

@ -742,6 +742,7 @@ initialization
'Arr_MinMax1','Arr_MinMax2','Arr_MinMax3','Arr_MinMax4','Arr_Neighbors1','Arr_MinMaxInd1','Arr_MinMaxInd2',
'Arr_Fill1','Arr_Fill2','Заполнение1','ЗаполнениеЛямбда1','Заполнение2','ЗаполнениеЛямбда2',
'ЗаполнениеПоПред1','ЗаполнениеПоПред2','ЗаполнениеГеом1','ЗаполнениеГеом2','ЗаполнениеСумма1','ЗаполнениеСумма2',
'ЗаполнениеСумма3_add',
'Arr_Transf1','Arr_Transf1a','Arr_Transf2','Arr_Transf3','Arr_Transf4','Arr_Transf5','Arr_Transf7',
'Arr_Transf8','Arr_Transf9','Arr_Transf6',
'Arr_Reverse1','Arr_Reverse2','Arr_Reverse3','Arr_Reverse3a',

View file

@ -282,6 +282,7 @@ begin
tp := (0,0);
angle := 90;
MoveToReal(tp.X,tp.Y);
dr := False;
end;
procedure InitOnce; // Это тоже относится к Черепахе

3268
bin/Lib/PT4_32.pas Normal file

File diff suppressed because it is too large Load diff

View file

@ -742,6 +742,7 @@ initialization
'Arr_MinMax1','Arr_MinMax2','Arr_MinMax3','Arr_MinMax4','Arr_Neighbors1','Arr_MinMaxInd1','Arr_MinMaxInd2',
'Arr_Fill1','Arr_Fill2','Заполнение1','ЗаполнениеЛямбда1','Заполнение2','ЗаполнениеЛямбда2',
'ЗаполнениеПоПред1','ЗаполнениеПоПред2','ЗаполнениеГеом1','ЗаполнениеГеом2','ЗаполнениеСумма1','ЗаполнениеСумма2',
'ЗаполнениеСумма3_add',
'Arr_Transf1','Arr_Transf1a','Arr_Transf2','Arr_Transf3','Arr_Transf4','Arr_Transf5','Arr_Transf7',
'Arr_Transf8','Arr_Transf9','Arr_Transf6',
'Arr_Reverse1','Arr_Reverse2','Arr_Reverse3','Arr_Reverse3a',

View file

@ -282,6 +282,7 @@ begin
tp := (0,0);
angle := 90;
MoveToReal(tp.X,tp.Y);
dr := False;
end;
procedure InitOnce; // Это тоже относится к Черепахе

Binary file not shown.