Delphi 控制台 XE7 Clearscreen
Delphi Console XE7 Clearscreen
如何在 delphi 控制台应用程序(delphi xe6 或更高版本)中清除控制台屏幕我已经搜索了互联网和帮助文件,但似乎找不到它?
I am trying to find out if there is a function already provided in the delphi units to provide this functionality.
Delphi运行时库没有提供这样的功能。您将需要使用操作系统服务编写您自己的函数。 MSDN 上的这篇文章解释了如何操作:https://support.microsoft.com/en-us/kb/99261
这样翻译:
procedure ClearScreen;
var
stdout: THandle;
csbi: TConsoleScreenBufferInfo;
ConsoleSize: DWORD;
NumWritten: DWORD;
Origin: TCoord;
begin
stdout := GetStdHandle(STD_OUTPUT_HANDLE);
Win32Check(stdout<>INVALID_HANDLE_VALUE);
Win32Check(GetConsoleScreenBufferInfo(stdout, csbi));
ConsoleSize := csbi.dwSize.X * csbi.dwSize.Y;
Origin.X := 0;
Origin.Y := 0;
Win32Check(FillConsoleOutputCharacter(stdout, ' ', ConsoleSize, Origin,
NumWritten));
Win32Check(FillConsoleOutputAttribute(stdout, csbi.wAttributes, ConsoleSize, Origin,
NumWritten));
Win32Check(SetConsoleCursorPosition(stdout, Origin));
end;
如何在 delphi 控制台应用程序(delphi xe6 或更高版本)中清除控制台屏幕我已经搜索了互联网和帮助文件,但似乎找不到它?
I am trying to find out if there is a function already provided in the delphi units to provide this functionality.
Delphi运行时库没有提供这样的功能。您将需要使用操作系统服务编写您自己的函数。 MSDN 上的这篇文章解释了如何操作:https://support.microsoft.com/en-us/kb/99261
这样翻译:
procedure ClearScreen;
var
stdout: THandle;
csbi: TConsoleScreenBufferInfo;
ConsoleSize: DWORD;
NumWritten: DWORD;
Origin: TCoord;
begin
stdout := GetStdHandle(STD_OUTPUT_HANDLE);
Win32Check(stdout<>INVALID_HANDLE_VALUE);
Win32Check(GetConsoleScreenBufferInfo(stdout, csbi));
ConsoleSize := csbi.dwSize.X * csbi.dwSize.Y;
Origin.X := 0;
Origin.Y := 0;
Win32Check(FillConsoleOutputCharacter(stdout, ' ', ConsoleSize, Origin,
NumWritten));
Win32Check(FillConsoleOutputAttribute(stdout, csbi.wAttributes, ConsoleSize, Origin,
NumWritten));
Win32Check(SetConsoleCursorPosition(stdout, Origin));
end;