Страница 1 из 1

Работа процедуры readln()

СообщениеДобавлено: 24.05.2021 23:29:58
Victor
Столкнулся с такой проблемой:
OS - Windows 10, Free Pascal 3.2.2 32 bit
Код: Выделить всё
var a, b: real;
begin
   readln(a);
   readln(b);
   writeln(a, b);
end.

Этот код работает.
1. После ввода параметра требуется дважды нажимать Enter.
2. Маркер не переводится на следующую строку после нажатия Enter.
3. Значения выводятся в той же строке, что и ввод.
Например, ввожу число 4 нажимаю Enter. Маркер становится в начало этой же строки. Ввожу 8. При этом затирается число 4 и после нажатия на Enter маркер вновь устанавливается в начало этой же строки и выводится сообщение о значении параметров.

Ранее такого не было. Обратил внимание только сегодня, после установки новой версии.
Это нормально? Как от этого уйти?
Хотелось бы, что бы каждый ввод и вывод были на своей строке.

PS: Возможно, что это как то связано с Windows?
Сейчас Блокнот открывается с кодировкой utf-8, хотя ранее (до обновления) открывался в кодировке ANSI.
В свойствах окна Free Pascal установлена кодировка OEM 866, что совпадает с кодировкой окна Командная строка.
Кирилличный текст выводится верно.

Re: Работа процедуры readln()

СообщениеДобавлено: 25.05.2021 09:46:50
Seenkao
Victor писал(а):32 bit

Может проблема в этом? Собери под 64-х битную систему и посмотри.
Если это не поможет, проверь на других версиях FPC.

Re: Работа процедуры readln()

СообщениеДобавлено: 25.05.2021 09:58:29
Victor
Это не локальная проблема, так как проявляется и на ноутбуке, и на персоналках учебного класса, где windows не обновлялся.
И на ноутбуке, и на персоналках класса стоят другие версии этой среды (более старые).

Re: Работа процедуры readln()

СообщениеДобавлено: 25.05.2021 13:53:35
Seenkao
Victor писал(а):Это не локальная проблема

мы не можем угадывать, где и как это происходит.

Проблему надо описывать полностью.

Собираете на одном компьютере и проверяете на остальных? Собираете на разных компьютерах? Пробовали собрать под 64-х битную систему? Приложение было запущено из командной строки? На всех компьютерах стоит одна и та же система? На всех компьютерах стоит один и тот же FPC? Проверялось в режиме отладки (или наоборот без отладки)? Проверялось с другой версией FPC? Как устанавливали FPC?

Ещё вариант, "очистить и пересобрать". Возможно завалялся "хлам", который стоит перекомпилировать. (Дети в классе не балуются программированием?)

Если вы хотите решить данную проблему, вы должны понимать, что на все вышепоставленные вопросы, вы должны в первую очередь ответить себе.

Поставьте FPC 3.0.4 и используйте её, если она будет стабильно работать без ошибок. И, просьба отписать о баге и произведённых действиях на англоязычный форум, возможно надо ставить на заметку.

Re: Работа процедуры readln()

СообщениеДобавлено: 25.05.2021 15:07:45
Little_Roo
Lazarus 2.1.0 r65096 FPC 3.3.1 i386-win32-win32/win64
Все нормально, только в конец readln добавил

Re: Работа процедуры readln()

СообщениеДобавлено: 26.05.2021 21:50:56
Victor
Seenkao
Спасибо за замечания. Попробую разобраться в предлагаемом Вами направлении. Сейчас могу ответить только на часть вопросов:
1. Как устанавливали FPC?
Скачиваю с https://sourceforge.net/projects/freepa ... n32/3.2.2/ инсталляцию. Конкретно: fpc-3.2.2.i386-win32.exe.
Запускаю под ролью админа и всё идёт по умолчанию. Установка на системный диск в папку по умолчанию.

2. Собираете на одном компьютере и проверяете на остальных? Собираете на разных компьютерах?
Ответ в первом вопросе. Инсталляция выполнялась на моём домашнем компе, моём ноутбуке и ПЭВМ учебного класса. Пока, с уверенностью, могу сказать, что версии инсталляций были разные и версии OS, с точки зрения проведённых обновлений, тоже разные.
Тут вижу для себя вопросы и попробую уточнить детали.

