点击某个键时停止readln()?

时间:2014-03-19 21:40:00

标签: pascal lazarus

好吧,这个问题可能听起来含糊不清,但我真的没有别的方法可以说出来。希望解释它会帮助你们弄明白我的意思..

我最近决定重新使用Pascal编程语言。几年前我做了一些Delphi,但我真的不喜欢它。无论如何,这个背景足够了..

我被要求做一个简单的控制台计算器。截至目前,我已经完成了整个“界面”。它不会根据位置/输入键读取值,所以我不要键入值并使用数学运算符(+, - ,*,div [因为我已经知道“/”不适用于除法)在值之间。

我的问题是:

我使用console readln(variable)命令读取值。它可以像它应该的那样工作,但现在我想,它们,玩它一点点。当我点击'+, - ,/,*'键时,我想知道是否有办法打破readln()句子。比如说,我有这条线:

readln(value1)

我想要做的是,我会输入任何东西,程序会将它存储在value1变量中,直到我点击其中一个操作键(例如+)。它是这样的:

readnln(value1);
***break it when i hit one of the operators key, '+' for example***
readln(operator)
***break it right after i type the operator, so this would take just one char***
readln(value2)
***This one can be break with the "enter" key hit, so nothing needed here***

这有什么意义吗?我真的希望它能做到。

1 个答案:

答案 0 :(得分:0)

你不能(轻松地)使用readln这样做,你需要自己制作这个用c:char读取(c)。 (或者更好,crt.readkey)

对于该原则的精彩版本,请参阅FPC demoes中“gameunit”中的inputstr,用于输入俄罗斯方块演示版高分中的名称。

另请参阅“lister”演示,演示了许多小型文本模式技术。