此问题是我之前发布的题为How to fix this procedure writing a string to the console screen buffer的后续问题。
我想在写一个任意字符串之前将光标设置到给定的(x,y)位置:
GotoXY(x,y)
SendLn('The harder they come...');
如何实施procedure GotoXY(x, y: integer)
?
答案 0 :(得分:6)
快速谷歌揭晓
答案 1 :(得分:3)
作为参考,这是我对问题的解决方案,基于JamesB的帖子(接受的答案):
procedure GotoXY(x, y: Integer);
var
CursorCoord: _COORD;
begin
CursorCoord.x := x;
CursorCoord.y := y;
SetConsoleCursorPosition(hStdOut, CursorCoord);
end;
修改强>
上面提到的jamesB提到的page也指向另一个有趣的相关资源,即GetConsoleScreenBufferInfo function。
在控制台屏幕缓冲区中获取光标的列和行坐标也是我的要求的一部分。
以下是我根据引用资源编写的2个Delphi函数:
var
Buffer: _Console_Screen_Buffer_Info;
...
function WhereX: Integer;
begin
GetConsoleScreenBufferInfo(hStdOut,Buffer);
//
Result:=Buffer.dwCursorPosition.X;
end;
function WhereY: Integer;
begin
GetConsoleScreenBufferInfo(hStdOut,Buffer);
//
Result:=Buffer.dwCursorPosition.Y;
end;