3. Проверялось в режиме отладки (или наоборот без отладки)?
По умолчанию, после установки: Options - Mode - Debug

4. Возможно завалялся "хлам"
Не знаю как устанавливается FPC, если ранее была установлена старая версия. Снёс через unins000.exe и почистил CCleaner64-ом реестр.

Little_Roo
Lazarus пока не ставил. Если не смогу разобраться с установкой FPC, то перейду туда.

Ещё раз спасибо за ответы. Буду пробовать варианты.

Re: Работа процедуры readln()

СообщениеДобавлено: 26.05.2021 22:43:16
Снег Север
Victor, а какой резон ставить FPC без лазаруса? У вас АРМ? Острая нехватка памяти?

Re: Работа процедуры readln()

СообщениеДобавлено: 26.05.2021 23:29:24
Victor
Seenkao
Поставьте FPC 3.0.4 и используйте её, если она будет стабильно работать без ошибок. И, просьба отписать о баге и произведённых действиях на англоязычный форум, возможно надо ставить на заметку.

Только что скачал версию 3.0.4, всё старое снёс. Так как была отдельная рабочая папка с ini и cfg, то и это всё снёс, почистил CCleaner64-ом.
Установил по умолчанию (fpc-3.0.4.i386-win32.exe, домашний PC). Вопрос остался.
Теперь обратил внимание на то, что:
- при вводе символов сообщения об ошибке не выдаёт. Молча закрывается.
- если нажимать только Enter, то никакой реакции, пока не введу какой либо символ.

Снег Север
Victor, а какой резон ставить FPC без лазаруса? У вас АРМ? Острая нехватка памяти?

Да резона никакого нет.
Когда то, в далёкие времена, лет 15 назад, преподавал с использованием TP-70.
Узнал про FPC и перешёл на него. С Windiws XP никаких проблем не было.
Но вот обратились ко мне с этим вопросом и не могу помочь.
Мой друг тоже склоняет меня на lazarus.
Придётся поставить. :)

И снова всем спасибо.

PS: Вот ещё один момент: Описанная проблема возникает при работе в среде.
Если запустить exe-шник отдельно, то всё работает нормально.
Но тогда отлаживать надо будет принтами :(

Re: Работа процедуры readln()

СообщениеДобавлено: 27.05.2021 03:03:58
Vadim
Если такая проблема именно при работе из текстовой среды FP, то разные глюки там замечали регулярно. По этой причине я лично ею никогда не пользовался, поскольку FPC - это не Си и прикладывать к командной строке огромнейший набор опций и библиотек не требуется. Для Си, именно по этому поводу, придумали Make-файлы. У FPC дела попроще - все необходимые опции можно задать в глобальном cfg-файле и компиляцию производить в консоли:
fpc Моя_главная_программа.pas

Многие текстовые редакторы поддерживают подсветку синтаксиса. Например, в винде я прекрасно обхожусь редактором файлового менеджера FAR для написания консольных программ.
Если нужна большая многостаночная IDE - лучше Lazarus пока ничего не придумали. Она хоть и заточена под создание графического интерфейса пользователя (GUI), однако никаких проблем там с написанием консольных программ, без всякого интерфейса, тоже нет. К тому же Lazarus позволяет задавать кодировку текста исходного кода, что особенно пригодится в консоли, когда пишешь не для себя любимого, а на вынос... ;-)

Re: Работа процедуры readln()

СообщениеДобавлено: 29.05.2021 00:27:12
Сквозняк
Лазарус не умеет в такой внешний вид кода, как консольная иде. Эти буквы разной толщины вымораживают, хоть делай для него порченый шрифт. Единственное, для чего нужен лазарус, это с объектами сексом заниматься и гуи лепить. В свойствах проекта нельзя задать пути с маской, потому писанина там растёт и растёт. Вот кто придумал такое ограничение? Компилятор маски понимает, а лазарус - нет.

Re: Работа процедуры readln()

СообщениеДобавлено: 31.05.2021 03:35:02
Little_Roo
Сквозняк писал(а):Эти буквы разной толщины вымораживают, хоть делай для него порченый шрифт.

Ну, на вкус и цвет все фломастеры разные.. :D
Вообще-то это удобно для глаз, а про секс с объектами...Вы никак линюксоид, фанат командных строк в километр длиной? Извините, если обидел.