Delphi控制台程序怎么清屏啊~~

DelisPhi 2011-01-02 12:54:31
如题
winexec(pansichar('cls'),0);
失败,无效果
cls;
clrscr;
无此函数....
囧了

顺便问下怎么改字或者背景的颜色...
...全文
326 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitao 2011-01-07
  • 打赏
  • 举报
回复
dos的conio库,vc的cursr库(不知道有没有拼错),都是能定位屏幕位置的,才有清屏的说法

真正的控制台,都只是一行行输出的结果,应该没法清了

cmd.exe的清屏,只是这个程序自己对显示内容做的一种处理吧
CassiaBlossom 2011-01-07
  • 打赏
  • 举报
回复


program Project2;

{$APPTYPE CONSOLE}

uses
Windows,SysUtils;

var
i:Integer;
nConsoleHandle : Integer;
lwWritten : Longword;
Coord : TCoord;
begin
try
Coord.X := 0;
Coord.Y := 0;
nConsoleHandle := GetStdHandle(STD_OUTPUT_HANDLE);
for I := 1 to 12 do Writeln(IntToStr(i)); //输出,用于测试
Sleep(1000);
FillConsoleOutputCharacter(nConsoleHandle, #32, 80*24, Coord, lwWritten); //清空
SetConsoleCursorPosition(nConsoleHandle, Coord); //将光标设置在第一行
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.

Delphi,WidowsXP下调试通过.

keeley20 2011-01-05
  • 打赏
  • 举报
回复
program Project1;

{$APPTYPE CONSOLE}

uses
Windows,SysUtils;

var
i:Integer;
nConsoleHandle : Integer;
lwWritten : Longword;
Coord : TCoord;
begin
try
Coord.X := 0;
Coord.Y := 0;
nConsoleHandle := GetStdHandle(STD_OUTPUT_HANDLE);
for I := 1 to 12 do Writeln(IntToStr(i)); //输出一些东西
Sleep(1000);
FillConsoleOutputCharacter(nConsoleHandle, #32, 80*24, Coord, lwWritten); //清空
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.

FillConsoleOutputCharacter 这个函数可能楼主需要。
CaesarDM 2011-01-04
  • 打赏
  • 举报
回复
//清屏
procedure cls;
var
hStdOut:THandle;
colScreen : COORD ;
bSucc:LongBool;
csbi : TConsoleScreenBufferInfo;
dwConSize, dwChrWritten : DWORD;
begin
//获取输出窗口句柄
hStdOut := GetStdHandle( STD_OUTPUT_HANDLE );

//获取输出窗口缓冲状态信息
bSucc := GetConsoleScreenBufferInfo( hStdOut, csbi);
if not bSucc then exit;

//计算缓冲字符总大小
dwConSize := csbi.dwSize.X * csbi.dwSize.Y;

colScreen.X := 0;
colScreen.Y := 0;

//用空格填充全屏
bSucc := FillConsoleOutputCharacter(hStdOut,
' ',
dwConSize,
colScreen,
dwChrWritten);
if not bSucc then exit;

//获取输出窗口缓冲状态信息
bSucc := GetConsoleScreenBufferInfo(hStdOut, csbi);

if not bSucc then exit;

//设置缓冲区的相应属性
bSucc := FillConsoleOutputAttribute(hStdOut,
csbi.wAttributes,
dwConSize,
colScreen,
dwChrWritten );
if not bSucc then exit;

//设置光标位置
SetConsoleCursorPosition(hStdOut, colScreen);
end;

//设置控制台颜色
procedure consolecolor(wColorAttrib:Word);
var
hStdOut:THandle;
begin
hStdOut := GetStdHandle( STD_OUTPUT_HANDLE );
SetConsoleTextAttribute(hStdOut, wColorAttrib);
end;



//使用
//先设置控制台字符和背景颜色,RGB颜色原理就不用我说了吧
consolecolor(FOREGROUND_RED or FOREGROUND_GREEN or FOREGROUND_BLUE or BACKGROUND_BLUE);
再清屏
cls;

//好了,现在整屏都是蓝色背景+白色文字前景


DelisPhi 2011-01-04
  • 打赏
  • 举报
回复
囧了..无人么..大虾们帮下好么..
DelisPhi 2011-01-03
  • 打赏
  • 举报
回复
顶起,别沉,啊啊啊啊啊

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