Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Создание индикатора загрузки: вращающиеся символы в консольном приложении на Delphi

Delphi , ОС и Железо , DOS и Консоль

При разработке консольных приложений на Delphi может возникнуть необходимость отображения индикатора загрузки. Это может быть полезно, когда приложение выполняет длительные операции, и пользователь должен понимать, что процесс не завис. Один из способов реализации такого индикатора — использование вращающихся символов.

Проблема и её решение

В вопросе пользователя Paul представлен код, который создаёт вращающийся индикатор загрузки в консольном приложении на Delphi. Однако, код можно улучшить и оптимизировать. В частности, функция PositionXY содержит вызов sleep(100), который логически не связана с позиционированием курсора, и повторное позиционирование курсора на начало строки в цикле неэффективно.

Подтверждённый ответ

Для улучшения кода можно использовать следующий подход:

const SpinnerChars: array[0..3] of Char = ('|', '/', '-', '\');
var i: Integer;
begin
  while True do
  begin
    for i := 0 to Length(SpinnerChars) - 1 do
    begin
      Write(SpinnerChars[i]);
      Write(#8); // BackSpace для стирания предыдущего символа
      Sleep(100);
    end;
    // Здесь может быть код, который выполняет длительную операцию
  end;
  ReadLn;
end.

Альтернативный ответ

Альтернативный подход, предложенный пользователем, заключается в создании функции WriteXY, которая позволяет более гибко управлять выводом символов на экран:

Procedure WriteXY(x, y: Integer; s: string);
var
  hStdOut: THandle;
  ScreenBufInfo: TConsoleScreenBufferInfo;
  Coord1: TCoord;
begin
  hStdOut := GetStdHandle(STD_OUTPUT_HANDLE);
  GetConsoleScreenBufferInfo(hStdOut, ScreenBufInfo);
  Coord1.X := x;
  Coord1.Y := y * ScreenBufInfo.dwSize.X;
  SetConsoleCursorPosition(hStdOut, Coord1);
  Write(s);
end;

begin
  while True do
  begin
    WriteXY(0, 0, '|'); Sleep(100);
    WriteXY(0, 0, '/'); Sleep(100);
    WriteXY(0, 0, '-'); Sleep(100);
    WriteXY(0, 0, '\'); Sleep(100);
  end;
  ReadLn;
end.

Этот подход позволяет использовать одну и ту же функцию для позиционирования различных символов, что упрощает код и делает его более читаемым.

Общие рекомендации

  • Используйте константу для хранения символов индикатора, чтобы упростить их изменение.
  • Стирайте предыдущий символ с помощью BackSpace (символ #8), чтобы избежать накопления символов на экране.
  • Выполняйте длительные операции внутри цикла, чтобы индикатор загрузки отображался во время их выполнения.

Используя эти рекомендации, вы сможете создать эффективный и понятный индикатор загрузки для консольного приложения на Delphi.

Создано по материалам из источника по ссылке.

Создание и улучшение кода индикатора загрузки с вращающимися символами в консольном приложении на Delphi для отображения процесса загрузки в реальном времени.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: DOS и Консоль ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 21:50:26/0.0033590793609619/0