Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Progress Bar и копирование файлов

18K
05 августа 2006 года
Last_Knight
10 / / 05.08.2006
Моя программа копирует файлы..
Когда копируется что-то большое, то может показаться, что комп повис..
На самом деле он копирует. А вот если бы был Progress Bar, который показывает, сколько осталось/скопировалось, было бы веселее.. Только как это сделать..? :)
4.1K
05 августа 2006 года
GRIENDERS
117 / / 06.06.2006
Попробуй так:
var k: integer; //кол-во файлов для копирования
begin
progressbar1.Min:=0;
progressbar1.max:=k;
progressbar1.Stepby(1); // шаг прогресс бара
end;
339
06 августа 2006 года
verybadbug
619 / / 12.09.2005
тока нужно ещё кое-что добавить....
var k: integer; //кол-во файлов для копирования
begin
progressbar1.Min:=0;
progressbar1.max:=k;
progressbar1.Stepby(1); // шаг прогресс бара
Application.ProcessMessages;
end;
339
06 августа 2006 года
verybadbug
619 / / 12.09.2005
только ЭТО на случай копирования нескольких файлов...... если тебе нужен прогресс на каждый файл в отдельности - реализация завит от кода, которым ты копируешь файлы.... кидай процедуру копирования - мы найдём решение.... наверно.. ))))
10
06 августа 2006 года
Freeman
3.2K / / 06.03.2004
[QUOTE=Last_Knight]А вот если бы был Progress Bar, который показывает, сколько осталось/скопировалось, было бы веселее..[/QUOTE]
В RX была похожая функция, в FileUtil.
18K
06 августа 2006 года
Last_Knight
10 / / 05.08.2006
Копирую я так: CopyFile(adress, newadress, True);
1.8K
06 августа 2006 года
LastSoul
279 / / 28.12.2005
У меня кстати как-то несколько раз глюки ужасные были с CopyFile() - фильмы копировались с скоростью 700 метров в секунду, но самое ужасное это то что эти фильмы (некоторые, вернее почти все) после этого непоказывали, и после такого я так и немогу понять кто гнал - CopyFile(), винда или делфя криво встала, или еще что-то...
339
07 августа 2006 года
verybadbug
619 / / 12.09.2005
ребята попробуйте написать свою прощедуру копирования файлов.... используем TFileStream (и таймер если хотите).... )))) тогда можно будет и прогресс бар на каждый файл добавить....
339
07 августа 2006 года
verybadbug
619 / / 12.09.2005
должно получиться нечто вроде
Код:
function MyCopyFile(FromFile, ToFile: TFileName): Boolean;
var
  FromStream, ToStream: TFileStream;
begin
  Result := True;
  if not FileExists(FromFile) then begin
    Result := False;
    Exit;
  end;
  FromStream := TFileStream.Create(FromFile, fmRead);
  try
    ToStream := TFileStream.Create(ToFile, fmCreate);
    try
      //ProgressBar1.Max := FromStream.Size;
      while ToStream.Size < FromStream.Size do begin
        ToStream.CopyFrom(FromStream, 1);
        //сдесь чё-нить с прогрессом делаем (увеличиваем)
        //Application.ProcessMessages;
      end;
    finally
      ToStream.Free;
    end;
  finally
    FromStream.Free;
  end;
end;


писал сразу сюда... поэтому могут быть ошибки....

зы: для большей эффективности данного метода и увеличения скорости копирования предлягаю при копировании использовать вместо 1 байта... скажем 1 Кб...
10
07 августа 2006 года
Freeman
3.2K / / 06.03.2004
[QUOTE=Last_Knight]Копирую я так: CopyFile(adress, newadress, True);[/QUOTE]
Используй CopyFileEx вместо CopyFile - у нее можно задать "progress routine". Рекомендованный мной RX FileUtil является всего лишь обвязкой вокруг этой процедуры. Можно не использовать его напрямую, а только посмотреть, как реализовано там. Пример очень качественный.

Вообще, предпочительнее всегда использовать встроенные в систему процедуры копирования. Например, в справке Far написано, установка флага "Использовать встроенную процедуру копирования" предпочтительна для NTFS, т. к. более эффективно распределяет дисковое пространство, препятствуя неконтролируемой фрагментации. Far ничего нового не изобретает - SDK для всех один. Следовательно, используется все та же CopyFileEx.
547
07 августа 2006 года
Hydra
488 / / 20.06.2006
А вообще вместо прогресс бара можно TAnimation попользовать. Будет копирование аля-виновс.
18K
08 августа 2006 года
Last_Knight
10 / / 05.08.2006
Вот исходники этого проекта. Идея была такая: часто хожу к друзьям с винтом (да хотя, все ходят :) ). Кидаем на него все подряд.. А вручную сортировать оччень долго.. Решил написать прогу. Написал.
зы: еxe-шник нужно поместить в каталог с туевой хучей файлов (пока только mp3, wav, avi и mpg). А там он сам все сделает :)
Все глюки\предложения и т.п. присылайте мну
10
08 августа 2006 года
Freeman
3.2K / / 06.03.2004
[QUOTE=Last_Knight]Все глюки\предложения и т.п. присылайте мну[/QUOTE]
Если только целью не стоит научиться программировать, на практике не проще ли воспользоваться, например, Ctrl + <+ на дополнительной цифровой клавиатуре> в Far? Отметит все файлы, имеющие такое же расширение, как и у выделенного курсором.
18K
08 августа 2006 года
Last_Knight
10 / / 05.08.2006
Руки чешутся чтоб написать че-нить - идей нет. Вот появилась идейка. Почему бы и не написать?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог