From 1d28d5030b008241b6a44e7d49656e525e70899a Mon Sep 17 00:00:00 2001 From: Mikhalkovich Stanislav Date: Mon, 10 Jul 2023 11:20:04 +0300 Subject: [PATCH] 3.9.0.3307 Release --- Configuration/GlobalAssemblyInfo.cs | 2 +- Configuration/Version.defs | 2 +- Release/pabcversion.txt | 2 +- ReleaseGenerators/PascalABCNET_version.nsh | 2 +- TestSuite/CheckOutputSeq.pas | 8 ++++++++ TreeConverter/TreeRealization/type_table.cs | 6 ++++-- .../TeacherControlPlugin.cs | 11 +++++++++++ bin/Lib/LightPT.pas | 17 +++++++++++------ 8 files changed, 38 insertions(+), 12 deletions(-) create mode 100644 TestSuite/CheckOutputSeq.pas diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index 9d59f2c33..1d34f9096 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 = "3305"; + public const string Revision = "3307"; 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 716cf6fdd..88d121892 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ %MINOR%=9 -%REVISION%=3305 +%REVISION%=3307 %COREVERSION%=0 %MAJOR%=3 diff --git a/Release/pabcversion.txt b/Release/pabcversion.txt index f2794d66f..7605f542e 100644 --- a/Release/pabcversion.txt +++ b/Release/pabcversion.txt @@ -1 +1 @@ -3.9.0.3305 +3.9.0.3307 diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index e09acd85d..e5a5e87a7 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.9.0.3305' +!define VERSION '3.9.0.3307' diff --git a/TestSuite/CheckOutputSeq.pas b/TestSuite/CheckOutputSeq.pas new file mode 100644 index 000000000..8e408ec59 --- /dev/null +++ b/TestSuite/CheckOutputSeq.pas @@ -0,0 +1,8 @@ +procedure CheckOutputSeq(a: sequence of char); begin end; + +procedure CheckOutputSeq(a: sequence of object); begin end; + +begin + var a := ArrFill(10,'*'); + CheckOutputSeq(a); +end. \ No newline at end of file diff --git a/TreeConverter/TreeRealization/type_table.cs b/TreeConverter/TreeRealization/type_table.cs index 44782e256..ff2367a92 100644 --- a/TreeConverter/TreeRealization/type_table.cs +++ b/TreeConverter/TreeRealization/type_table.cs @@ -573,8 +573,10 @@ namespace PascalABCCompiler.TreeRealization var ImplementingInterfaces = tnode.ImplementingInterfaces.ToList(); // Из-за этой строки возникла ошибка https://github.com/pascalabcnet/pascalabcnet/issues/2872 // Но без этой строчки не работает преобразование sequence of Student к sequence of Person и sequence of object - //if (tnode.IsInterface) - // ImplementingInterfaces.Add(tnode); + // SSM 19/07/23 - снова раскомментировал - теперь не работало + // CheckOutputSeq(a); в Tasks где var a: array of char + if (tnode.IsInterface) + ImplementingInterfaces.Add(tnode); foreach (var interf in ImplementingInterfaces) { var ctn = interf as compiled_type_node; diff --git a/VisualPlugins/TraningControlPlugin/TeacherControlPlugin.cs b/VisualPlugins/TraningControlPlugin/TeacherControlPlugin.cs index 880fdfb53..a27ff0734 100644 --- a/VisualPlugins/TraningControlPlugin/TeacherControlPlugin.cs +++ b/VisualPlugins/TraningControlPlugin/TeacherControlPlugin.cs @@ -273,6 +273,17 @@ namespace VisualPascalABCPlugins private void ChangeArgsBeforeRunHandler(ref string args) { args += " " + loginForm.Authorized.ToString(); + var FileName = Workbench.ServiceContainer.DocumentService.CurrentCodeFileDocument.FileName; + // Ладно - это текст + var text = Workbench.VisualEnvironmentCompiler.StandartCompiler.GetSourceFileText(FileName); + //text = System.Text.RegularExpressions.Regex.Replace(text, "\"", "\\\""); + if (text.Length > 5000) + text = text.Substring(0, 5000); + text = text.Replace("\\\"", "\\ \""); + text = text.Replace("\"", "\\\""); + //text = System.Text.RegularExpressions.Regex.Unescape(text); + args += " " + "\""+ text + "\""; + //args += " HelloBye23"; } } } diff --git a/bin/Lib/LightPT.pas b/bin/Lib/LightPT.pas index 4c03688ea..c5682703d 100644 --- a/bin/Lib/LightPT.pas +++ b/bin/Lib/LightPT.pas @@ -477,7 +477,7 @@ type client.Timeout := TimeSpan.FromSeconds(10); end; - function SendPostRequest(FullFIO, Password, LessonName, TaskName, TaskPlatform, TaskResult, TaskResultInfo: string): Task; + function SendPostRequest(FullFIO, Password, LessonName, TaskName, TaskPlatform, TaskResult, text, TaskResultInfo: string): Task; begin var values := Dict( ( 'shortFIO', '' ), @@ -487,7 +487,7 @@ type ( 'taskPlatform', TaskPlatform ), ( 'taskResult', TaskResult ), ( 'taskResultInfo', TaskResultInfo ), - ( 'content', '' ), + ( 'content', text ), ( 'password', Password ) ); var content := new FormUrlEncodedContent(values); @@ -2136,7 +2136,7 @@ end; { Процедуры для записи в базы данных } {=========================================================} -procedure WriteInfoToRemoteDatabase(auth: string; LessonName, TaskName, TaskPlatform, TaskResult, AdditionalInfo: string); +procedure WriteInfoToRemoteDatabase(auth: string; LessonName, TaskName, TaskPlatform, TaskResult, text, AdditionalInfo: string); begin // Считать логин пароль из auth var data := System.IO.File.ReadAllBytes(auth); @@ -2148,7 +2148,7 @@ begin pass := arr[1]; // Теперь как-то записать в БД информацию var User := new ServerAccessProvider(ServerAddr); - var t2 := User.SendPostRequest(login, pass, LessonName, TaskName, TaskPlatform, TaskResult, AdditionalInfo); + var t2 := User.SendPostRequest(login, pass, LessonName, TaskName, TaskPlatform, TaskResult, text, AdditionalInfo); var v := t2.Result; v := v; //Console.WriteLine(v); @@ -2161,9 +2161,14 @@ begin System.IO.File.AppendAllText('db.txt', $'{LessonName} {TaskName} {dateTime.Now.ToString(''u'')} {TaskResult.ToString} {AdditionalInfo}' + #10); var auth := FindAuthDat(); var args := System.Environment.GetCommandLineArgs; - if (auth <> '') and (args.Length = 3) and (args[2].ToLower = 'true') then + if (auth <> '') and (args.Length >= 3) and (args[2].ToLower = 'true') then + begin + var text := ''; + if TaskResult <> InitialTask then + text := args[3]; // Есть проблема паузы при плохой сети - WriteInfoToRemoteDatabase(auth,LessonName,TaskName,TaskPlatform,TaskResult.ToString, AdditionalInfo); + WriteInfoToRemoteDatabase(auth,LessonName,TaskName,TaskPlatform,TaskResult.ToString, text, AdditionalInfo); + end except on e: System.AggregateException do begin