Великое падение ABC Паскаль в Windows XP Home 32 bits


#1

Здравствуйте. Решил поизучать Паскаль. Вбил код первого урока и он сразу сломался. Не подскажите, что можно делать в XP, чтобы чему то научиться? Фрамеворк 4 из дистррибутива не устанавливал, так как уже стоит со всеми обновлениями.

Вот этот код запустил var b,c:real; begin b:=10; b:=11; c:=5; b:=c; b:=b/5; end.

Лог и скриншот отправил на емайл Станиславу Михалковичу.

11.02.2020 20:47:38 PascalABCCompiler.Core v3.6.0.2345 (08.02.2020), debug version Runtime version: 4.0.30319.1022 OS version: Microsoft Windows NT 5.1.2600 Service Pack 3 Processor count: 2 WorkingSet: 69944 kb StatesList: BeginCompileFile Program1.pas BeginParsingFile Program1.pas EndParsingFile Program1.pas SyntaxTreeConversion Standard ReadPCUFile PABCSystem.pcu ReadDLL System.dll ReadDLL mscorlib.dll ReadDLL System.Core.dll ReadDLL System.Numerics.dll ReadPCUFile PABCExtensions.pcu ReadPCUFile __RedirectIOMode.pcu ReadDLL System.Windows.Forms.dll CompileInterface Program1.pas EndCompileFile Program1.pas CompilationFinished Program1.pas Ready

Error[0]: Внутренняя ошибка компилятора в модуле [pabcnetc.exe] :‘System.Exception: System.ArgumentNullException: Значение не может быть неопределенным. Имя параметра: key в System.Collections.Generic.Dictionary2.FindEntry(TKey key) в System.Collections.Generic.Dictionary2.TryGetValue(TKey key, TValue& value) в PascalABCCompiler.TreeRealization.compiled_function_node.get_compiled_method(MethodInfo mi) в PascalABCCompiler.PCU.PCUReader.GetCompiledMethod(Int32 offset) в PascalABCCompiler.PCU.PCUReader.CreateCompiledStaticMethodCall() в PascalABCCompiler.PCU.PCUReader.CreateExpression(semantic_node_type snt) в PascalABCCompiler.PCU.PCUReader.CreateBasicFunctionCall() в PascalABCCompiler.PCU.PCUReader.CreateExpression(semantic_node_type snt) в PascalABCCompiler.PCU.PCUReader.CreateBasicFunctionCall() в PascalABCCompiler.PCU.PCUReader.CreateExpression(semantic_node_type snt) в PascalABCCompiler.PCU.PCUReader.CreateStatement() в PascalABCCompiler.PCU.PCUReader.CreateStatementList() в PascalABCCompiler.PCU.PCUReader.CreateStatement() в PascalABCCompiler.PCU.PCUReader.CreateIf() в PascalABCCompiler.PCU.PCUReader.CreateStatement() в PascalABCCompiler.PCU.PCUReader.CreateStatementList() в PascalABCCompiler.PCU.PCUReader.CreateStatement() в PascalABCCompiler.PCU.PCUReader.GetCode(Int32 offset) в PascalABCCompiler.PCU.wrapped_function_body.restore() в PascalABCCompiler.TreeRealization.common_namespace_function_call…ctor(common_namespace_function_node namespace_func, location loc) в PascalABCCompiler.PCU.PCUReader.CreateCommonNamespaceFunctionCall() в PascalABCCompiler.PCU.PCUReader.CreateExpression(semantic_node_type snt) в PascalABCCompiler.PCU.PCUReader.CreateIf() в PascalABCCompiler.PCU.PCUReader.CreateStatement() в PascalABCCompiler.PCU.PCUReader.CreateStatementList() в PascalABCCompiler.PCU.PCUReader.CreateStatement() в PascalABCCompiler.PCU.PCUReader.GetCode(Int32 offset) в PascalABCCompiler.PCU.PCUReader.CreateInterfaceMethod(String name, Int32 offset) в PascalABCCompiler.PCU.PCUReader.GetClassMethod(Int32 offset) в PascalABCCompiler.PCU.PCUReader.ReadCommonExtMethod() в PascalABCCompiler.PCU.PCUReader.GetExtMethodByOffset(Int32 offset) в PascalABCCompiler.PCU.PCUReader.GetMethodByOffset() в PascalABCCompiler.PCU.PCUReader.CreateMethodCall() в PascalABCCompiler.PCU.PCUReader.CreateExpression(semantic_node_type snt) в PascalABCCompiler.PCU.PCUReader.CreateBasicFunctionCall() в PascalABCCompiler.PCU.PCUReader.CreateExpression(semantic_node_type snt) в PascalABCCompiler.PCU.PCUReader.CreateStatement() в PascalABCCompiler.PCU.PCUReader.CreateStatementList() в PascalABCCompiler.PCU.PCUReader.CreateStatement() в PascalABCCompiler.PCU.PCUReader.GetCode(Int32 offset) в PascalABCCompiler.PCU.PCUReader.CreateInterfaceMethod(String name, Int32 offset) в PascalABCCompiler.PCU.PCUReader.CreateInterfaceInClassMember(Int32 offset, String name) в PascalABCCompiler.PCU.WrappedClassScope.RestoreMembers(String name) в PascalABCCompiler.PCU.PCUReader.RestoreAllFields(common_type_node ctn) в PascalABCCompiler.PCU.PCUReader.ProcessWaitedToRestoreFields() в PascalABCCompiler.Compiler.ClosePCUReadersAndWriters() в PascalABCCompiler.Compiler.Compile()’


