![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Консоль [D7]
Lithium © (2011-06-25 19:55:00)Здравствуйте!
Подскажите пожалуйста, как в консольном приложении вывести ( выводить ) статус процесса в одной строке?
Например: WriteLn(' Status : '+IntToStr(100 * Y div 1000)+'%');
В гугле ничего не удалось найти...
Заранее благодарен за ваши ответы!
Anatoly Podgoretsky (2011-06-29 15:21:00) [1]Да автор не точно поставил вопрос. Эго видимо интересовал многократный вывод в одной строке с начала, на это намекает слово Статус
Юрий Зотов (2011-06-29 11:41:00) [2]
> QAZ (29.06.11 11:29) [13]
А, вот оно что.
:o)
Inovet (2011-06-29 11:39:00) [3]> [6] Anatoly Podgoretsky © (29.06.11 07:25)
> А ты попробуй еще и LF отдельно и удивись.
И FF (12). Ну и BL (7).
QAZ (2011-06-29 11:29:00) [4]write('blablabla');
write('blablabla');
write('blablabla');
=blablablablablablablablabla
write(#13'blablabla');
write(#13'blablabla');
write(#13'blablabla');
=blablabla
Юрий Зотов (2011-06-29 11:17:00) [5]
> QAZ (29.06.11 11:09) [10]
> а если несколько раз подряд вызвать write('blablabla') что будет?
То, что и хотелось автору - все напечатается в одной строке.
А если нужно в разных, то опять же - зачем извращаться? Автор сам в своем вопросе указал WriteLn.
Какие проблемы-то? Нет их.
Юрий Зотов (2011-06-29 11:13:00) [6]> 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.
QAZ (2011-06-29 11:09:00) [7]
> Чего-то я не понимаю, наверное, но зачем здесь вообще #13?
> Ровно то же самое выдает и просто write('blablabla'), без
> всяких извращений.
а если несколько раз подряд вызвать write('blablabla') что будет?
Юрий Зотов (2011-06-29 11:00:00) [8]> А как выводить в конкретной строке?
См. [2].
Юрий Зотов (2011-06-29 10:59:00) [9]Чего-то я не понимаю, наверное, но зачем здесь вообще #13? Ровно то же самое выдает и просто write('blablabla'), без всяких извращений.
Да и вообще непонятно, в чем проблема? Чем плохо изначальное авторское
Write('Status : ' + IntToStr(74) + '%');
или
WriteLn(Format('Status : %d%%', [74]));
или самое простое и самое правильное:
Write('Status : ', 74, '%');
rouf (2011-06-29 10:53:00) [10]А как выводить в конкретной строке?
Anatoly Podgoretsky (2011-06-29 07:25:00) [11]А ты попробуй еще и LF отдельно и удивись.
Германн (2011-06-29 02:15:00) [12]
> RWolf © (27.06.11 10:00) [3]
>
>
> > Подскажите пожалуйста, как в консольном приложении вывести
> > ( выводить ) статус процесса в одной строке?
>
> элементарно: write(#13'blablabla');
>
Я бы не смог сообразить и придумать такое простое решение. Как-то уже отвык, что CarriageReturn без LineFeed всё ещё живёт и даже как-то работает!
Lithium (2011-06-29 01:46:00) [13]
> элементарно: write(#13'blablabla');
Спасибо! :)
RWolf (2011-06-27 10:00:00) [14]
> Подскажите пожалуйста, как в консольном приложении вывести
> ( выводить ) статус процесса в одной строке?
элементарно:write(#13'blablabla');
MBo (2011-06-25 21:08:00) [15]Не рыба, но удочка - найти раздел Console Functions в хелпе Windows SDK или в онлайновом MSDN, и выбрать оттуда пару нужных функций.
Если задач с консолью будет много, можно найти модуль, эмулирующий функции турбопаскального модуля CRT.
Inovet (2011-06-25 20:42:00) [16]Write?