我最近开始使用Delphi 7进行编码,主要用于学校,也用于个人娱乐。我遇到了一个我无法解决的问题。我想创建一个控制台应用程序,要求您输入几个字符串,例如您的姓名和类似字符串,以便应用程序稍后可以通过您的名字给您打电话。但是,我很快意识到有两个“读();” 2个不同字符串的命令由于某种原因不起作用,每次都跳过第二个字符串的read命令。由于我无法完美地解释它,这里是我能想到的最简单的代码,它显示了问题:
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'在控制台中。
为什么我不能在应用程序中输入两个字符串的值?为什么写第一个的值会自动跳过所有其他值?
答案 0 :(得分:5)
而不是Read(string1)
,您应该使用Readln(string1)
。同样,对于另一个读取,实际上每当你想要消耗整行时。
来自Read
的{{3}}:
读取读取所有字符,但不包括下一个字符 行尾标记或直到Eof(F)变为真;它没有跳过 读完后的下一行。
在第一次读取之后,每次后续读取都会看到行尾标记 并返回零长度字符串。
使用多个Readln调用来读取连续的字符串值。