从Ada中的终端删除单个字符

时间:2016-03-06 07:29:32

标签: input terminal keyboard ascii ada

我正在用Ada编写一个程序,它一次读取一个字符的输入数字字符。我正在尝试模拟退格按钮,但我无法找到一种方法来覆盖或删除已放置在屏幕上的角色。

我知道put(ASCII.ESC&“[J”)可以清除屏幕,但我不确定它是如何工作的,或者是否可以操作删除单个字符或行。我基本上想创建一些可以作为退格按钮的东西,但我真的不确定如何在Ada中这样做。我在网上找不到这么多文档。

任何建议都将不胜感激。以下是我的代码片段:

loop
    get_immediate(buffer);
    exit when buffer = LF;

    --Using dash as a backspace key
    if (buffer = '-') then
        put(ASCII.ESC & "[J");
    --Print to terminal if the character is numeric
    elsif (buffer >= '0' and buffer <= '9') then
        put(buffer);
    end if;
end loop;

1 个答案:

答案 0 :(得分:2)

来自我的一个项目:

procedure Put_Backspace is
   Move_Left : constant String := Ada.Characters.Latin_1.ESC & "[D";
begin
   Put (Move_Left & " " & Move_Left);
end Put_Backspace;