主题:[讨论]我觉得可以这样解决TP7的清屏问题
qihuan
[专家分:0] 发布于 2005-07-12 20:39:00
编写一段清屏子程序,需要的时候调用
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个回复)
沙发
qihuan [专家分:0] 发布于 2005-07-12 21:05:00
如果想得到像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;
^_^ 希望大家多多支持!
板凳
stuart920106 [专家分:730] 发布于 2005-07-16 17:11:00
好帖~~~~~~~~~~
3 楼
xpycc [专家分:410] 发布于 2005-07-17 08:43:00
看来要好好学一下汇编呀~~~~~~~~~~~~~~~~~~~~~~~
4 楼
cxxx401 [专家分:140] 发布于 2005-07-17 12:14:00
搞不懂.
asm是什么东西啊
5 楼
口口and枕头 [专家分:1550] 发布于 2005-07-17 12:21:00
我一点都没有看懂~~~~~
汇编是什么都还不是很清楚,,,可以用到pascal里面吗?
6 楼
delphi6 [专家分:3450] 发布于 2005-07-18 17:42:00
tp 7 中一用到crt单元就会出错,这本身是一个bug.网上可以下到补丁的。
还是装6.0吧。
crt单元中不止包括clrscr.
7 楼
qihuan [专家分:0] 发布于 2005-07-19 18:35:00
找到一个更好的办法~~哈哈哈哈……首先在程序首部加上下边两条调用DOS单元:
{$M 8192,0,0}
uses dos;
然后就可以在需要清屏的地方用这条命令即可:
Exec(GetEnv('COMSPEC'), '/C ' + 'cls');
相比上边提出的办法,这样做有很多便利之处,代码很少不是吗,而且不用考虑当时的屏幕状态,因此也就不必计算屏幕的行列数了,而且直接调用DOS内部命令比起向屏幕写成百上千个空格要耗时更少。
我来回复