从 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;
我正在用 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;