Страница: 1 |
Страница: 1 |
Вопрос: Копирование файлов
Добавлено: 10.05.07 10:58
Автор вопроса: GOD
Мне нужно копирование файлов отдельным потоком с отображением процентов.
Пожалуйста подскажите где посмотреть или дайте пример.
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
Сашок
ICQ: 387093431
Вопросов: 1
Ответов: 70
Профиль | | #1
Добавлено: 10.05.07 13:02
'in a form (Form1)
Private Sub Form_Load()
'KPD-Team 2001
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim Ret As Long
'set the graphics mode to persistent
Me.AutoRedraw = True
'print some text
Me.Print "Click the form to abort the filecopy"
'show the form
Me.Show
'start copying
Ret = CopyFileEx("c:\verybigfile.ext", "c:\copy.ext", AddressOf CopyProgressRoutine, ByVal 0&, bCancel, COPY_FILE_RESTARTABLE)
'show some text
Me.Print "Filecopy completed " + IIf(Ret = 0, "ERROR/ABORTED)", "successfully"
End Sub
Private Sub Form_Click()
'cancel filecopy
bCancel = 1
End Sub
'in a module
Public Const PROGRESS_CANCEL = 1
Public Const PROGRESS_CONTINUE = 0
Public Const PROGRESS_QUIET = 3
Public Const PROGRESS_STOP = 2
Public Const COPY_FILE_FAIL_IF_EXISTS = &H1
Public Const COPY_FILE_RESTARTABLE = &H2
Public Declare Function CopyFileEx Lib "kernel32.dll" Alias "CopyFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal lpProgressRoutine As Long, lpData As Any, ByRef pbCancel As Long, ByVal dwCopyFlags As Long) As Long
Public bCancel As Long
Public Function CopyProgressRoutine(ByVal TotalFileSize As Currency, ByVal TotalBytesTransferred As Currency, ByVal StreamSize As Currency, ByVal StreamBytesTransferred As Currency, ByVal dwStreamNumber As Long, ByVal dwCallbackReason As Long, ByVal hSourceFile As Long, ByVal hDestinationFile As Long, ByVal lpData As Long) As Long
'adjust the caption
Form1.Caption = CStr(Int((TotalBytesTransferred * 10000) / (TotalFileSize * 10000) * 100)) + "% complete..."
'allow user input
DoEvents
'continue filecopy
CopyProgressRoutine = PROGRESS_CONTINUE
End Function
Номер ответа: 2
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #2
Добавлено: 10.05.07 13:04
Open ... For Binary As
Читай и пиши блоками
Я не так уж давно на форуме спрашивал.
Номер ответа: 3
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #3
Добавлено: 10.05.07 13:36
Arseny, ты забыл, вопрос стоит про отдельный поток.
Номер ответа: 4
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #4
Добавлено: 10.05.07 13:44
Извиняйте, не обратил внимания...
Номер ответа: 5
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #5
Добавлено: 10.05.07 14:15
Вопрос про отдельный поток стоит не потому, что автору реально нужен отдельный поток. Вопрос про отдельный поток стоит потому, что у автора фигово работает программа, и он - поскольку, разумеется, слышал о "многопоточности" - немедленно сделал вывод, что она-то ему и поможет.
Между тем, фигово работающая программа при переносе в многопоточность становится не работающей вообще.
Хлебнув всех прелестей этого пути (коих гораздо больше, чем кажется), автор, разумеется, воспользуется нормальным способом копирования файлов, например тем, что выложен выше...
Номер ответа: 6
Автор ответа:
GOD
Вопросов: 2
Ответов: 7
Профиль | | #6
Добавлено: 12.05.07 21:34
GSerg, ненадо так некрасиво говорить о людях которых незнаешь! И не говори "Я же сказал", т.к. меня устроил первый вариант. Просто я вероятно немного неправильно поставил вопрос, просто мне нужен был удобный способ, что бы файл копировался, но это не останавливало программу и можно было получить инфу о колличестве скопированного.
Номер ответа: 7
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #7
Добавлено: 13.05.07 11:53
Доктор тебя тоже знать не знает, а по анализам, прикинь, диагноз ставит.
Номер ответа: 8
Автор ответа:
Arvitaly
ICQ: 301746136
Вопросов: 28
Ответов: 549
Web-сайт:
Профиль | | #8
Добавлено: 13.05.07 11:59
а как насчет просто использовать таймер???
Номер ответа: 9
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #9
Добавлено: 13.05.07 21:44
ы? лучше акваланг...
Номер ответа: 10
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #10
Добавлено: 14.05.07 17:09
Сомневаюсь, что акваланг поможет скопировать файл. Во всяком случае, это не будет standalone-решение, т.к. он будет постоянно расходовать сжатый кислород из баллонов.