#2

А вы поставьте на всякий случай. И отпишитесь

У нас под виртуальной машиной WinXP - и Паскаль запускается

Кстати, как можно было не установить Framework если под WinXP только с фреймворком идёт


#3

Что именно поставить на всякий случай?


#4

Поставьте отсюда http://pascalabc.net/downloads/PascalABCNETWithDotNet40Setup.exe Только поставьте всё


#5

А с фрамеворком, сейчас сделаю. У меня нынешняя установка сейчас пропадет после перезагрузки. Включаю эмуляцию в операционной системе при испытании нового софта.


#6

Вообще, может ничего не сработать. Мне очень не нравится Win XP Home Edition. По-моему, на ней как раз не работал. Там должен быть установлен ещё SP 3 - по воспоминаниям. Но знание это утрачивается - слишком древняя система.

Надеюсь, вы не на смартфоне это запускаете?


#7

Да, SP3 установлен и все обновления, выпускавшиеся до ноября 2019 года. Запускаю на ноутбуке с процессором Core2Duo 2 гигабайта оперативы. Установка варианта с интегрированным сервис паком не помогла, также упал при запуске кода.


#8

Понятно. Продолжаем.

Откройте в PascalABC.NET файл c:\program files\pascalabc.net\libsource\PABCSystem.pas

и откомпилируйте его. Киньте сюда скриншот - что сломалось


#9

Вот такой скриншот сделал


#10

Понятно. Ну, в этом всё дело. Попытаемся это исправить. В те далёкие времена в NET 4.0 не было Console.IsInputRedirected. Следите - я здесь напишу


#11

Хорошо


#12

Скачайте новую версию и отпишитесь


#13


#14

Так, понятно. Попробуйте скачайте еще раз. Должно работать.


#15

Заработало. Благодарю. Когда ввожу и запускаю такую программу, отображается внизу строка “Ввод данных”. Что туда вводить? program Hello; begin writeln (‘Hello, world.’); readln end.


#16

Код надо выделять так:

```
код
```

И на строчках с ``` ничего кроме их самих быть не должно.

Знак ` находится за ё в англ раскладке.

Readln без параметров это чтение и выкидывание 1 строчки. Это используется чтоб в режиме Shift+F9 программа моментально не вылетала.


#17

Это не нужно и с Shitt+F9. Как, собственно и program. Пережитки ТурбоПаскаль.

Похоже, Вы не тот Паскаль изучаете, потому что это код ТурбоПаскаль образца 1983 года. Для того, чтобы его “изучать”, PascalАВС.NЕТ не нужен - он совсем про другое.

Скачивайте вот это и изучайте, если действительно нужен нормальный язык.


#18

Благодарю за информацию.