Ошибки PascalABC.NET

PascalABC.NET не поддерживает DLR.

В приведённом ниже модуле при нажатии кнопки автоформатирования почему-то дублируется fCalcOp в 45 строке.

CalcUnit.pas (5,2 КБ)

1 лайк

Почему-то выдает ошибку

// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
begin
  Writeln('информатика'[3:9])
end.

А вот так - нормально работает. Странно очень.

// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
begin
  var s:='информатика';
  Writeln(s[3:9])
end.

А вот так работает:

begin
  Writeln(('информатика')[3:9])
end.

Так - понятно, литеральная константа превратилась в выражение. Но почему компилятор не понимает, что в соответствии с синтаксисом литерал и без скобок есть частный случай строкового выражения?

У меня на Убунту 16.04 не запускался консольный компилятор. Верней, при запуске вылетало исключение.

Unhandled Exception: System.TypeInitializationException: The type initializer for ‘PascalABCCompiler.SystemLibrary.SystemLibrary’ threw an exception. —> System.IO.FileNotFoundException: Could not load file or assembly or one of its dependencies. File name: ‘System.Numerics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’ at PascalABCCompiler.SystemLibrary.SystemLibrary.make_types () <0x4057dda0 + 0x0000b> in :0 …

Вылечил установкой пакета libmono-system-numerics4.0. Вдруг кому поможет…

Да, недавно было добавлено представление комплексных чисел в виде (a,b) и компилятор стал использовать System.Numerics. Странно, что он не идет в поставку mono-full

Во-первых, не mono-full, а mono-complete. А во-вторых: у меня он не стоит, чтобы на засорять десятками ненужных пакетов накопитель. Стоит то, что необходимо.

1 лайк

Оказалось, что ещё каких-то сборок не хватало, но не смог понять каких, пришлось поставить mono-complete всё же. У меня просто ноут, ssd небольшой, мне жалко сотню мегабайт под это дело. Ну да ладно…

Сотня мегабайт сегодня это ничто.

Заработал Assert в WDE

1 лайк

Здравствуйте. Некорректно работает генерация реализации элемента управления в конструкторе форм двойным кликом по элементу в случае, когда в конце раздела implementation (перед новосгенерировавшейся процедурой) оказывается коротко определенная функция (например, function Sqr3(x: integer) := xxx; ). Процедура генерируется перед символом “;” в конце коротко сгенерированной функции и это приводит к ошибке компиляции. Выглядит это так:

function Sqr3(x: integer) := xxx

procedure Form1.button1_Click(sender: Object; e: EventArgs); begin

end;;

После завершающей операторной скобки сгенерированной процедуры оказывается два символа “;”.

1 лайк

Не работает переименование переменных в кортежах. Например:

var
  a, b: integer;

begin
  a := 1;
  b := 2;
  (a, b) := (b, a);
end.

При попытке переименовать переменную “а” в “c”(правой кнопкой по переменной, переименовать) получится следующее:

var
   c, b: integer;

begin
  c := 1;
  b := 2;
  (a, b) := (b, a); //!
end.
1 лайк

Пишет, что Нельзя преобразовать тип string к LinkedListNode в строке b := a.first;

var
  a: System.Collections.Generic.Linkedlist<string>;
  b: System.Collections.Generic.Linkedlistnode<string>;
 
begin
  a := new System.Collections.Generic.LinkedList<string>;
  a.AddFirst ('a');
  b := a.first;
end.

тут скорее всего с intellisense проблема, который неправильно тип a.first показывает:

var
  a: System.Collections.Generic.Linkedlist<string>;

begin
  a := new System.Collections.Generic.LinkedList<string>;
  a.AddFirst ('a');
  writeln(a.First.GetType);
end.

в результате выводится: System.String

Ошибка в модуле Robot.

PascalABCCompiler.Core v3.1.0.1267 (10.07.2016), debug version Runtime version: 4.0.30319.42000 OS version: Microsoft Windows NT 6.2.9200.0 Processor count: 4 WorkingSet: 105712 kb

uses Robot;
begin
  Task('a1');
end.

Текст ошибки

Ошибка времени выполнения: System.Reflection.TargetParameterCountException: Несоответствие числа параметров. Стек: в System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous) в System.Windows.Forms.Control.Invoke(Delegate method, Object[] args) в RobotField_implementation______.RobotField_implementation______.__InitModule() в RobotField.RobotField.InitModule() в Robot.Robot.InitModule() в RBa1.Program.$Init() в RBa1.Program.Main()

Версия 3.1. Windows XP. Стояла версия 2.2, потом написал игру у друга на компе, у него версия 3.1 стояла. Скопировал у него установщик, у него всё компилилось, а себе поставил–этот же файл не компилится. Ругается на random: Сначала “невозможно явно привести тип integer к system.Random”, потом пишет "Неизвестное имя: random". Скачал последнюю сборку с сайта- проблема осталась. Переустановил- всё равно ругается. Что делать?

Код приведите

Весь или только тот, который приводит к ошибке?

Лучше минимальный код, приводящий к ошибке.

Желательно проверить еще чтобы в начале файла не было написано uses System;