Ошибки PascalABC.NET

Ну правильно, комит запретивший это был сделан меньше месяца назад, + попадают в билд они далеко не сразу. А вообще надо было сначала обновится, а потом уже вступать в дисскусию))) Могу кстати подарить мою авто обновлялку (исходники). Держу на рабочем столе ярлык от .exe, удобно…

Вообще файлы можно и прямо на форум загружать… Перетащить файл в текст или нажать соответствующую кнопку.

image

Насчёт вашей программы:

1 лайк

18 сообщений перенесены в новую тему: Болталка PascalABC.NET

procedure p1(a,b:byte) := writeln('byte');

procedure p1(a,b:integer) := writeln('integer');

begin
  p1(byte(0),0);
end.

Выводит integer. Это нормальное поведение? Ведь второе число это константа которая может быть любого числового типа… А писать byte(...) для каждого параметра долго и выглядит не читабельно.

1 лайк

Нормальное. В Паскале, если тип константы в выражении явно не указан, то принимается по умолчанию. Для констант, имеющих целочисленное отображение, принимается integer. Вот пример:

begin
  var a:=12345678;
  var x:int64:=a*a;
  Writeln(x);
  x:=a;
  x:=x*x;
  Writeln(x)
end.

Будет выведено

260846532
152415765279684

То есть надо явно указывать типы для всех параметров, как я понял.

Нет, Вы поняли неправильно. Тип параметра уже известен из описания функции (процедуры или что там у Вас), поэтому константа, если это возможно, будет приведена к этому типу. Но если возможны варианты, как это было у @Sun_Serega, надо указать явно, а не пытаться заставлять компилятор побыть буридановым ослом.

1 лайк

Я имел ввиду в случаях таких как у @Sun_Serega.:slightly_smiling_face:

Не 1 из этих случаев не компилируется (если раскомментировать):

type
  t1 = class
    
    //[System.Runtime.InteropServices.DllImport('user32.dll')]
    //function GetKeyState(cc: byte): byte;//Атрибут DllImport неприменим к методам (только к external-подпрограммам)
  
    //[System.Runtime.InteropServices.DllImport('user32.dll')]
    //class function GetKeyState(cc: byte): byte;//Атрибут DllImport неприменим к методам (только к external-подпрограммам)
  
    //[System.Runtime.InteropServices.DllImport('user32.dll')]
    //class function GetKeyState(cc: byte): byte; external;//Подпрограмма должна иметь атрибут DllImport
  
  end;

begin end.

Я не правильно понимаю синтаксис или какой то из этих вариантов правильный, но компилятор всё равно не принимает?

Мне такой синтаксис неизвестен. external-подпрограммы должны быть глобальными процедурами.

  1. external подпрограмма ещё может быть статичной для класса:
type
  t1 = class
    class function GetKeyState(cc: byte): byte;
    external 'user32.dll';
  end;

begin end.

Это компилируется.

  1. Речь сейчас идёт про атрибут DllImport, а атрибуты не работают для глобальных подпрограмм.
[System.Runtime.InteropServices.DllImport('user32.dll')]
function GetKeyState(cc: byte): byte;//Встречено 'function', а ожидалось unit

begin end.

ясно, https://github.com/pascalabcnet/pascalabcnet/issues/777

2 лайка

Ну всё таки, а для глобальных подпрограмм атрибуты должны работать?

Описывать и реализовывать классы в отдельных type не даёт:

type
  t1 = class;//Ошибка: Отсутствует описание типа t1

type
  t1 = class end;

begin end.

Что мешает энкапсуляции:

unit UnitName;

interface

type
  t1 = class;//Ошибка: Отсутствует описание типа t1

implementation

type
  t2 = class end;
  
  t1 = class
  private 
    a: t2;
  end;

end.

В C++ это реализовано вложенными классами, а в паскале, как я понимаю, нету никакого способа.

Предописание - как в Delphi - возможно только в той же директиве type

Когда будет новая версия доступная для скачивания (когда Вы планируете ее выложить)?

Выложили последнюю версию

2 лайка

Временно откатили последнюю версию в связи с ошибкой Ctrl-Space

2 лайка

Не знаю, связано ли это с упомянутой вами ошибкой Ctrl-Space, но у меня в билде 1660 при правом клике на любом пустом месте в редакторе (курсор на пустой строке или отделен пробелами от любых других символов) выдает вот это:

image

Детали
************** Текст исключения **************
System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
   в PascalABCCompiler.PascalABCNewParser.PascalABCNewLanguageParser.BuildTreeInExprMode(String FileName, String Text)
   в PascalABCCompiler.PascalABCNewParser.PascalABCNewLanguageParser.BuildTree(String FileName, String Text, ParseMode ParseMode, List`1 DefinesList)
   в PascalABCCompiler.Parsers.Controller.GetExpression(String FileName, String Text, List`1 Errors, List`1 Warnings)
   в VisualPascalABC.CodeCompletionProvider.GetDefinition(String expr, String fileName, Int32 line, Int32 column, Boolean only_check)
   в VisualPascalABC.CodeCompletionActionsManager.GetDefinitionPosition(TextArea textArea, Boolean only_check)
   в VisualPascalABC.CodeCompletionActionsManager.CanGoTo(TextArea textArea)
   в VisualPascalABC.Form1.OpeningContextMenu(Object sender, CancelEventArgs args)
   в System.ComponentModel.CancelEventHandler.Invoke(Object sender, CancelEventArgs e)
   в System.Windows.Forms.ToolStripDropDown.OnOpening(CancelEventArgs e)
   в System.Windows.Forms.ToolStripDropDown.SetVisibleCore(Boolean visible)
   в System.Windows.Forms.ToolStripDropDown.Show(Control control, Point position)
   в System.Windows.Forms.ContextMenuStrip.ShowInternal(Control source, Point location, Boolean isKeyboardActivated)
   в System.Windows.Forms.Control.WmContextMenu(Message& m, Control sourceControl)
   в System.Windows.Forms.Control.WndProc(Message& m)
   в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Загруженные сборки **************
mscorlib
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2563.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
----------------------------------------
PascalABCNET
    Версия сборки: 3.3.5.1660
    Версия Win32: 3.3.5.1660
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/PascalABCNET.exe
----------------------------------------
System
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Core
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2563.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Windows.Forms
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
PluginsSupport
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/PluginsSupport.DLL
----------------------------------------
CompilerTools
    Версия сборки: 3.3.5.1660
    Версия Win32: 3.3.5.1660
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/CompilerTools.DLL
----------------------------------------
WeifenLuo.WinFormsUI.Docking
    Версия сборки: 2.2.5489.36547
    Версия Win32: 2.2.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/WeifenLuo.WinFormsUI.Docking.DLL
----------------------------------------
Compiler
    Версия сборки: 3.3.5.1660
    Версия Win32: 3.3.5.1660
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/Compiler.DLL
----------------------------------------
Localization
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/Localization.DLL
----------------------------------------
System.Configuration
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2612.0 built by: NET471REL1LAST_B
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
ICSharpCode.TextEditor
    Версия сборки: 0.0.0.0
    Версия Win32: 0.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.TextEditor.DLL
----------------------------------------
CodeCompletion
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/CodeCompletion.DLL
----------------------------------------
ParserTools
    Версия сборки: 3.3.5.1660
    Версия Win32: 3.3.5.1660
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ParserTools.DLL
----------------------------------------
Accessibility
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
Errors
    Версия сборки: 3.3.5.1660
    Версия Win32: 3.3.5.1660
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/Errors.DLL
----------------------------------------
SyntaxTree
    Версия сборки: 3.3.5.1660
    Версия Win32: 3.3.5.1660
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/SyntaxTree.DLL
----------------------------------------
ICSharpCode.SharpDevelop
    Версия сборки: 4.2.1.0
    Версия Win32: 4.2.1.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.SharpDevelop.DLL
----------------------------------------
ICSharpCode.Core
    Версия сборки: 4.2.1.0
    Версия Win32: 4.2.1.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.Core.DLL
----------------------------------------
ICSharpCode.SharpDevelop.Dom
    Версия сборки: 4.2.1.8805
    Версия Win32: 4.2.1.8805
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.SharpDevelop.Dom.DLL
----------------------------------------
ICSharpCode.NRefactory
    Версия сборки: 4.2.1.8805
    Версия Win32: 4.2.1.8805
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.NRefactory.DLL
----------------------------------------
ICSharpCode.AvalonEdit
    Версия сборки: 4.2.1.8805
    Версия Win32: 4.2.1.8805
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.AvalonEdit.DLL
----------------------------------------
ICSharpCode.Core.Presentation
    Версия сборки: 4.2.1.0
    Версия Win32: 4.2.1.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.Core.Presentation.DLL
----------------------------------------
ICSharpCode.SharpDevelop.Widgets
    Версия сборки: 4.2.1.8805
    Версия Win32: 4.2.1.8805
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.SharpDevelop.Widgets.DLL
----------------------------------------
ICSharpCode.Core.WinForms
    Версия сборки: 4.2.1.0
    Версия Win32: 4.2.1.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.Core.WinForms.DLL
----------------------------------------
System.Design
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Design/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Design.dll
----------------------------------------
Debugger.Core
    Версия сборки: 3.0.0.2649
    Версия Win32: 3.0.0.2649
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/Debugger.Core.DLL
----------------------------------------
System.Data
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2623.0 built by: NET471REL1LAST_C
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
TreeConverter
    Версия сборки: 3.3.5.1660
    Версия Win32: 3.3.5.1660
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/TreeConverter.DLL
----------------------------------------
NETGenerator
    Версия сборки: 3.3.5.1660
    Версия Win32: 3.3.5.1660
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/NETGenerator.DLL
----------------------------------------
SyntaxTreeConverters
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/SyntaxTreeConverters.DLL
----------------------------------------
SemanticTree
    Версия сборки: 3.3.5.1660
    Версия Win32: 3.3.5.1660
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/SemanticTree.DLL
----------------------------------------
System.Numerics
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
PascalABCParser
    Версия сборки: 0.0.0.0
    Версия Win32: 0.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/PascalABCParser.DLL
----------------------------------------
OptimizerConversion
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/OptimizerConversion.DLL
----------------------------------------
InternalErrorReport
    Версия сборки: 1.0.6684.39352
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/InternalErrorReport.DLL
----------------------------------------
PT4Provider
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/PT4Provider.DLL
----------------------------------------
PT4Tools
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/PT4Tools.DLL
----------------------------------------
SharpDisasm
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/SharpDisasm.DLL
----------------------------------------
StandardSyntaxTreeConverter
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/StandardSyntaxTreeConverter.DLL
----------------------------------------
SyntaxVisitors
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/SyntaxVisitors.DLL
----------------------------------------
YieldConversionSyntax
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/YieldConversionSyntax.DLL
----------------------------------------
YieldHelpers
    Версия сборки: 1.0.0.0
    Версия Win32: 1.0.0.0
    CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/YieldHelpers.DLL
----------------------------------------
mscorlib.resources
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
System.Windows.Forms.resources
    Версия сборки: 4.0.0.0
    Версия Win32: 4.7.2558.0 built by: NET471REL1
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------

У нас всё работает. Попробуйте инсталлировать сейчас с сайта в другой каталог.

1 лайк