Ошибки компилятора PascalABC.Net

@Andrej_Rulin, забудьте уже TurboPascal!

К слову, все модули, включая PABCSystem, предназначены для обучения, не более. Для серьёзного проекта используйте только библиотеки .NET.

Используйте System.Console вместо Crt.

1 лайк
Uses System;
Begin
  Console.WriteLine('Hello, World!');
End.

Конечно, после того как Вы (@Gleb, это не к Вам конкретно) привыкли к Write/Writeln это выглядит длинно (по себе знаю), но это дело лишь привычки. Потом поймете насколько это удобно. Тем более, если Вы хотите потом изучать C#, то лучше начинать применять .Net Framework в PascalABC.Net.

1 лайк

22 сообщения перенесены в тему Болталка PascalABC.NET

Минус 1 в карму за рекламу другого языка

2 лайка

Кстати очень зря насчёт забудьте. Одно из действительно неплохих применений PascalABC - это перенос старого кода TurboPascal. Которого накопилось тонны в школах, университетах, для программ личного применения(понятно, уже больше половины выбросили, но всё же). На Delphi это не переносилось по понятным причинам. Вот сейчас , последний шанс это наследие как-то использовать.

Можно использовать, я так перенес кое-что очень старое. Но лучше все же потом переписать на современный код. Заодно и практика…

Предположение о том, что после PascalABC.Net, возможно, будет осуществлен переход на C# - не является рекламой. Это личные предпочтения каждого. Тем более, это не единственный язык, который упоминался на просторах этого форума и не только мной.

@Gleb, перенесите эти два сообщения (моё и @Admin) в Болталку. Причина: оффтоп.

К сожалению, я вынужден, повторить свою просьбу:

Покажите мне доказательство на другом диалекте Pascal, где так можно.

. Хотя, на мой взгляд, это разрешение неправильно по следующим причинам:

  1. С точки зрения пользователя возникает неоднозначность: неясно требуется ли тело метода или нет. Абстрактные методы это подмножество виртуальных с тем отличием, что их реализация может быть отложена (могут реализовываться в классах потомках).
  2. В справке сказано:

Данные методы являются виртуальными, но ключевое слово virtual использовать не нужно.

.

Код взят из этой Issue. После исправления появился другой баг - Undefined FileName.

Автокласс не может иметь поля, являющиеся событиями [opened].

Замечу, что пространства имён ещё не готовы, официально их ещё не объявляли. Так что куча issue может привести к исключению их из релиза, а это ведь не очень хорошо :slight_smile:

Пишите в Issue. То, что это недокументированная пока возможность, не значит, что не надо писать явные баги

2 лайка

<личное мнение>Не очень, так как я активно использую namespace’ы. Думаю, что я не единственный такой.</личное мнение>

Вы и вправду не единственный. Я их использую, но боюсь за то, что поток сообщений об ошибках может привести к их исключению из релиза, как это произошло с тайпклассами.

CRT это модуль на пару сотен строчек, все его методы можно легко реализовать самому (большая часть уже готовые в System.Console).

Ну вот смотрите, зажимаем Ctrl и нажимаем на TextColor в редакторе, видим следующее:

procedure TextColor(c: integer);
begin
  Console.ForegroundColor := IntToConsoleColor(c);
end;

Значит на PABC.Net это будет выглядеть так:

//uses CRT;

begin
  System.Console.ForegroundColor := System.ConsoleColor.White;
end.

Можно написать в начале программы uses System чтоб не писать его везде, то есть без него будет Console.ForegroundColor и т.п.

1 лайк