Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Консоль [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?


Наверх

Титульная страница Поиск, карта сайта Написать письмо