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

Delete a single character from the terminal in 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;

来自我的一个项目:

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