【问题标题】:C# "scanf" with Custom Console带有自定义控制台的 C#“scanf”
【发布时间】:2012-02-24 14:24:46
【问题描述】:

我的程序是 C# 中的 Windows 窗体应用程序。

我有一个解释器/编译器 IDE,w/c 基本上通过自定义控制台窗口运行自定义语言。

在解释像“scanf”这样的输入行时,如何在用户不按回车的情况下暂停解释?

要解析的示例自定义代码:

1     VAR x AS INT
2     START
3        INPUT: x
4        OUTPUT: x
5     STOP

例如,在这些行中,当我的程序处理第 3 行时,它不会处理其他行,直到用户输入内容并按下回车键。

用于逐行解析的伪片段:

foreach (string line in inputCode)
{
   LineType lineType = line.getType();

   if(lineType.InputStatement)
   {
   //wait for input here
   }
   else if(lineType.OutputStatement)
   {
   //analyze output code here
   }
   else if(lineType.AssignmentStatement)
   {
   //do Evaluation here
   }
}

【问题讨论】:

    标签: c# console scanf


    【解决方案1】:

    Console.ReadlineConsole.ReadKey 将允许您从类似于 scanf 的控制台读取输入。

    【讨论】:

    • 我没有使用控制台应用程序。我使用表单作为自定义控制台。
    • 您是否开发了自定义控制台。它是否位于另一个控件之上?
    • 控制台基本上是一个带有文本框的表单。它由 MDI 表单触发。
    • 是使用模式。用户输入一个完整的程序,然后逐行运行。
    【解决方案2】:

    您应该让每个方法引发一个事件来触发下一行。
    INPUT 方法应该在用户按下回车后触发该事件。

    【讨论】:

    • 基本上,将您的程序代码转换为异步。您可以使用 C# 5 async 或使用迭代器来简化它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 2021-08-12
    • 2018-03-24
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多