Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pascal 按某个键时停止readln()?_Pascal_Lazarus - Fatal编程技术网

Pascal 按某个键时停止readln()?

Pascal 按某个键时停止readln()?,pascal,lazarus,Pascal,Lazarus,好吧,这个问题听起来可能有点模棱两可,但我真的没有其他方法来表达它。希望解释一下能帮助你们理解我的意思 我最近决定重新学习Pascal编程语言。几年前我做了一些德尔福,但我真的不喜欢它。无论如何,这种背景已经够了 我被要求做一个简单的控制台计算器。到目前为止,我已经制定了整个“接口”。它还不会根据position/enter键读取值,所以我不会键入值,而是在值之间使用数学运算符(+、-、*、div[因为我知道“/”对除法不起作用) 我的问题是: 我正在使用console readln(varia

好吧,这个问题听起来可能有点模棱两可,但我真的没有其他方法来表达它。希望解释一下能帮助你们理解我的意思

我最近决定重新学习Pascal编程语言。几年前我做了一些德尔福,但我真的不喜欢它。无论如何,这种背景已经够了

我被要求做一个简单的控制台计算器。到目前为止,我已经制定了整个“接口”。它还不会根据position/enter键读取值,所以我不会键入值,而是在值之间使用数学运算符(+、-、*、div[因为我知道“/”对除法不起作用)

我的问题是:

我正在使用console readln(variable)命令读取该值。它的工作原理与预期相同,但现在我想,em,稍微玩玩一下。我想知道当我点击“+,-,/,*”键时,是否有办法打断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***
这一切都有意义吗?我真的希望它有意义。

你不能用readln(轻松地)做到这一点,你需要自己用c:char(或者更好的是,crt.readkey)将其转换为read(c)

要了解这一原理的奇特版本,请参见FPC演示中“gameunit”中的inputstr,用于在俄罗斯方块演示的高分中输入姓名


另见“列表器”演示了许多小的文本模式技术。

谢谢Marco!我曾想过使用read,但它变得非常复杂。我有一种预感,这可能不像听起来那么简单。无论如何,感谢您的快速回复!很高兴知道有人理解我的意思:p.会检查您的建议,可能会发布结果。再次,谢谢。我不知道
Read
在FPC中是如何工作的,但是如果它与TP/BP相同,那么,如果我没记错的话,用户仍然需要在某个时候按
Enter
Read
s才能开始实际读取输入的数据。安德烈M:你说得对。我忘了,因为我通常是用包装的。哦,我想虽然你指的是“readkey”命令。我以前尝试过这个方法,但我取得了一些进展。这是一种混乱的情况。我有一个固定长度的数组,每次键入一个键后都会插入数据。这是在循环中完成的,每当按下一个运算符键时,该数组就会中断。但是,我在处理用于删除的退格键和lso防止插入非数字字符)上述演示可以处理此问题。它们应该在c:\fpc\\demo中