Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2009, 01:50   #1
KurtWagner
Заблокирован
 
Регистрация: 12.01.2009
Сообщений: 60
Вопрос Копирование файлов(каталог-а) с ProgressBar

Извиняюсь, зная что тама уже была и не раз, но там не то что мне надо! Темы были копирования а мне нужно след. хочу чтоб, небыло показухи копирования по умолчанию, нужно чтоб копировал показывая файлы и ProgressBar1 сделать мини-прогу и с кодом... чтоб при нажатии кнопки Button1 у меня копировался весь диск в определеную папку... как это сделать, а точнее дайте исходник Заранее спасибо!!! С уважением, Веталь
KurtWagner вне форума Ответить с цитированием
Старый 14.01.2009, 02:07   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Первый проход - считаем количество файлов, подлежащих копированию и заносим это количество в макс прогресс-бара.
Второй проход - собственно копирование с увеличением значения позишена прогресс-бара от нуля на единичку на каждый скопированный файл.
Какой исходник? Неужели самому не хочется хоть что-то сделать самостоятельно?
mihali4 вне форума Ответить с цитированием
Старый 14.01.2009, 07:48   #3
KurtWagner
Заблокирован
 
Регистрация: 12.01.2009
Сообщений: 60
Плохо

mihali4 почему не охота, охота! тольк не получается,,, я подхода перехода не вижу ПЛИЗ ПОМОГИТЕ (((((((
KurtWagner вне форума Ответить с цитированием
Старый 14.01.2009, 08:17   #4
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Что именно нужно ?
Копировать директорию ? Копировать некую группу файлов ? И вообще создать файл-менеджер аля Total Commander ?
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 15.01.2009, 07:17   #5
KurtWagner
Заблокирован
 
Регистрация: 12.01.2009
Сообщений: 60
Восклицание

Kotofff Скажем так... У меня ДВД-РОМ(е) диск я хочу чтоб весь диск без стандартного показа копирования с ProgressBar1 копировал все содержимое в папку скажем c:\temp как это реализовать если можно исходник или код на KurtWagner@mail.ru Заранее Спасибо!!!
KurtWagner вне форума Ответить с цитированием
Старый 15.01.2009, 08:36   #6
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Как вариант можно по вот этой процедуре :
Код:
procedure FindFiles(StartFolder, Mask: string; List: TStrings; ScanSubFolders: Boolean = True);
var
  SearchRec: TSearchRec;
  FindResult: Integer;
begin
  List.BeginUpdate;
  try
    StartFolder := IncludeTrailingBackslash(StartFolder);
    FindResult := FindFirst(StartFolder + '*.*', faAnyFile, SearchRec);
    try
      while FindResult = 0 do
        with SearchRec do
        begin
          if (Attr and faDirectory) <> 0 then
          begin
            if ScanSubFolders and (Name <> '.') and (Name <> '..') then
              FindFiles(StartFolder + Name, Mask, List, ScanSubFolders);
          end
          else
          begin
            if MatchesMask(Name, Mask) then List.Add(StartFolder + Name);
          end;
          FindResult := FindNext(SearchRec);
        end;
    finally
    end;
  finally
    List.EndUpdate;
  end;
end;
Найти всю кучу файлов. В потом используя содержимое List копировать их всех по очереди ... процедура работает очень быстро так что самого процесса поиска почти не видно. А при копировании уже исходя из списка найденных можно оформить ProgressBar, например:
Код:
...
myFiles:TStrings;
...
begin
...
myFiles := TStrings.Create;
FindFiles('E:\', '*.*', myFiles, true);
... 
ProgressBar.min := 1;
ProgressBar.max := myFiles.Count;
if myFiles.Count > 0 then 
  for i:=1 to myFiles.Count do 
     begin
     ...
     ... копируем очередной файл какой-нить процедурой ...
     ...
     ProgressBar.Position := i;
     Application.ProcessMessages;
     end;
...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 16.01.2009, 07:26   #7
KurtWagner
Заблокирован
 
Регистрация: 12.01.2009
Сообщений: 60
Стрелка

Kotofff у меня не получилось так комплировал! но не тянет! вот то что я написал из твоего кода поправив его, и вот то что мне надо! Заранее спасибо!
Вложения
Тип файла: rar Project.rar (11.6 Кб, 80 просмотров)
KurtWagner вне форума Ответить с цитированием
Старый 16.01.2009, 15:04   #8
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Выслал на почту ... посмотри ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 21.03.2009, 23:46   #9
vilphoenix
Новичок
Джуниор
 
Регистрация: 21.03.2009
Сообщений: 1
По умолчанию

Цитата:
Сообщение от Kotofff Посмотреть сообщение
Выслал на почту ... посмотри ...
залей это файл на форм плз
vilphoenix вне форума Ответить с цитированием
Старый 23.03.2009, 03:22   #10
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
По умолчанию

vilphoenix лови!

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, Gauges, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Animate1: TAnimate;
    StatusBar1: TStatusBar;
    Gauge1: TGauge;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;
  T:TDateTime;


implementation

{$R *.DFM}

 Procedure TForm1.Button1Click(Sender: TObject);
  Const BufSize=(1024*1000)*10;
  Var FSize  : Longint;
      RByte  : Longint; //Сколько читать байт
      N,X,Y  : Longint;
      FileHandle  : Integer;
      FileHandle1 : Integer;
      Buffer: Pointer;
      FileName_From:String;
      FileName_To  :String;

  Begin

   FileName_From:='FROM\Pixels.exe';
   FileName_To  :='TO\Pixels.exe';
   If Not FileExists(FileName_From) Then Begin MessageBox(Application.Handle, PChar('Файл не найден !'),'Ошибка', MB_Ok+MB_IconWarning); Exit; End;

   Button1.Enabled:=False;

   FileHandle:=FileOpen(FileName_From,0);
   FileHandle1:=FileCreate(FileName_To);

   FSize:=GetFileSize(FileHandle,NIL);
   StatusBar1.Panels[1].Text:='Размер файла '+IntToStr(FSize)+' Байт';
   GetMem(Buffer,BufSize);

   T:=Time;
   Gauge1.Progress:=0;
   Gauge1.MaxValue:=FSize;
   Animate1.Active:=True;

   While FSize<>0 Do
    Begin
     If FSize>=BufSize Then RByte:=BufSize
     Else RByte:=FSize;

     FSize:=FSize-RByte;
     FileRead(FileHandle,Buffer^,RByte);

     Gauge1.Progress:=Gauge1.MaxValue-FSize;
     StatusBar1.Panels[0].Text:='Прошло времени: '+TimeToStr(Time-T);
     Application.ProcessMessages;

     FileWrite(FileHandle1,Buffer^,RByte);
   End;

  FreeMem(Buffer);
  FileClose(FileHandle);
  FileClose(FileHandle1);

  Animate1.Active:=False;
  Button1.Enabled:=True;
 End;

 end.
From Stilet: А оформлять читабельно? В следующий раз удалю.
Дайте мне власть и я переверну ваш мир!...

Последний раз редактировалось Stilet; 23.03.2009 в 10:16.
KWN, lnc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как задать команду загрузки файлов данных на кнопку если каталог и имена файлов известны??? Andbuba Microsoft Office Excel 2 28.12.2008 17:28
Копирование в каталог windows Черничный Общие вопросы Delphi 2 23.07.2008 03:52
Копирование нескольких файлов + ProgressBar AngelOfDeath Общие вопросы Delphi 4 28.05.2008 14:57
Копирование файла и progressbar VenMaster Компоненты Delphi 8 26.05.2008 21:44
Копирование файлов в каталог SANTA_KLAUD Общие вопросы Delphi 10 13.05.2008 18:30