回 帖 发 新 帖 刷新版面

主题:[讨论]我觉得可以这样解决TP7的清屏问题

编写一段清屏子程序,需要的时候调用
procedure clear_screen;
begin
  asm
  mov bh,0
  mov dl,0
  mov dh,0
  mov ah,2
  int 10h
  end;
write(' ':80*25)
end;

回复列表 (共7个回复)

沙发

如果想得到像DOS一样的清屏效果,我是指光标回到屏幕的左上角位置,可以这样:

procedure clear_screen;
begin
  asm
    mov bh,0
    mov dl,0
    mov dh,0
    mov ah,2
    int 10h
  end;
write(' ':80*50)
  asm
    mov bh,0
    mov dl,0
    mov dh,0
    mov ah,2
    int 10h
  end;
end;

^_^   希望大家多多支持!

板凳

好帖~~~~~~~~~~

3 楼

看来要好好学一下汇编呀~~~~~~~~~~~~~~~~~~~~~~~

4 楼

搞不懂.
asm是什么东西啊

5 楼

我一点都没有看懂~~~~~
汇编是什么都还不是很清楚,,,可以用到pascal里面吗?

6 楼

tp 7 中一用到crt单元就会出错,这本身是一个bug.网上可以下到补丁的。
还是装6.0吧。
crt单元中不止包括clrscr.

7 楼

找到一个更好的办法~~哈哈哈哈……首先在程序首部加上下边两条调用DOS单元:
   {$M 8192,0,0}
   uses dos;
  然后就可以在需要清屏的地方用这条命令即可:
   Exec(GetEnv('COMSPEC'), '/C ' + 'cls');
  相比上边提出的办法,这样做有很多便利之处,代码很少不是吗,而且不用考虑当时的屏幕状态,因此也就不必计算屏幕的行列数了,而且直接调用DOS内部命令比起向屏幕写成百上千个空格要耗时更少。

我来回复

您尚未登录,请登录后再回复。点此登录或注册