Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Копирование папки с ProgressBar, возвращение к закрытой теме 
:(
    Опции темы
wolk
  Дата 26.3.2007, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Как сделать копирование папки с Pro smile gressBar
PM MAIL   Вверх
bom
Дата 26.3.2007, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

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



PM MAIL   Вверх
Akina
Дата 26.3.2007, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



FAQ


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
amt
Дата 3.4.2007, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 26.10.2004
Где: г. Волгоград

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



Привет ВСЕМ!!!
В этой теме (ранее) прозвучал вопрос:
Как сделать копирование папки с ProgressBar 
bom дал ссылку
http://forum.codenet.ru/showthread.php?t=36124
где указано
Код

Option Explicit
Public Type SHFILEOPSTRUCT
    hwnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAborted As Boolean
    hNameMaps As Long
    sProgress As String
End Type

Public Const FO_COPY = 2
Public Const FOF_NOCONFIRMMKDIR = &H200
Public Const FOF_NOCONFIRMATION = &H10

Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As Any) As Long
Private Function myFileCopy(NewFilePath As String, DBPath As String)
    Dim sh_op As SHFILEOPSTRUCT
    Dim Ret As Long
    With sh_op
       .hwnd = 0
       .wFunc = FO_COPY
       .pFrom = NewFilePath & vbNullChar & vbNullChar
       .pTo = DBPath & vbNullChar & vbNullChar
       .fFlags = FOF_NOCONFIRMATION Or FOF_NOCONFIRMMKDIR
    End With
    
    Ret = SHFileOperation(sh_op)

End Function
Sub запуск()
myFileCopy "C:\test\test.txt", "C:\test2\test.txt"
End Sub


И все замечательно, ... НО!
Только для одного объекта.
Если мне надо из одной папки скопировать несколько файлов или папок ( например по маске *.txt) то приходится функцию запускать каждый раз заново для каждого объекта, и в силу небольшого объема файлов окно с ProgressBar просто не появляется. 
Как это побороть?!
Может коряво написал?
Жду ответа.
Заранее благодарен
--------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций.
PM MAIL   Вверх
Akina
Дата 3.4.2007, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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




M
Akina
Темы объединены и открыты для ответов.

Цитата(amt @  3.4.2007,  21:10 Найти цитируемый пост)
Как это побороть?!

ОБычно делается для этого 2 прогресс-бара. Нижний показывает прогресс копирования очередного файла, верхний - прогресс копирования всех файлов (в штуках или по объему). Или наоборот.
Но сперва в любом разе придется сделать обход копитруемого поддерева и собрать информацию по количеству либо размеру файлов.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
amt
Дата 5.4.2007, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 26.10.2004
Где: г. Волгоград

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



Akina , 
С БОЛЬШИМ УВАЖЕНИЕМ, НО
НЕЛЬЗЯ ЛИ ЧУТЬ ПО ПРОЩЕ?! (ведь при копировании в винде отображается только один ProgressBar) smile 
--------------------
С точки зрения банальной эрудиции не каждый индивидуум способен игнорировать тенденции парадоксальных эмоций.
PM MAIL   Вверх
bom
Дата 5.4.2007, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 329
Регистрация: 22.2.2004
Где: Казахстан, Алматы

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



amt,  Кто сказал что SHFileOperation запрещает работать с файлами по маске?
Впрочем если не устраивает такой простой и удобный способ, есть еще один, менее простой и менее удобный (и не интересный, для меня лично):

1.
Цитата(Akina @  4.4.2007,  01:13 Найти цитируемый пост)
сделать обход копитруемого поддерева и собрать информацию по количеству либо размеру файлов

2.
Собственно - копирование, с отображением процесса в ProgressBar (можно в одном), присваивая его свойству .value  динамически-вычисляемый процент скопированного от общего количества или размера подлежащих копированию файлов.
Если таким способом предполагается копировать директории с вложенными директориями - не забывать делать проверку на существование одноименных директорий в новом месте и создавать их в случае отсутствия.

ЗЫ. Помнится wolk высказывал неудовольствие, что если таким способом копировать всего 1 мелкий файл, то юзер не успеет насладиться его супер-кустомным прогрессбаром, а если файл наоборот - большой, то ползунок долго стоит на отметке 0%, затем сразу показывает 100%.
В этом случае можно пойти еще дальше - копировать файлы поблочно.

Вперед, amt, wolk, флаг в руки  smile 

ЗЫ.ЗЫ. Сколько можно уже жевать эту тему?

 

Это сообщение отредактировал(а) bom - 5.4.2007, 23:09
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


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

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


 




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


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

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