Новое в кодировании в 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 для чтения последовательных строковых значений.