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

В любом примере для CRT , например Бильярд , если поставить вместо “uses CRT;” , например “uses CRT, GraphABC;” (больше ничего не меняя в коде) , то программа перестаёт нормально работать - запускается какое-то другое окно.

А что мешает написать по-нормальному? Вот так:

Uses CRT;
Uses GraphABC;

Да и к тому же, конфликты между этими двумя модулями тянутся ещё со времён Турбо Паскаля.

Что значит по -нормальному? Нормально это как раз через запятую. Вы посмотрите, в дельфе, там среда автоматически через запятую 20 модулей пишет. И кстати всё-равно не работает, даже если как вы написать. Насчёт конфликтов нет - я как раз решил для примера старую лабораторную работу для турбо Паскаля перенести. Так вот там из CRT программы идёт переход в режим Graph И потом, я же модуль никакак не использую только лишь подключил. Почему само по себе подключение модуля должно вызывать ошибку?

Вот, собственно код. Shablon.pas (3,0 КБ)

Ааа, понял таки. Подпишите в начале мейна строчку:

SetConsoleIO();

https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/namespaces/how-to-use-the-my-namespace

Да, так работает. Хотя при этом рядом с консолью виcит открытое окно, которое не используется. И таки да, если Uses CRT; Uses GraphABC; использовать в столбик , а не в одну строку это иногда влияет на выполнение программы.

Уберите uses CRT. Это атавизм из 80-х годов.

1 лайк

Глаза же два. Один смотрит в окно Crt, второй - в окно GraphABC. Так жить веселее! :grinning:

1 лайк

Тогда предложенный код вообще не запуститься. А это код из примеров, прилагающихся к программе (с подключением модуля Graph).

Вы уберите uses GraphABC - и все заработает. К ней же все равно нет обращений.

Так нет , я специально его и добавил, чтобы продемонстрировать ошибку. На ваш взгляд это корректная компиляция если просто подключение модуля может сделать программу неработоспособной?

Вполне такое может быть. инициализируются графические режимы двух несовместимых библиотек. Библиотека Crt - старье, служащее для поддержки графики ТурбоПаскаль. Там не было GraphABC, поэтому проблем не возникает. А Вы намеренно делаете то, что по определению встретиться не может и удивляетесь, когда что-то идет не так.

Встреиться как раз может - см. выше. В турбо паскале были реальные лабораторные работы в университе. Там одно из заданий было - сначало в CRT сделать диалог , потом вызвать модуль Graph и нарисовать график. Так что нет, это часто встречаемая задача была в турбо паскале. И простое подключение модуля Graph в Турбо паскале никак не вешало программу.

Это экзотика и позавчерашний день. Ну кто сейчас будет переделывать библиотеку Crt? Это реально никому не нужно. Единственно, нужно где-то написать в Справке, что совместимость Сrt и GraphABC может быть неполной и от их одновременного использования лучше отказаться. Тут вон уже и с GraphABC работы прекращены - осталась только для совместимости с XP.

uses GraphABC;
begin
  SetConsoleIO();
  writeln(23);
  Line(0,0,100,100);
end.

Зачем тут CRT? Оно и так работает

TextColor(White); - его, к примеру, нет без Crt. Ругаться будет.