Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: sharpc.livejournal.com
 Профиль | | #7
Добавлено: 13.05.07 11:53
Доктор тебя тоже знать не знает, а по анализам, прикинь, диагноз ставит.

Ответить

Номер ответа: 8
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #10
Добавлено: 14.05.07 17:09
Сомневаюсь, что акваланг поможет скопировать файл. Во всяком случае, это не будет standalone-решение, т.к. он будет постоянно расходовать сжатый кислород из баллонов.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам