Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CopyFileEx и ProgressBar 
V
    Опции темы
maxys146
Дата 25.7.2009, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Подскажите как реализовать индикатор копирования большого файла через CopyProgressRoutine пожалуйста. Если можно пример простейшей программы.
PM MAIL   Вверх
shklowsky
Дата 25.7.2009, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 5
Всего: 6



а обязательно с CopyProgressRoutine?
может SHFileOperation ?
PM MAIL   Вверх
maxys146
Дата 25.7.2009, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Желательно, мне нужен процесс копирования одного большого файла, а не счетчик, да и разобраться с CopyProgressRoutine хочется.
PM MAIL   Вверх
Alca
Дата 25.7.2009, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 25
Всего: 50





--------------------
PM WWW ICQ Skype Jabber   Вверх
maxys146
Дата 25.7.2009, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Проще всего отправить в поисковик, но того что мне надо я не нашел((
PM MAIL   Вверх
shklowsky
Дата 25.7.2009, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 5
Всего: 6



PM MAIL   Вверх
maxys146
Дата 25.7.2009, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вобщем есть код:
Код

DWORD CALLBACK CopyProgressRoutine(
LARGE_INTEGER TotalFileSize, // total file size, in bytes
LARGE_INTEGER TotalBytesTransferred, // total number of bytes transferred
LARGE_INTEGER StreamSize, // total number of bytes for this stream
LARGE_INTEGER StreamBytesTransferred, // total number of bytes transferred for this stream
DWORD dwStreamNumber, // the current stream
DWORD dwCallbackReason, // reason for callback
HANDLE hSourceFile, // handle to the source file
HANDLE hDestinationFile, // handle to the destination file
LPVOID lpData // passed by CopyFileEx
)
{
    // Calculate the percentage here.
    double Percentage = ( double(TotalBytesTransferred.QuadPart) /
        double(TotalFileSize.QuadPart) ) * 100;

    // Continue the file copy. It can also be stopped.
    return PROGRESS_CONTINUE;
}
void CopyFiles(AnsiString SourcePath, AnsiString DestinationPath, TStrings* List)
{
TSearchRec sr;
if (FindFirst(SourcePath+"*.*", faAnyFile, sr) == 0)
{
 do
 {
 if (sr.Attr & faDirectory)
  {
  if (sr.Name!=".")
  if (sr.Name!="..")
   {
   CopyFiles(SourcePath+sr.Name+"\\",DestinationPath+sr.Name+"\\",List);
   }
  }
  else
   {
   AnsiString Ext=ExtractFileExt(sr.Name).UpperCase();
   List->Add(SourcePath+sr.Name);
    ForceDirectories(DestinationPath);
    int ret;
    CopyFileEx( (SourcePath + sr.Name).c_str(), (DestinationPath + sr.Name).c_str(),CopyProgressRoutine,NULL,FALSE,COPY_FILE_FAIL_IF_EXISTS);

   }
 }
 while (FindNext(sr) == 0);
 FindClose(sr);
}
Application->ProcessMessages();
}



Вызов:
Код

 CopyFiles("C:\\1\\","C:\\2\\",RichEdit1->Lines);


Как прикрутить сюда прогрессбар? (RichEdit1 просто для проверки)
PM MAIL   Вверх
shklowsky
Дата 25.7.2009, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 5
Всего: 6



Код




Form1->ProgressBar1->Position=Form1->ProgressBar1->Max*TotalBytesTransferred.QuadPart / TotalFileSize.QuadPart;



Это сообщение отредактировал(а) shklowsky - 25.7.2009, 22:31
PM MAIL   Вверх
maxys146
Дата 26.7.2009, 07:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Усе, наконец-то, спасибо большое!!! smile
PM MAIL   Вверх
dumb
Дата 26.7.2009, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



maxys146, если вопрос решен, жми "пометить как решенный" в правой части заголовка темы.
PM MAIL   Вверх
maxys146
Дата 27.7.2009, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, не заметил)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

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

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

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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