Хотел бы поблагодарить разработчиков за отличную работу, в результате которой система PascalABC.NET стала лучшим в мире средством обучения программированию.
Надеюсь, на этом работа не закончилась.
Например, хотелось бы иметь настраиваемую панель инструментов. Сейчас на ней отсутствует очень нужная кнопка запуска программы без связи с оболочкой, зато жёстко закреплены 3 кнопки задачника Абрамяна.
Кстати говоря, задачник Абрамяна требует установки .NET Framework 3.5, а сама система работает с версией 4.0.
Необходимо устранить этот анахронизм, который создаёт проблемы с запуском задачнике в ОС Windows 10. Она, как известно, не переносит .NET Framework 3.5, поэтому приходится изловчаться, чтобы её установить.
Надеемся, что поскольку разработка стала свободной, появятся контрибуторы, которые будут решать вопросы, подобные Настраиваемой панели инструментов.
Записал сюда: https://github.com/pascalabcnet/pascalabcnet/issues/
Про .NET 3.5 и проблемах с запуском задачника - расскажите, когда и как это происходит. Там только одна dll под 3.5 - она связана с XML - странно, что Вы ее вообще нашли. Почему Вы решили, что весь задачник Абрамяна требует .NET 3.5? Он в основном состоит из нативных dll.
Пришлось установить Windows 10 (восьмая версия благополучно загнулась). Система PascalABC.NET на десятой версии работает отлично. Но при запуске задачника Абрамяна (те самые 3 кнопки) ОС выдаёт сообщение, что программе для работы требуется .NET framework 3.5. Лично я не искал библиотек dll, их проверяет Windows 10.
В принципе, можно загружать задачи вручную, минуя диалоговые окна задачника, но это неудобно.
Сейчас я на другом компьютере, поэтому нашёл картинку в Инете:
Отправил по почте сообщение об ошибке, обнаруженной в версии 3.0. Ответа нет. На всякий случай решил продублировать его здесь
Неожиданно обнаружилась стойкая ошибка- Не обрабатывается унарный минус в операции присваивания переменной типа single значения другой переменной типа single.
Так, в последовательности операторов вида
a := -1; b := -a обе переменные получают значение -1.
Ошибка устраняется при записи
a:=-1;
b:=0-a.
Если использовать тип double/real, то ошибки нет.
PascalABCCompiler.Core v3.0.0.1064
(24.10.2015), debug version
Runtime version:
4.0.30319.1
OS version: Microsoft Windows NT
5.1.2600 Service Pack 3
Processor count:
2
WorkingSet: 66632 kb:
Попутно возник вопрос о последовательностях.
var a:=SeqRandom(10,-5,5); Writeln(a); Writeln(a); дает вот такую выдачу
[2,2,1,4,-4,0,1,-1,5,1]
[0,0,-2,-3,5,-2,2,4,-4,-4]
Конечно, я понимаю, что если последовательность не хранится, а каждый раз порождается в соответствии
с записанным для нее выражением, то SeqRandom() – это «большой сюрпризец», но где реально его можно применить?
Доброго времени суток, сборка 1073, исчезла ошибка с унарным минусом для типа single.
Зато появилась новая ошибка, которой не было в сборке 1066: по крайней мере в ReadReal и ReadInteger подсказ пишется вразрядку
begin
var n:=ReadInteger('Введите натуральное число: ');
end.
В в е д и т е н а т у р а л ь н о е ч и с л о : 1
Похоже, это фокусы с UNICODE.
PascalABCCompiler.Core v3.0.0.1073 (23.11.2015), debug versionRuntime version: 4.0.30319.1OS version: Microsoft Windows NT 5.1.2600 Service Pack 3Processor count: 2WorkingSet: 69056 kb
Недолгое ковыряние в модуле PABCSystem.pas говорит о том, что при вызове Writeln(s1); идет обращение к CurrentIOSystem, которое определено и реализовано в этом же модуле в виде IOStandardSystem, который при выводе объекта преобразует его в строку с помощью функции
function _ObjectToString(o: object): string;
begin
Result := StructuredObjectToString(o);
end;
в строку.
А при записи в файл этим занимается стандартный .NET класс TextWriter, который таким преобразованиям не научен, надо определять свой метод .ToString(). Я конечно не разработчик (по крайней мере среды PascalABC.NET), но ошибки тут не вижу, потому что система в первую очередь предназначена для обучения, и на момент работы с методами типа Writeln еще нет необходимости заострять внимание на методах-расширениях для удобства работы с массивами, но раз уж вы до них дошли (s.ToWords, ss.Take) то уже должны знать о том, что по умолчанию Object.ToString возвращает полное имя типа объекта, об этом написано например на MSDN.
Вопрос не в том, почему это происходит, вопрос в том, что при программировании с использованием предлагаемых для обработки последовательностей возможностей оказываешься на минном поле и каждый шаг надо прощупывать. Как раз при обучении сложно внятно объяснить, что вывод на экран и в файл одних и тех же данных могут в одних случаях давать одинаковые результаты, а в других - совсем разные. Не должны начинающие ломать голову, как это получается, потому что нет у них для этого достаточных знаний. Любая система программирования должна при работе с ней давать определенную надежность, а иначе она превращается в язык С++, где можно всё, а “кто не спрятался - я не виноват”.
P.S. Тем более, что в версии 3.0 имеется реклама Write() в части того, что теперь “можно выводить абсолютно всё”.
При попытке выполнить программу H:\PABCWork.NET\Samples!MainFeatures\02_Types\Dynarray.pas в сборке 1156 (как и в 1150, в более ранних не пробовал) возникает внутренняя ошибка компилятора.
Error[0]: Внутренняя ошибка компилятора в модуле [pabcnetc.exe] :'System.Exception: System.TypeLoadException: Не удалось загрузить тип “System.Runtime.CompilerServices.ExtensionAttribute” из сборки “mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”.
Это был сюрприз от опции компиляции “Ускорять запуск из под оболочки”. Отключаю - пример нормально работает, включаю - тут жe компилятор аварийно завершается, как было показано выше. И потом только перезапускать IDE.