Недобитки при сортировке строк

This commit is contained in:
Mikhalkovich Stanislav 2024-03-03 21:37:25 +03:00
parent c9d7ba7758
commit 90363ced45
7 changed files with 153 additions and 5 deletions

View file

@ -15,7 +15,7 @@ internal static class RevisionClass
public const string Major = "3";
public const string Minor = "9";
public const string Build = "0";
public const string Revision = "3426";
public const string Revision = "3427";
public const string MainVersion = Major + "." + Minor;
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;

View file

@ -1,4 +1,4 @@
%COREVERSION%=0
%REVISION%=3426
%MINOR%=9
%REVISION%=3427
%COREVERSION%=0
%MAJOR%=3

View file

@ -1 +1 @@
3.9.0.3426
3.9.0.3427

View file

@ -1 +1 @@
!define VERSION '3.9.0.3426'
!define VERSION '3.9.0.3427'

View file

@ -2158,6 +2158,7 @@ function Length(a: System.Array; dim: integer): integer;
///- function Copy(a: array of T): array of T;
/// Создаёт копию динамического массива
function Copy(a: System.Array): System.Array;
/// Сортирует динамический массив по возрастанию
procedure Sort<T>(a: array of T);
/// Сортирует динамический массив по критерию сортировки, задаваемому функцией сравнения cmp
@ -2166,22 +2167,35 @@ procedure Sort<T>(a: array of T; cmp: (T,T)->integer);
procedure Sort<T>(a: array of T; less: (T,T)->boolean);
/// Сортирует динамический массив по ключу
procedure Sort<T,TKey>(a: array of T; keySelector: T->TKey);
/// Сортирует динамический массив по возрастанию
procedure Sort(a: array of string);
/// Сортирует динамический массив по ключу
procedure Sort<T>(a: array of T; keySelector: T->string);
/// Сортирует список по возрастанию
procedure Sort<T>(l: List<T>);
/// Сортирует список по возрастанию
procedure Sort(var l: List<string>);
/// Сортирует список по критерию сортировки, задаваемому функцией сравнения cmp
procedure Sort<T>(l: List<T>; cmp: (T,T)->integer);
/// Сортирует список по критерию сортировки, задаваемому функцией сравнения less
procedure Sort<T>(l: List<T>; less: (T,T)->boolean);
/// Сортирует список по возрастанию по ключу
procedure Sort<T,T1>(var l: List<T>; keySelector: T->T1);
/// Сортирует список по возрастанию по ключу
procedure Sort<T>(var l: List<T>; keySelector: T->string);
/// Сортирует динамический массив по убыванию
procedure SortDescending<T>(a: array of T);
/// Сортирует динамический массив по убыванию по ключу
procedure SortDescending<T,T1>(var a: array of T; keySelector: T->T1);
/// Сортирует список по убыванию
procedure SortDescending<T>(l: List<T>);
/// Сортирует список по убыванию
procedure SortDescending(var l: List<string>);
/// Сортирует список по убыванию по ключу
procedure SortDescending<T,T1>(var l: List<T>; keySelector: T->T1);
/// Сортирует список по убыванию по ключу
procedure SortDescending<T>(var l: List<T>; keySelector: T->string);
/// Изменяет порядок элементов в динамическом массиве на противоположный
procedure Reverse<T>(a: array of T);
/// Изменяет порядок элементов на противоположный в диапазоне динамического массива длины count, начиная с индекса index
@ -8788,6 +8802,11 @@ begin
System.Array.Sort(a);
end;
procedure Sort(a: array of string);
begin
System.Array.Sort(a, System.StringComparer.Ordinal);
end;
procedure Sort<T>(a: array of T; cmp: (T,T)->integer);
begin
System.Array.Sort(a, cmp);
@ -8804,16 +8823,32 @@ begin
System.Array.Sort(keys, a);
end;
procedure Sort<T>(a: array of T; keySelector: T->string);
begin
var keys := System.Array.ConvertAll(a,keySelector);
System.Array.Sort(keys, a, System.StringComparer.Ordinal);
end;
procedure Sort<T>(l: List<T>);
begin
l.Sort();
end;
procedure Sort(var l: List<string>);
begin
l := l.OrderBy(x->x, System.StringComparer.Ordinal).ToList;
end;
procedure Sort<T,T1>(var l: List<T>; keySelector: T->T1);
begin
l := l.OrderBy(x->keySelector(x)).ToList;
end;
procedure Sort<T>(var l: List<T>; keySelector: T->string);
begin
l := l.OrderBy(x->keySelector(x),System.StringComparer.Ordinal).ToList;
end;
procedure Sort<T>(l: List<T>; cmp: (T,T)->integer);
begin
l.Sort(cmp);
@ -8841,11 +8876,21 @@ begin
Reverse(l);
end;
procedure SortDescending(var l: List<string>);
begin
l := l.OrderByDescending(x->x, System.StringComparer.Ordinal).ToList;
end;
procedure SortDescending<T,T1>(var l: List<T>; keySelector: T->T1);
begin
l := l.OrderByDescending(x->keySelector(x)).ToList;
end;
procedure SortDescending<T>(var l: List<T>; keySelector: T->string);
begin
l := l.OrderByDescending(x->keySelector(x), System.StringComparer.Ordinal).ToList;
end;
procedure Reverse<T>(a: array of T);
begin
System.Array.Reverse(a);

