Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> progressbar в цикле на winapi 
:(
    Опции темы
BLACK_KOT
Дата 15.12.2010, 04:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 20.12.2006

Репутация: нет
Всего: -1



Код

 AssignFile(FromF, 'C:\555\2.avi');                  
         Reset(FromF, 1); { Record size = 1 }
         AssignFile(ToF, 'C:\555\11.avi'); { Open output file }
         Rewrite(ToF, 1); { Record size = 1 }
         repeat
           BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
           BlockWrite(ToF, Buf, NumRead, NumWritten);
           //что тут добавить, чтоб не подвисало и отображался процент скопированного?
         until (NumRead = 0) or (NumWritten <> NumRead);
         CloseFile(FromF);
         CloseFile(ToF);


в цикле выполняю копирование большого файла. как мне отобразить процент скопированного?



--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
Artemon
Дата 15.12.2010, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: нет
Всего: 20



Application.ProcessMessages(); // Это чтобы приложение не подвисало.

А отображать процесс можно в стандартном ProgressBar.

Устанавливаешь его максимальное значение в 100%, затем вычисляешь на текущем шаге сколько процентов уже сделано, и устанавливаешь это значение в ProgressBar.


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
BLACK_KOT
Дата 15.12.2010, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 20.12.2006

Репутация: нет
Всего: -1



Я ПИШУ НА WINAPI !! какой нафиг стандартный прогрессбар может быть! и Application.ProcessMessages();  тоже не катит. нужен аналог НА WINAPI !


--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
Snowy
Дата 15.12.2010, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Ну, для начала тебе как минимум потребуется окно с прогрессбаром.
Для работы с прогрессбаром, тебе потребуются ключемые слова:
msctls_progress32, PBM_SETRANGE32, PBM_SETSTEP, PBM_SETSTEP
Также полезно посмотреть функцию CopyFileEx, третий параметр которой позволяет указать колбэк событие для вывода информации о процессе копирования.
PM MAIL   Вверх
Artemon
Дата 15.12.2010, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: нет
Всего: 20



Цитата(BLACK_KOT @  15.12.2010,  12:06 Найти цитируемый пост)
Я ПИШУ НА WINAPI !! какой нафиг стандартный прогрессбар может быть! и Application.ProcessMessages();  тоже не катит. нужен аналог НА WINAPI !


И что с того, что ты пишешь на WinApi ?

Выводить процент завершения ты собираешься пользователю прямо в мозг чтоли ?

А поповоду того, что хочешь чисто на WinApi, так вот что первая ссылка гугла дает.

Код

function TApplication.ProcessMessage(var Msg: TMsg): Boolean;
var
  Handled: Boolean;
begin
  Result := False;
  if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then
  begin
    Result := True;
    if Msg.Message <> WM_QUIT then
    begin
      Handled := False;
      if Assigned(FOnMessage) then FOnMessage(Msg, Handled);
      if not IsHintMsg(Msg) and not Handled and not IsMDIMsg(Msg) and
        not IsKeyMsg(Msg) and not IsDlgMsg(Msg) then
      begin
        TranslateMessage(Msg);
        DispatchMessage(Msg);
      end;
    end
    else
      FTerminate := True;
  end;
end;
 
procedure TApplication.ProcessMessages;
var
  Msg: TMsg;
begin
  while ProcessMessage(Msg) do {loop};
end;



--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
BLACK_KOT
Дата 16.12.2010, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 20.12.2006

Репутация: нет
Всего: -1



Код

for i:=1 to size do
           begin
           AssignFile(ToF, papka+inttostr(i)+'.txt'); { Open output file }
           Rewrite(ToF, 1); { Record size = 1 }
           for k:=1 to m do
             begin
             BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
             BlockWrite(ToF, Buf, NumRead, NumWritten);
             end;
           CloseFile(ToF);
           end;

         CloseFile(FromF);


что конкретно в этот цикл добавить , чтоб при работе он не подвисал?


--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
0x0027
Дата 18.12.2010, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 29.1.2010

Репутация: -1
Всего: -1



конкретно надо добавить мозг
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0772 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.