Новое в кодировании в Delphi 7: невозможно прочитать () несколько строк

Недавно я начал писать в Delphi 7, в основном для школы, а также для личного развлечения. Я столкнулся с проблемой, которую не могу решить. Я хотел создать консольное приложение, которое попросит вас ввести пару строк, таких как ваше имя и т. П., Чтобы приложение могло впоследствии вызывать вас по вашему имени. Однако вскоре я понял, что наличие двух "read();" Команды для 2 разных строк не работают по какой-то причине, пропуская команду чтения для второй строки каждый раз. Поскольку я не могу объяснить это идеально, вот самый простой код, который я мог придумать, который показывает проблему:

program stringproblem;

{$APPTYPE CONSOLE}

uses
  SysUtils;

  var string1,string2:string;

begin
read(string1);
read(string2);
writeln(string1,string2);
readln;
readln;
end.

Итак, консоль открывается, я получаю записать значение string1, я, например, ввожу 'test', но вместо того, чтобы позволить мне затем ввести значение string2, она пропускает это и просто записывает 'test' в консоль,

Почему я не могу ввести значения двух строк в приложении? Почему запись значения первого автоматически пропускает все остальные?

1 ответ

Решение

Вместо Read(string1) ты должен использовать Readln(string1), И точно так же для другого чтения, и действительно, когда вы хотите использовать целую строку.

Из документации для Read:

Read читает все символы вплоть до следующего маркера конца строки или до тех пор, пока Eof(F) не станет истинным; он не пропускает к следующей строке после прочтения.

После первого чтения каждое последующее чтение видит маркер конца строки и возвращает строку нулевой длины.

Используйте несколько вызовов Readln для чтения последовательных строковых значений.

Другие вопросы по тегам