View file

@ -2158,6 +2158,7 @@ function Length(a: System.Array; dim: integer): integer;
///- function Copy(a: array of T): array of T;
/// Создаёт копию динамического массива
function Copy(a: System.Array): System.Array;
/// Сортирует динамический массив по возрастанию
procedure Sort<T>(a: array of T);
/// Сортирует динамический массив по критерию сортировки, задаваемому функцией сравнения cmp
@ -2166,22 +2167,35 @@ procedure Sort<T>(a: array of T; cmp: (T,T)->integer);
procedure Sort<T>(a: array of T; less: (T,T)->boolean);
/// Сортирует динамический массив по ключу
procedure Sort<T,TKey>(a: array of T; keySelector: T->TKey);
/// Сортирует динамический массив по возрастанию
procedure Sort(a: array of string);
/// Сортирует динамический массив по ключу
procedure Sort<T>(a: array of T; keySelector: T->string);
/// Сортирует список по возрастанию
procedure Sort<T>(l: List<T>);
/// Сортирует список по возрастанию
procedure Sort(var l: List<string>);
/// Сортирует список по критерию сортировки, задаваемому функцией сравнения cmp
procedure Sort<T>(l: List<T>; cmp: (T,T)->integer);
/// Сортирует список по критерию сортировки, задаваемому функцией сравнения less
procedure Sort<T>(l: List<T>; less: (T,T)->boolean);
/// Сортирует список по возрастанию по ключу
procedure Sort<T,T1>(var l: List<T>; keySelector: T->T1);
/// Сортирует список по возрастанию по ключу
procedure Sort<T>(var l: List<T>; keySelector: T->string);
/// Сортирует динамический массив по убыванию
procedure SortDescending<T>(a: array of T);
/// Сортирует динамический массив по убыванию по ключу
procedure SortDescending<T,T1>(var a: array of T; keySelector: T->T1);
/// Сортирует список по убыванию
procedure SortDescending<T>(l: List<T>);
/// Сортирует список по убыванию
procedure SortDescending(var l: List<string>);
/// Сортирует список по убыванию по ключу
procedure SortDescending<T,T1>(var l: List<T>; keySelector: T->T1);
/// Сортирует список по убыванию по ключу
procedure SortDescending<T>(var l: List<T>; keySelector: T->string);
/// Изменяет порядок элементов в динамическом массиве на противоположный
procedure Reverse<T>(a: array of T);
/// Изменяет порядок элементов на противоположный в диапазоне динамического массива длины count, начиная с индекса index
@ -8788,6 +8802,11 @@ begin
System.Array.Sort(a);
end;
procedure Sort(a: array of string);
begin
System.Array.Sort(a, System.StringComparer.Ordinal);
end;
procedure Sort<T>(a: array of T; cmp: (T,T)->integer);
begin
System.Array.Sort(a, cmp);
@ -8804,16 +8823,32 @@ begin
System.Array.Sort(keys, a);
end;
procedure Sort<T>(a: array of T; keySelector: T->string);
begin
var keys := System.Array.ConvertAll(a,keySelector);
System.Array.Sort(keys, a, System.StringComparer.Ordinal);
end;
procedure Sort<T>(l: List<T>);
begin
l.Sort();
end;
procedure Sort(var l: List<string>);
begin
l := l.OrderBy(x->x, System.StringComparer.Ordinal).ToList;
end;
procedure Sort<T,T1>(var l: List<T>; keySelector: T->T1);
begin
l := l.OrderBy(x->keySelector(x)).ToList;
end;
procedure Sort<T>(var l: List<T>; keySelector: T->string);
begin
l := l.OrderBy(x->keySelector(x),System.StringComparer.Ordinal).ToList;
end;
procedure Sort<T>(l: List<T>; cmp: (T,T)->integer);
begin
l.Sort(cmp);
@ -8841,11 +8876,21 @@ begin
Reverse(l);
end;
procedure SortDescending(var l: List<string>);
begin
l := l.OrderByDescending(x->x, System.StringComparer.Ordinal).ToList;
end;
procedure SortDescending<T,T1>(var l: List<T>; keySelector: T->T1);
begin
l := l.OrderByDescending(x->keySelector(x)).ToList;
end;
procedure SortDescending<T>(var l: List<T>; keySelector: T->string);
begin
l := l.OrderByDescending(x->keySelector(x), System.StringComparer.Ordinal).ToList;
end;
procedure Reverse<T>(a: array of T);
begin
System.Array.Reverse(a);
@ -12097,6 +12142,12 @@ begin
System.Array.Sort(Self);
end;
/// Сортирует массив по возрастанию
procedure Sort(Self: array of string); extensionmethod;
begin
System.Array.Sort(Self,System.StringComparer.Ordinal);
end;
/// Сортирует массив по убыванию
procedure SortDescending<T>(Self: array of T); extensionmethod;
begin
@ -12104,6 +12155,13 @@ begin
Reverse(Self);
end;
/// Сортирует массив по убыванию
procedure SortDescending(Self: array of string); extensionmethod;
begin
System.Array.Sort(Self,System.StringComparer.Ordinal);
Reverse(Self);
end;
/// Сортирует массив по возрастанию, используя cmp в качестве функции сравнения элементов
procedure Sort<T>(Self: array of T; cmp: (T,T) ->integer); extensionmethod;
begin
@ -12117,6 +12175,13 @@ begin
System.Array.Copy(a,Self,a.Length);
end;
/// Сортирует массив по возрастанию по ключу
procedure Sort<T>(Self: array of T; keySelector: T -> string); extensionmethod;
begin
var a := Self.OrderBy(keySelector,System.StringComparer.Ordinal).ToArray;
System.Array.Copy(a,Self,a.Length);
end;
/// Сортирует массив по убыванию по ключу
procedure SortDescending<T,T1>(Self: array of T; keySelector: T -> T1); extensionmethod;
begin
@ -12124,6 +12189,14 @@ begin
System.Array.Copy(a,Self,a.Length);
end;
/// Сортирует массив по убыванию по ключу
procedure SortDescending<T>(Self: array of T; keySelector: T -> string); extensionmethod;
begin
var a := Self.OrderByDescending(keySelector,System.StringComparer.Ordinal).ToArray;
System.Array.Copy(a,Self,a.Length);
end;
/// Возвращает индекс последнего элемента массива
function High(Self: System.Array); extensionmethod := High(Self);

