|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
Изменить строку в консольном приложении
Доброго времени суток!
{$APPTYPE CONSOLE} Пишу программу в виде консольной, так вот: каким образом можно изменить строку (указав ее индекс в консольном списке) в консоли? Пример, при архивации RAR'ом показывается статус архивации. Заранее спасибо! |
#2
|
||||
|
||||
http://codingworld.ru/showthread.php?p=4828
Код:
program Project2; {$APPTYPE CONSOLE} uses SysUtils, Windows, Unit1 in 'Unit1.pas'; var imax : integer = 100; inow : string = ''; psi : integer; begin Writeln('This is the test with GotoXY'); Writeln('Progress: 0%'); for psi := 0 to imax do begin GotoXY(10, 1); write(IntToStr(psi) + '%'); Sleep(100); end; Readln; end. unit Unit1; interface procedure SetAttr(attr: word); function GetAttr: word; procedure GotoXY(aX, aY: integer); { zero-based coords } function WhereX: integer; function WhereY: integer; implementation uses Windows; var UpperLeft: TCoord = (X:0; Y:0); hCon: integer; procedure GotoXY(aX, aY: integer); var aCoord: TCoord; begin aCoord.x:=aX; aCoord.y:=aY; SetConsoleCursorPosition(hCon,aCoord); end; procedure SetAttr(attr: word); begin SetConsoleTextAttribute(hCon,attr); end; function WhereX: integer; var ScrBufInfo: TConsoleScreenBufferInfo; begin GetConsoleScreenBufferInfo(hCon,ScrBufInfo); Result:=ScrBufInfo.dwCursorPosition.x; end; function WhereY: integer; var ScrBufInfo: TConsoleScreenBufferInfo; begin GetConsoleScreenBufferInfo(hCon,ScrBufInfo); Result:=ScrBufInfo.dwCursorPosition.y; end; function GetAttr: word; var ScrBufInfo: TConsoleScreenBufferInfo; begin GetConsoleScreenBufferInfo(hCon,ScrBufInfo); Result:=ScrBufInfo.wAttributes; end; initialization hCon := GetStdHandle(STD_OUTPUT_HANDLE); end. Помогаю за Спасибо |
#3
|
||||
|
||||
v1s2222, спасибо. Это и есть что я искал, но у меня есть код покруче:
Код:
Write('Progress 0% [_____]'); Write(#10); Write('Progress 20% [#____]'); ... Последний раз редактировалось GriLab, 08.09.2011 в 23:54. |
#4
|
||||
|
||||
Ничего крутого, #13 - код перевода строки. Ты все время опускаешься на строку ниже. Тогда уж используй #10 - переход в начало строки.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#5
|
||||
|
||||
angvelem, ошибся значит, спасибо (исправил).
|