Pour référence, voici ma solution à la question, basée sur le poste de JamesB (la réponse acceptée):
procedure GotoXY(x, y: Integer);
var
CursorCoord: _COORD;
begin
CursorCoord.x := x;
CursorCoord.y := y;
SetConsoleCursorPosition(hStdOut, CursorCoord);
end;
Edit:
Le page référencé par jamesB ci-dessus indique également une autre ressource connexe intéressante, à savoir GetConsoleScreenBufferInfo function. Obtenir les coordonnées colonne et ligne du curseur dans le tampon de l'écran de la console fait également partie de mes exigences.
Voici les 2 fonctions Delphi J'ai écrit sur la base ressource citée:
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;
La question est pourquoi vous utilisez [ 'WriteFile'] (http://stackoverflow.com/questions/9946039/how-to-fix-this-procedure-writing-a-string-to-the-console-screen-buffer) pour écrire sur la console. Utilisez les API de console, par ex. 'WriteConsole' et amis. –
@David Heffernan: Merci: len: = Longueur (s); WriteConsole (hStdOut, @s [1], len, len, nil) Fait le travail. – menjaraz
N'oubliez pas que si stdout est redirigé vers un fichier, WriteConsole échouera. –