Ошибки PascalABC.NET

Нет, это я сказал по поводу разного количества элементов во вложенных массивах.

1 лайк

Модуль Graph3D. Не работает анимация масштабирования при задании параметра времени выполнения. “Ошибка времени выполнения: System.InvalidProgramException: Среда выполнения Common Language Runtime обнаружила недопустимую программу.”

Ошибка действительно не правильная, но приведите пожалуйста код. Из описания словами не понятно.

Пример программы есть в папке “Samples”. Вот этот тоже не работает:

uses Graph3D;
begin
  var b := Sphere(Origin,0.2,Colors.red);
  var c:=b.AnimScale(3,1);
  c.Begin;
end.`

Если вместо " var c:=b.AnimScale(3,1)" написать просто “var c:=b.AnimScale(3)”, то ошибки не будет.

У меня не воспроизводится (ваша программа и все программы из Samples, содержащие AnimScale). Возможно это уже исправили в последней версии? Попробуйте обновиться.

intellisence показывает массив целых после Power

begin
  var n := 10;
  var a := Range(1, n).Select(el -> Power(2, el)).ToArray;
  a.Println;
end.

Скрин там

В том то и дело, что версия последняя (3.4 от 01.07.2018) + Microsoft .NET Framework 4.7.1. Ошибка повторяется на двух разных компьютерах.

Попробуйте скачать сейчас и отпишитесь, заработало ли.

1 лайк

да

1 лайк

Да, известная проблема. Ещё не до конца реализовали лямбды для шаблонных функций. А Select как раз шаблонная, она может менять тип возвращаемого параметра в зависимости от того - какая лямбда.

Из решений на пока что - вижу только:

begin
  var n := 10;
  var a: array of real := Range(1, n).Select(el -> Power(2, el)).ToArray;
  a.Println;
end.

По крайней мере, после этого анализатор кода работает правильно для a.

Ошибка времени выполнения: System.BadImageFormatException: Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)

begin
  var tupl := (1,2,[3,4,5]);
  Print(tupl.Item1);
end.

У меня не воспроизводится.

У меня воспроизвелось

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

begin
 var tupl := new System.Tuple<integer,integer,TypedSet>(1,2,[3,4,5]);
 Print(tupl.Item1);
end.

?

Да

А с кортежем у Вас не работало?

А скиньте ка .exe файл, который получается когда вы компилируете. Я попробую декомпилировать, возможно это даст всю необходимую информацию чтоб исправить.

Program4.exe (25 КБ)

Это файл скомпилированный с моего кода, того что с ошибкой

{$platformtarget x86}
begin
  var tupl := (1,2,[3,4,5]);
  Print(tupl.Item1);
  readln;
end.

Уточнение. Эта ошибка возникает только при компиляции на 32-битных платформах и с включенным ускорением запуска (с PABCRtl).