View file

@ -2136,9 +2136,18 @@
<member name="M:Sort``2(``0[],System.Func{``0,``1})">
<summary>Сортирует динамический массив по ключу</summary>
</member>
<member name="M:Sort(System.String[])">
<summary>Сортирует динамический массив по возрастанию</summary>
</member>
<member name="M:Sort``1(``0[],System.Func{``0,System.String})">
<summary>Сортирует динамический массив по ключу</summary>
</member>
<member name="M:Sort``1(System.Collections.Generic.List{``0})">
<summary>Сортирует список по возрастанию</summary>
</member>
<member name="M:Sort(System.Collections.Generic.List{System.String}@)">
<summary>Сортирует список по возрастанию</summary>
</member>
<member name="M:Sort``1(System.Collections.Generic.List{``0},System.Func{``0,``0,System.Int32})">
<summary>Сортирует список по критерию сортировки, задаваемому функцией сравнения cmp</summary>
</member>
@ -2148,6 +2157,9 @@
<member name="M:Sort``2(System.Collections.Generic.List{``0}@,System.Func{``0,``1})">
<summary>Сортирует список по возрастанию по ключу</summary>
</member>
<member name="M:Sort``1(System.Collections.Generic.List{``0}@,System.Func{``0,System.String})">
<summary>Сортирует список по возрастанию по ключу</summary>
</member>
<member name="M:SortDescending``1(``0[])">
<summary>Сортирует динамический массив по убыванию</summary>
</member>
@ -2157,9 +2169,15 @@
<member name="M:SortDescending``1(System.Collections.Generic.List{``0})">
<summary>Сортирует список по убыванию</summary>
</member>
<member name="M:SortDescending(System.Collections.Generic.List{System.String}@)">
<summary>Сортирует список по убыванию</summary>
</member>
<member name="M:SortDescending``2(System.Collections.Generic.List{``0}@,System.Func{``0,``1})">
<summary>Сортирует список по убыванию по ключу</summary>
</member>
<member name="M:SortDescending``1(System.Collections.Generic.List{``0}@,System.Func{``0,System.String})">
<summary>Сортирует список по убыванию по ключу</summary>
</member>
<member name="M:Reverse``1(``0[])">
<summary>Изменяет порядок элементов в динамическом массиве на противоположный</summary>
</member>
@ -3648,18 +3666,30 @@
<member name="M:Sort``1(``0[])">
<summary>Сортирует массив по возрастанию</summary>
</member>
<member name="M:Sort(System.String[])">
<summary>Сортирует массив по возрастанию</summary>
</member>
<member name="M:SortDescending``1(``0[])">
<summary>Сортирует массив по убыванию</summary>
</member>
<member name="M:SortDescending(System.String[])">
<summary>Сортирует массив по убыванию</summary>
</member>
<member name="M:Sort``1(``0[],System.Func{``0,``0,System.Int32})">
<summary>Сортирует массив по возрастанию, используя cmp в качестве функции сравнения элементов</summary>
</member>
<member name="M:Sort``2(``0[],System.Func{``0,``1})">
<summary>Сортирует массив по возрастанию по ключу</summary>
</member>
<member name="M:Sort``1(``0[],System.Func{``0,System.String})">
<summary>Сортирует массив по возрастанию по ключу</summary>
</member>
<member name="M:SortDescending``2(``0[],System.Func{``0,``1})">
<summary>Сортирует массив по убыванию по ключу</summary>
</member>
<member name="M:SortDescending``1(``0[],System.Func{``0,System.String})">
<summary>Сортирует массив по убыванию по ключу</summary>
</member>
<member name="M:High(System.Array)">
<summary>Возвращает индекс последнего элемента массива</summary>
</member>