Замечания и предложения

А там внутри в издательских данных “Издание 30-е, стереотипное” ? Это обычная кормушка. Раз написал и с каждого переиздания имеешь свое масло на бутерброд. Нужно только прикормить “правильных людей”, которые книгу будут “рекомендовать” для СПО.

Может, и нам собрать на корм какому-нибудь издателю? Многие ведь сейчас голодают, бедняги.

Я написал "

begin
  var a: array of integer:=ArrRandom(10, -20, 30);
  var x,a,b:=ReadlnInteger3('x =','a =','b =');
  foreach var y in a do if (y>10) and (y<15) then x.Print;
  foreach var y in a do if (y=x) then x.Print;
  foreach var y in a do if (y>a) and (x<b) then x.Print;
end.

", нажал “Форматировать код”, и получилось это: "

begin
  var a: array of integer := ArrRandom(10, -20, 30);
  var x, a, b := ReadlnInteger3('x =', 'a =', 'b =')foreach ,b:=ReadlnInteger3('x =','a =','b =');
  foreach var y in a do if (y > 10) and (y < 15) then x.Printforeach 0) and (y<15) then x.Print;
  foreach var y in a do if (y = x) then x.Printforeach ) then x.Print;
  foreach var y in a do if (y > a) and (x < b) then x.Print;
end.

".

image

  1. Код даже синтаксически не правильный. Конечно, дублировать его части не должно, но:
  2. Не воспроизводится, у меня только пробелы повставляло:

image

Что делать? Закрыл, открыл ИСР, проверил, что версия последняя.

begin
  foreach var y in a do if (y>10) and (y<15) then y.Print;
  foreach var y in a do if (y=x) then x.Print;
end.

превращает в

beginforeach foreach var y in a do if (y > 10) and (y < 15) then y.Printforeach 0) and (y<15) then y.Print;
  foreach var y in a do if (y = x) then x.Print;
end.

Видимо, последние 2 строки не затрагиваются.

А попробуйте ка скопировать код из браузера, из своего же сообщения. И вставить в полностью новый файл.

Попробовал. Переустановил ИСР. Ничего не помогает.

То есть попробовали, и даже скопированный из браузера код рвёт форматированием?

Ну, в таком случае у меня чётких идей больше нет. Можно проверить что вам выведет такая программа:

## System.Environment.NewLine.PrintLines(ch->ch.Code);

И - попробуйте найти самый минимальный объём кода, с которым будет стабильно воспроизводится.

13
10
begin
  foreach a in b do
end.

превращает в

beginforeach foreach a in b do
end.

А

##
foreach a in b do

превращает в

##
foreach each a in b do

Может быть, это из-за того, что форматирование пытается разделить foreach для получения for?

Ну, чтож, тогда у меня точно нет идей.
@ibond, @Admin а у вас?

Похоже шрифт в окне вывода перестал быть моноширным?

image

В консоли правильно выводится:

image

1 лайк

У меня Consolas выбран - проблем не было пока.

А где выбран? Я вижу в настройках только настройку шрифта самого кода (и там не_моноширный не даёт выбрать). Она стоит на дефолте - Courier New. А для окна ввода отдельной настройки не вижу.

Шрифт в окне вывода совпадает со шрифтом в окне редактора

Давайте лучше посмотрим на то что проще сравнить:
Как у вас будет выглядеть вывод этой программы:

uses OpenGL;

begin
  Mtr2d.Create(1,2,3,4).Println;
end.

В окне ввода и в консоли?

1 лайк

Поставил Consolas, переустановил паскаль официальным экзешником с официального сайта.

Чертовщина какая то:

Вывод - символы псевдографики провоцируют изменение шрифта