Форум: "Начинающим";
Текущий архив: 2011.10.16;
Скачать: [xml.tar.bz2];
ВнизКонсоль Найти похожие ветки
← →
Lithium (2011-06-25 19:55) [0]Здравствуйте!
Подскажите пожалуйста, как в консольном приложении вывести ( выводить ) статус процесса в одной строке?
Например: WriteLn(" Status : "+IntToStr(100 * Y div 1000)+"%");
В гугле ничего не удалось найти...
Заранее благодарен за ваши ответы!
← →
Inovet © (2011-06-25 20:42) [1]Write?
← →
MBo © (2011-06-25 21:08) [2]Не рыба, но удочка - найти раздел Console Functions в хелпе Windows SDK или в онлайновом MSDN, и выбрать оттуда пару нужных функций.
Если задач с консолью будет много, можно найти модуль, эмулирующий функции турбопаскального модуля CRT.
← →
RWolf © (2011-06-27 10:00) [3]
> Подскажите пожалуйста, как в консольном приложении вывести
> ( выводить ) статус процесса в одной строке?
элементарно:write(#13"blablabla");
← →
Lithium (2011-06-29 01:46) [4]
> элементарно: write(#13"blablabla");
Спасибо! :)
← →
Германн © (2011-06-29 02:15) [5]
> RWolf © (27.06.11 10:00) [3]
>
>
> > Подскажите пожалуйста, как в консольном приложении вывести
> > ( выводить ) статус процесса в одной строке?
>
> элементарно: write(#13"blablabla");
>
Я бы не смог сообразить и придумать такое простое решение. Как-то уже отвык, что CarriageReturn без LineFeed всё ещё живёт и даже как-то работает!
← →
Anatoly Podgoretsky © (2011-06-29 07:25) [6]А ты попробуй еще и LF отдельно и удивись.
← →
rouf (2011-06-29 10:53) [7]А как выводить в конкретной строке?
← →
Юрий Зотов © (2011-06-29 10:59) [8]Чего-то я не понимаю, наверное, но зачем здесь вообще #13? Ровно то же самое выдает и просто write("blablabla"), без всяких извращений.
Да и вообще непонятно, в чем проблема? Чем плохо изначальное авторскоеWrite("Status : " + IntToStr(74) + "%");
илиWriteLn(Format("Status : %d%%", [74]));
или самое простое и самое правильное:Write("Status : ", 74, "%");
← →
Юрий Зотов © (2011-06-29 11:00) [9]> А как выводить в конкретной строке?
См. [2].
← →
QAZ (2011-06-29 11:09) [10]
> Чего-то я не понимаю, наверное, но зачем здесь вообще #13?
> Ровно то же самое выдает и просто write("blablabla"), без
> всяких извращений.
а если несколько раз подряд вызвать write("blablabla") что будет?
← →
Юрий Зотов © (2011-06-29 11:13) [11]> rouf (29.06.11 10:53) [7]
Упрощаю задачу. Детали см. в справке.
uses
Windows, SysUtils;
var
H: THandle;
Coord: TCoord;
S: string;
N: Cardinal;
begin
S := Format("Status : %d%%", [74]);
H := GetStdHandle(STD_OUTPUT_HANDLE);
Coord.X := 30;
Coord.Y := 12;
SetConsoleCursorPosition(H, Coord);
WriteConsole(H, PChar(S), Length(S), N, nil);
readLn;
end.
← →
Юрий Зотов © (2011-06-29 11:17) [12]
> QAZ (29.06.11 11:09) [10]
> а если несколько раз подряд вызвать write("blablabla") что будет?
То, что и хотелось автору - все напечатается в одной строке.
А если нужно в разных, то опять же - зачем извращаться? Автор сам в своем вопросе указал WriteLn.
Какие проблемы-то? Нет их.
← →
QAZ (2011-06-29 11:29) [13]write("blablabla");
write("blablabla");
write("blablabla");
=blablablablablablablablabla
write(#13"blablabla");
write(#13"blablabla");
write(#13"blablabla");
=blablabla
← →
Inovet © (2011-06-29 11:39) [14]> [6] Anatoly Podgoretsky © (29.06.11 07:25)
> А ты попробуй еще и LF отдельно и удивись.
И FF (12). Ну и BL (7).
← →
Юрий Зотов © (2011-06-29 11:41) [15]
> QAZ (29.06.11 11:29) [13]
А, вот оно что.
:o)
← →
Anatoly Podgoretsky © (2011-06-29 15:21) [16]Да автор не точно поставил вопрос. Эго видимо интересовал многократный вывод в одной строке с начала, на это намекает слово Статус
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.10.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c