diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index 47548b650..ce03dc116 100644 --- a/Configuration/GlobalAssemblyInfo.cs +++ b/Configuration/GlobalAssemblyInfo.cs @@ -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; diff --git a/Configuration/Version.defs b/Configuration/Version.defs index ae594f15d..e7c670b57 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ -%COREVERSION%=0 -%REVISION%=3426 %MINOR%=9 +%REVISION%=3427 +%COREVERSION%=0 %MAJOR%=3 diff --git a/Release/pabcversion.txt b/Release/pabcversion.txt index 112fb2d32..f95afe0a3 100644 --- a/Release/pabcversion.txt +++ b/Release/pabcversion.txt @@ -1 +1 @@ -3.9.0.3426 +3.9.0.3427 diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index ad15f8774..095841646 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.9.0.3426' +!define VERSION '3.9.0.3427' diff --git a/TestSuite/CompilationSamples/PABCSystem.pas b/TestSuite/CompilationSamples/PABCSystem.pas index b8e7a757b..4be74b492 100644 --- a/TestSuite/CompilationSamples/PABCSystem.pas +++ b/TestSuite/CompilationSamples/PABCSystem.pas @@ -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(a: array of T); /// Сортирует динамический массив по критерию сортировки, задаваемому функцией сравнения cmp @@ -2166,22 +2167,35 @@ procedure Sort(a: array of T; cmp: (T,T)->integer); procedure Sort(a: array of T; less: (T,T)->boolean); /// Сортирует динамический массив по ключу procedure Sort(a: array of T; keySelector: T->TKey); +/// Сортирует динамический массив по возрастанию +procedure Sort(a: array of string); +/// Сортирует динамический массив по ключу +procedure Sort(a: array of T; keySelector: T->string); + /// Сортирует список по возрастанию procedure Sort(l: List); +/// Сортирует список по возрастанию +procedure Sort(var l: List); /// Сортирует список по критерию сортировки, задаваемому функцией сравнения cmp procedure Sort(l: List; cmp: (T,T)->integer); /// Сортирует список по критерию сортировки, задаваемому функцией сравнения less procedure Sort(l: List; less: (T,T)->boolean); /// Сортирует список по возрастанию по ключу procedure Sort(var l: List; keySelector: T->T1); +/// Сортирует список по возрастанию по ключу +procedure Sort(var l: List; keySelector: T->string); /// Сортирует динамический массив по убыванию procedure SortDescending(a: array of T); /// Сортирует динамический массив по убыванию по ключу procedure SortDescending(var a: array of T; keySelector: T->T1); /// Сортирует список по убыванию procedure SortDescending(l: List); +/// Сортирует список по убыванию +procedure SortDescending(var l: List); /// Сортирует список по убыванию по ключу procedure SortDescending(var l: List; keySelector: T->T1); +/// Сортирует список по убыванию по ключу +procedure SortDescending(var l: List; keySelector: T->string); /// Изменяет порядок элементов в динамическом массиве на противоположный procedure Reverse(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(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(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(l: List); begin l.Sort(); end; +procedure Sort(var l: List); +begin + l := l.OrderBy(x->x, System.StringComparer.Ordinal).ToList; +end; + procedure Sort(var l: List; keySelector: T->T1); begin l := l.OrderBy(x->keySelector(x)).ToList; end; +procedure Sort(var l: List; keySelector: T->string); +begin + l := l.OrderBy(x->keySelector(x),System.StringComparer.Ordinal).ToList; +end; + procedure Sort(l: List; cmp: (T,T)->integer); begin l.Sort(cmp); @@ -8841,11 +8876,21 @@ begin Reverse(l); end; +procedure SortDescending(var l: List); +begin + l := l.OrderByDescending(x->x, System.StringComparer.Ordinal).ToList; +end; + procedure SortDescending(var l: List; keySelector: T->T1); begin l := l.OrderByDescending(x->keySelector(x)).ToList; end; +procedure SortDescending(var l: List; keySelector: T->string); +begin + l := l.OrderByDescending(x->keySelector(x), System.StringComparer.Ordinal).ToList; +end; + procedure Reverse(a: array of T); begin System.Array.Reverse(a); diff --git a/bin/Lib/PABCSystem.pas b/bin/Lib/PABCSystem.pas index b8e7a757b..83807891b 100644 --- a/bin/Lib/PABCSystem.pas +++ b/bin/Lib/PABCSystem.pas @@ -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(a: array of T); /// Сортирует динамический массив по критерию сортировки, задаваемому функцией сравнения cmp @@ -2166,22 +2167,35 @@ procedure Sort(a: array of T; cmp: (T,T)->integer); procedure Sort(a: array of T; less: (T,T)->boolean); /// Сортирует динамический массив по ключу procedure Sort(a: array of T; keySelector: T->TKey); +/// Сортирует динамический массив по возрастанию +procedure Sort(a: array of string); +/// Сортирует динамический массив по ключу +procedure Sort(a: array of T; keySelector: T->string); + /// Сортирует список по возрастанию procedure Sort(l: List); +/// Сортирует список по возрастанию +procedure Sort(var l: List); /// Сортирует список по критерию сортировки, задаваемому функцией сравнения cmp procedure Sort(l: List; cmp: (T,T)->integer); /// Сортирует список по критерию сортировки, задаваемому функцией сравнения less procedure Sort(l: List; less: (T,T)->boolean); /// Сортирует список по возрастанию по ключу procedure Sort(var l: List; keySelector: T->T1); +/// Сортирует список по возрастанию по ключу +procedure Sort(var l: List; keySelector: T->string); /// Сортирует динамический массив по убыванию procedure SortDescending(a: array of T); /// Сортирует динамический массив по убыванию по ключу procedure SortDescending(var a: array of T; keySelector: T->T1); /// Сортирует список по убыванию procedure SortDescending(l: List); +/// Сортирует список по убыванию +procedure SortDescending(var l: List); /// Сортирует список по убыванию по ключу procedure SortDescending(var l: List; keySelector: T->T1); +/// Сортирует список по убыванию по ключу +procedure SortDescending(var l: List; keySelector: T->string); /// Изменяет порядок элементов в динамическом массиве на противоположный procedure Reverse(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(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(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(l: List); begin l.Sort(); end; +procedure Sort(var l: List); +begin + l := l.OrderBy(x->x, System.StringComparer.Ordinal).ToList; +end; + procedure Sort(var l: List; keySelector: T->T1); begin l := l.OrderBy(x->keySelector(x)).ToList; end; +procedure Sort(var l: List; keySelector: T->string); +begin + l := l.OrderBy(x->keySelector(x),System.StringComparer.Ordinal).ToList; +end; + procedure Sort(l: List; cmp: (T,T)->integer); begin l.Sort(cmp); @@ -8841,11 +8876,21 @@ begin Reverse(l); end; +procedure SortDescending(var l: List); +begin + l := l.OrderByDescending(x->x, System.StringComparer.Ordinal).ToList; +end; + procedure SortDescending(var l: List; keySelector: T->T1); begin l := l.OrderByDescending(x->keySelector(x)).ToList; end; +procedure SortDescending(var l: List; keySelector: T->string); +begin + l := l.OrderByDescending(x->keySelector(x), System.StringComparer.Ordinal).ToList; +end; + procedure Reverse(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(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(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(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(Self: array of T; keySelector: T -> T1); extensionmethod; begin @@ -12124,6 +12189,14 @@ begin System.Array.Copy(a,Self,a.Length); end; +/// Сортирует массив по убыванию по ключу +procedure SortDescending(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); diff --git a/bin/Lib/PABCSystem.xml b/bin/Lib/PABCSystem.xml index 7e42fdd67..377976cb0 100644 --- a/bin/Lib/PABCSystem.xml +++ b/bin/Lib/PABCSystem.xml @@ -2136,9 +2136,18 @@ Сортирует динамический массив по ключу + + Сортирует динамический массив по возрастанию + + + Сортирует динамический массив по ключу + Сортирует список по возрастанию + + Сортирует список по возрастанию + Сортирует список по критерию сортировки, задаваемому функцией сравнения cmp @@ -2148,6 +2157,9 @@ Сортирует список по возрастанию по ключу + + Сортирует список по возрастанию по ключу + Сортирует динамический массив по убыванию @@ -2157,9 +2169,15 @@ Сортирует список по убыванию + + Сортирует список по убыванию + Сортирует список по убыванию по ключу + + Сортирует список по убыванию по ключу + Изменяет порядок элементов в динамическом массиве на противоположный @@ -3648,18 +3666,30 @@ Сортирует массив по возрастанию + + Сортирует массив по возрастанию + Сортирует массив по убыванию + + Сортирует массив по убыванию + Сортирует массив по возрастанию, используя cmp в качестве функции сравнения элементов Сортирует массив по возрастанию по ключу + + Сортирует массив по возрастанию по ключу + Сортирует массив по убыванию по ключу + + Сортирует массив по убыванию по ключу + Возвращает индекс последнего элемента массива