diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index becb37c1c..0abda6a6e 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 = "4"; public const string Build = "0"; - public const string Revision = "1721"; + public const string Revision = "1723"; 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 17cb9007e..2fd6f0d72 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ %COREVERSION%=0 -%REVISION%=1721 +%REVISION%=1723 %MINOR%=4 %MAJOR%=3 diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index ebf41443c..0fb55a015 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.4.0.1721' +!define VERSION '3.4.0.1723' diff --git a/TestSuite/CompilationSamples/PABCSystem.pas b/TestSuite/CompilationSamples/PABCSystem.pas index 3775216c5..a31d3c4d8 100644 --- a/TestSuite/CompilationSamples/PABCSystem.pas +++ b/TestSuite/CompilationSamples/PABCSystem.pas @@ -1455,6 +1455,8 @@ function UpperCase(s: string): string; function StringOfChar(ch: char; count: integer): string; /// Возвращает инвертированную строку function ReverseString(s: string): string; +/// Возвращает инвертированную строку в диапазоне длины length начиная с индекса index +function ReverseString(s: string; index,length: integer): string; /// Сравнивает строки. Возвращает значение < 0 если s1 0 если s1>s2 и = 0 если s1=s2 function CompareStr(s1, s2: string): integer; /// Возвращает первые count символов строки s @@ -7627,6 +7629,13 @@ begin Result := new string(ca); end; +function ReverseString(s: string; index,length: integer): string; +begin + var ca := s.ToCharArray; + &Array.Reverse(ca,index,length); + Result := new string(ca); +end; + function CompareStr(s1, s2: string): Integer; begin Result := string.CompareOrdinal(s1, s2); @@ -11218,6 +11227,14 @@ begin System.Threading.Thread.CurrentThread.CurrentUICulture := System.Globalization.CultureInfo.GetCultureInfo(locale_str); nfi := new System.Globalization.NumberFormatInfo(); nfi.NumberGroupSeparator := '.'; + + // SSM 1.08.18 только в текущем потоке будет точка в вещетвенных + // В Net 4.6 System.Globalization.CultureInfo.DefaultThreadCurrentCulture := ci + // Но как сделать чтобы работало и в младших NET - не знаю + var ci := (System.Globalization.CultureInfo.CurrentCulture.Clone as System.Globalization.CultureInfo); + ci.NumberFormat := nfi; + System.Globalization.CultureInfo.CurrentCulture := ci; + // System.Threading.Thread.CurrentThread.CurrentCulture := new System.Globalization.CultureInfo('en-US'); //rnd := new System.Random; StartTime := DateTime.Now; diff --git a/bin/Lib/Graph3D.pas b/bin/Lib/Graph3D.pas index 269b79d85..546b593e6 100644 --- a/bin/Lib/Graph3D.pas +++ b/bin/Lib/Graph3D.pas @@ -1066,9 +1066,10 @@ type Element.transfgroup.Children.Add(el); var ttname := 't' + el.GetHashCode; if not RegisterName(sb, el, ttname) then; - dax := AddDoubleAnimByNameUsingKeyframes(sb, a.Select(p -> p.x-Element.x), seconds, ttname, TranslateTransform3D.OffsetXProperty); - day := AddDoubleAnimByNameUsingKeyframes(sb, a.Select(p -> p.y-Element.y), seconds, ttname, TranslateTransform3D.OffsetYProperty); - daz := AddDoubleAnimByNameUsingKeyframes(sb, a.Select(p -> p.z-Element.z), seconds, ttname, TranslateTransform3D.OffsetZProperty); + var aa := a.ToArray; + dax := AddDoubleAnimByNameUsingKeyframes(sb, aa.Select(p -> p.x-Element.x), seconds, ttname, TranslateTransform3D.OffsetXProperty); + day := AddDoubleAnimByNameUsingKeyframes(sb, aa.Select(p -> p.y-Element.y), seconds, ttname, TranslateTransform3D.OffsetYProperty); + daz := AddDoubleAnimByNameUsingKeyframes(sb, aa.Select(p -> p.z-Element.z), seconds, ttname, TranslateTransform3D.OffsetZProperty); daz.Completed += Hand; end;