Ошибки PascalABC.NET

Ну, в #884 вы тоже сказали что это слишком сложно для вашего анализатор кода, но оказалось просто. Давайте всё же разберёмся перед тем как говорить что вы не сможете это реализовать.

Но это сбивает с толку. И какой массив получается на выходе? С подмассивами одинаковой длины “отнормированными” по первому? А зачем? Вся фишка массива массивов в том, что у него внутренние массивы разной длины, а так получается, что, в лучшем случае, их дополняет нулями. И что же делать? Инициализировать другими способами можно, но что с этим способом? Уберете его?

1 лайк

ibond у нас ответственный за Intellisense. А где я говорил, что не будем реализовывать?

А может вспомнить, что основная ниша - это обучение и не оглядываться постоянно на Delphi там, где это вредит языку?

Как пример, была такая настольная СУБД - FoxPro. Еще в ДОС-версиях, тогда еще Microsoft и не думал ее приобретать. Кроме совершенно новых и продвинутых инструментов, она содержала в себе все, что было у предшественников - dBASE и FoxBASE, как и PasalABC.NET содержит в себе “наследие предков”. Это было понятно: имелось большое количество старых наработок и надо было дать возможность безболезненного портирования. Потом появились версии Visual FoxPro (VFP в народе), которые по-прежнему тащили в себе груз еще от dBASE - но это оправдывалось тем, что "а вот люди перешли со старых программ на FoxPro/DOS и теперь им надо обеспечить портирование под VFP. Выходили новые версии VFP, впечатленная производительностью, эту СУБД приобрела Microsoft. А старое наследие в языке так и оставалось. И только в последних версиях, когда уже ясно стало, что сохранение “старья” тормозит новые концепции, от него начали избавляться. Да и то в виде полумеры: директивным переключением движка СУБД между разными синтаксисами.

Может, пора бы и в PascalABC.NET кое от чего избавиться, если оно сильно мешает, а не воевать с этими ветряными мельницами? А то может получиться, как старом анекдоте.

Посетитель небольшого кафе делает заказ и в ожидании разглядывает интерьер. Его внимание привлекает большой транспарант: “Война мухам!”. Между тем мухи с немалым энтузиазмом в заведении присутствуют. Посетитель интересуется у официанта, как это соотносится с лозунгом о войне и получает ответ: “Да, война была. Но мы проиграли…”

Не хотелось бы проиграть войну из-за вопроса совместимости чего-то там с какой-то устаревшей Delphi.

1 лайк

Вы сказали что это не ошибка. не_ошибка, в моём понимании, это то что так и задумано, а значит и не должно быть исправлено. Ну ладно, тогда тоже закину в issue.

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

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.

?