als Referenz, das ist meine Antwort auf die Frage, bezogen auf JamesB der Post (die akzeptierte Antwort):
procedure GotoXY(x, y: Integer);
var
CursorCoord: _COORD;
begin
CursorCoord.x := x;
CursorCoord.y := y;
SetConsoleCursorPosition(hStdOut, CursorCoord);
end;
Edit:
Die page, auf die oben von jamesB verwiesen wird, zeigt auch auf eine andere interessante verwandte Ressource, nämlich GetConsoleScreenBufferInfo function.
Das Abrufen der Spalten- und Zeilenkoordinaten des Cursors in der Konsole Bildschirmpuffer ist auch Teil meiner Anforderungen.
Hier sind die 2 Delphi Funktionen, die ich geschrieben auf die zitierte Ressource basierend haben:
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;
Die Frage ist, warum Sie verwenden [ 'WriteFile'] (http://stackoverflow.com/questions/9946039/how-to-fix-this-procedure-Schreiben-ein-String-to-the-Konsole-Bildschirm-Puffer) zum Schreiben auf die Konsole. Verwenden Sie die Konsolen-APIs, z. 'WriteConsole' und Freunde. –
@David Heffernan: Danke: len: = Länge (n); WriteConsole (hStdOut, @s [1], len, len, nil); macht den Job. – menjaraz
Denken Sie daran, dass, wenn stdout in eine Datei umgeleitet wird, WriteConsole fehlschlägt. –