diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index 8c80929f6..445c8f75b 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 = "3500"; + public const string Revision = "3502"; 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 ce881dd6c..6306f336b 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ %COREVERSION%=0 -%REVISION%=3500 +%REVISION%=3502 %MINOR%=9 %MAJOR%=3 diff --git a/Localization/DefaultLang.resources b/Localization/DefaultLang.resources index 74c9d478d..b4578ef92 100644 Binary files a/Localization/DefaultLang.resources and b/Localization/DefaultLang.resources differ diff --git a/Release/pabcversion.txt b/Release/pabcversion.txt index aa99d3994..396a76da1 100644 --- a/Release/pabcversion.txt +++ b/Release/pabcversion.txt @@ -1 +1 @@ -3.9.0.3500 +3.9.0.3502 diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index 7e96fd1fc..85df5fe14 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.9.0.3500' +!define VERSION '3.9.0.3502' diff --git a/TestSuite/CompilationSamples/LightPT.pas b/TestSuite/CompilationSamples/LightPT.pas index 0667da68a..951b7f523 100644 --- a/TestSuite/CompilationSamples/LightPT.pas +++ b/TestSuite/CompilationSamples/LightPT.pas @@ -193,20 +193,21 @@ function ToObjArray(a: sequence of boolean): array of object; { Основные процедуры для проверки правильности ввода-вывода } {=========================================================================} -// Самые часто используемые: CheckInput, CheckOutput, CheckOutputSeq +// Самые часто используемые: CheckOutput +// CheckInput заменено на CheckData -/// Проверить типы вводимых данных +/// Проверить типы вводимых данных. Пользуйтесь CheckData(Input := cInt * 2) procedure CheckInput(a: array of System.Type); -/// Проверить значения при выводе +/// Проверить значения при выводе. Основной способ проверки procedure CheckOutput(params arr: array of object); /// Проверить значения при выводе. Сообщения ColoredMessage гасить. Нужно для повторных вызовов CheckOutput procedure CheckOutputSilent(params arr: array of object); -/// Проверить значения при выводе +/// Проверить значения при выводе. Основной способ проверки procedure CheckOutput(a: ObjectList); /// Проверить значения при выводе. Сообщения ColoredMessage гасить. Нужно для повторных вызовов CheckOutput procedure CheckOutputSilent(a: ObjectList); -/// Проверить, что данные не вводились +/// Проверить, что данные не вводились. Пользуйтесь CheckData(Empty) procedure CheckInputIsEmpty; /// Проверить, что помимо начального ввода других данных не вводилось @@ -253,9 +254,11 @@ procedure CheckOutputSeqSilent(a: sequence of boolean); procedure CheckOutputSeqSilent(a: sequence of object); /// Проверить последовательность значений при выводе. Не выводить сообщения ColoredMessages procedure CheckOutputSeqSilent(a: sequence of word); + /// Проверить последовательность значений при выводе. Не выводить сообщения ColoredMessages procedure CheckOutputSeqSilent(a: ObjectList); + /// Проверить вывод в виде строки procedure CheckOutputString(str: string); @@ -271,17 +274,6 @@ function CompareArrValues(a,lst: array of object): boolean; /// Сравнить значения с выводом function CompareValuesWithOutput(params a: array of object): boolean; -// Для совместимости -procedure CheckOutputNew(params arr: array of object); -procedure CheckOutputSeqNew(a: sequence of integer); -procedure CheckOutputSeqNew(a: sequence of real); -procedure CheckOutputSeqNew(a: sequence of string); -procedure CheckOutputSeqNew(a: sequence of char); -procedure CheckOutputSeqNew(a: sequence of boolean); -procedure CheckOutputSeqNew(a: sequence of object); -procedure CheckOutputSeqNew(a: sequence of word); -procedure CheckOutputSeqNew(a: ObjectList); - {============================================================================================} { Подпрограммы для проверки начального ввода-вывода, представленного в заготовке задания } {============================================================================================} @@ -559,7 +551,7 @@ procedure GenerateTests(params a: array of (T1,T2,T3)); procedure ConvertStringsToNumbersInOutputList; /// Если в OutputList массивы, вытянуть их в единый список procedure FlattenOutput; -/// Очистить выходной список от пробелов +/// Очистить выходной список от пробелов, возникающих в методах расширения типа a.Print. Очень редко очищать не надо при решении задач на символы с пробелами procedure ClearOutputListFromSpaces; /// Отфильтровать в выходном списке только числа procedure FilterOnlyNumbers; @@ -2220,11 +2212,14 @@ procedure CheckOutputAfterInitialSeqSilent(seq: sequence of char); begin Silent procedure CheckOutputAfterInitialSeqSilent(seq: sequence of object); begin Silent := True; CheckOutputAfterInitialSeq(seq); Silent := False; end; procedure CheckOutputAfterInitialSeqSilent(seq: ObjectList); begin Silent := True; CheckOutputAfterInitialSeq(seq); Silent := False; end; +var OutputListIsClearedFromSpaces := False; procedure ClearOutputListFromSpaces; begin + if OutputListIsClearedFromSpaces then exit; OutputList := OutputList.Where(s -> (not (s is string)) or ((s as string) <> ' ')).ToList; OutputList := OutputList.Where(s -> (not (s is char)) or ((char(s)) <> ' ')).ToList; + OutputListIsClearedFromSpaces := True; end; procedure FilterOnlyNumbers; diff --git a/TestSuite/CompilationSamples/TasksArr.pas b/TestSuite/CompilationSamples/TasksArr.pas index 2c4fabae2..ad64067d5 100644 --- a/TestSuite/CompilationSamples/TasksArr.pas +++ b/TestSuite/CompilationSamples/TasksArr.pas @@ -387,7 +387,11 @@ procedure CheckTaskT(name: string); CheckData(Input := Empty); CheckOutput(ArrGen(10,1,i->i*2).Sum); end; - + 'ЗаполнениеСумма3_add': begin + CheckData(Input := |cInt|*1); + var n := Int; + CheckOutput(ArrGen(n,i -> (i+1)*(i+1)).Sum); + end; // 'Arr_Transf1' 'Arr_Transf1a' 'Arr_Transf2' 'Arr_Transf3' 'Arr_Transf4' 'Arr_Transf5' 'Arr_Transf7' 'Arr_Transf8' 'Arr_Transf9'- задачник 'Arr_Transf6': begin FilterOnlyNumbersAndBools; diff --git a/TestSuite/CompilationSamples/TasksStr.pas b/TestSuite/CompilationSamples/TasksStr.pas index 78728f99c..c5ae14187 100644 --- a/TestSuite/CompilationSamples/TasksStr.pas +++ b/TestSuite/CompilationSamples/TasksStr.pas @@ -44,7 +44,7 @@ procedure CheckTaskT(name: string); end; 'CharRange1': begin CheckData(Input := Empty); - CheckOutput('0'..'9', 'a'..'z', 'а'..'я'); + CheckOutput('0'..'9', 'a'..'z', 'А'..'Я'); end; 'CharRange2': begin CheckData(Input := |cChar|); @@ -283,7 +283,7 @@ procedure CheckTaskT(name: string); end; 'StrSlice2': begin CheckData(Input := Empty); - CheckOutputSeq(Arr('клад зарыт на юго западе', 'зашифрованное сообщение')); + CheckOutput('клад зарыт на юго западе', 'зашифрованное сообщение'); end; 'StrSlice4': begin CheckData(Input := Empty); @@ -293,6 +293,14 @@ procedure CheckTaskT(name: string); CheckData(Input := Empty); CheckOutput('оценка1', 'балл2', 'окно3'); end; + 'Str_Number01': begin + CheckData(Input := Empty); + CheckOutput('25', '476', '2296'); + end; + 'Str_Number02': begin + CheckData(Input := Empty); + CheckOutput(25,476,3.1415,2.8); + end; 'Str_Number03': begin CheckData(Input := Empty); CheckOutput(386); @@ -326,6 +334,6 @@ initialization 'Pos1','Pos2','Delete1','Delete2','Delete3','Insert1','Insert2', 'StrChange1','StrChange2','StrBorder0','StrBorder1', 'StrSlice1','StrSlice2','StrSlice4', - 'Str_Number0','Str_Number03','Str_Number04','Str_Number05','Str_Number06' ); + 'Str_Number0','Str_Number01','Str_Number02','Str_Number03','Str_Number04','Str_Number05','Str_Number06' ); finalization end. \ No newline at end of file diff --git a/TestSuite/CompilationSamples/WPF.pas b/TestSuite/CompilationSamples/WPF.pas index 97181f036..ea7b3162c 100644 --- a/TestSuite/CompilationSamples/WPF.pas +++ b/TestSuite/CompilationSamples/WPF.pas @@ -17,12 +17,12 @@ type TControl = Control; - Panel = Panel; - Grid = Grid; + Panel = System.Windows.Controls.Panel; + Grid = System.Windows.Controls.Grid; Canvas = System.Windows.Controls.Canvas; - StackPanel = StackPanel; - DockPanel = DockPanel; - WrapPanel = WrapPanel; + StackPanel = System.Windows.Controls.StackPanel; + DockPanel = System.Windows.Controls.DockPanel; + WrapPanel = System.Windows.Controls.WrapPanel; TPanel = Panel; TGrid = Grid; @@ -39,7 +39,7 @@ TextBox = TextBox; Slider = Slider; ComboBox = ComboBox; - TextBlock = TextBlock; + TextBlock = System.Windows.Controls.TextBlock; Border = System.Windows.Controls.Border; Rectangle = Rectangle; @@ -111,6 +111,8 @@ function EmptyColor: Color := ARGB(0,0,0,0); function Pnt(x,y: real) := new Point(x,y); function Rect(x,y,w,h: real) := new System.Windows.Rect(x,y,w,h); +function MainPanel: Panel := MainWindow.Content as Panel; + function CreateDrawing := Drawing.Create; function operator implicit(n: integer): Thickness; extensionmethod; @@ -148,7 +150,6 @@ function operator implicit(name: string): FontFamily; extensionmethod; Result := new FontFamily(name); end; - procedure SetPosition(Self: Control; Left,Top: real); extensionmethod; begin Canvas.SetLeft(Self,Left); @@ -494,8 +495,7 @@ initialization MainWindow.Left := w/2; MainWindow.Top := h/2; - var gr := new Grid; - MainWindow.Content := gr; + MainWindow.Content := new WrapPanel; CurrentParent := MainWindow; finalization Application.Run(MainWindow); diff --git a/TestSuite/errors/err0540.pas b/TestSuite/errors/err0540.pas index 4f09fece0..97ea8fd16 100644 --- a/TestSuite/errors/err0540.pas +++ b/TestSuite/errors/err0540.pas @@ -1,4 +1,4 @@ -//!Только динамический массив может описываться с ключевым словом params +//!Только одномерный динамический массив может описываться с ключевым словом params procedure pr1(params par1: array[,] of integer); begin end; diff --git a/TestSuite/errors/err0541.pas b/TestSuite/errors/err0541.pas index df18bc309..966dc67b5 100644 --- a/TestSuite/errors/err0541.pas +++ b/TestSuite/errors/err0541.pas @@ -1,4 +1,4 @@ -//!Только динамический массив может описываться с ключевым словом params +//!Только одномерный динамический массив может описываться с ключевым словом params type TClass = class end; diff --git a/bin/Lib/WPF.pas b/bin/Lib/WPF.pas index 97181f036..ea7b3162c 100644 --- a/bin/Lib/WPF.pas +++ b/bin/Lib/WPF.pas @@ -17,12 +17,12 @@ type TControl = Control; - Panel = Panel; - Grid = Grid; + Panel = System.Windows.Controls.Panel; + Grid = System.Windows.Controls.Grid; Canvas = System.Windows.Controls.Canvas; - StackPanel = StackPanel; - DockPanel = DockPanel; - WrapPanel = WrapPanel; + StackPanel = System.Windows.Controls.StackPanel; + DockPanel = System.Windows.Controls.DockPanel; + WrapPanel = System.Windows.Controls.WrapPanel; TPanel = Panel; TGrid = Grid; @@ -39,7 +39,7 @@ TextBox = TextBox; Slider = Slider; ComboBox = ComboBox; - TextBlock = TextBlock; + TextBlock = System.Windows.Controls.TextBlock; Border = System.Windows.Controls.Border; Rectangle = Rectangle; @@ -111,6 +111,8 @@ function EmptyColor: Color := ARGB(0,0,0,0); function Pnt(x,y: real) := new Point(x,y); function Rect(x,y,w,h: real) := new System.Windows.Rect(x,y,w,h); +function MainPanel: Panel := MainWindow.Content as Panel; + function CreateDrawing := Drawing.Create; function operator implicit(n: integer): Thickness; extensionmethod; @@ -148,7 +150,6 @@ function operator implicit(name: string): FontFamily; extensionmethod; Result := new FontFamily(name); end; - procedure SetPosition(Self: Control; Left,Top: real); extensionmethod; begin Canvas.SetLeft(Self,Left); @@ -494,8 +495,7 @@ initialization MainWindow.Left := w/2; MainWindow.Top := h/2; - var gr := new Grid; - MainWindow.Content := gr; + MainWindow.Content := new WrapPanel; CurrentParent := MainWindow; finalization Application.Run(MainWindow);