![]() |
|
Модераторы: Akina |
![]()
|
|
| Poxer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 29.5.2004 Репутация: нет Всего: нет |
Есть такой код, рабочей программы:
Option Explicit Private Const MAX_PATH = 260 Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Private Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * MAX_PATH cAlternate As String * 14 End Type Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long Private Declare Function GetLastError Lib "kernel32" () As Long Private Const ERROR_NO_MORE_FILES = 18& Private Const INVALID_HANDLE_VALUE = -1 Private Const DDL_DIRECTORY = &H10 ' Copy all files below this directory. Return the ' number of files copied. Private Function CopyFiles(ByVal from_dir As String, ByVal to_dir As String) As Long Dim files_copied As Long Dim dirs As Collection Dim fname As String Dim search_handle As Long Dim file_data As WIN32_FIND_DATA Dim i As Integer Set dirs = New Collection ' Get the first file. search_handle = FindFirstFile( _ from_dir & "*.*", file_data) If search_handle <> INVALID_HANDLE_VALUE Then ' Get the rest of the files. Do ' Get the file name. fname = file_data.cFileName fname = Left$(fname, InStr(fname, Chr$(0)) - 1) ' Skip the files "." and "..". If fname <> "." And fname <> ".." Then files_copied = files_copied + 1 ' See if the file is a directory. If file_data.dwFileAttributes And DDL_DIRECTORY Then ' This is a directory. ' Make the new directory. MkDir to_dir & fname ' Save the directory name so ' we can search it later. dirs.Add fname Else ' This is not a directory. ' Copy the file. FileCopy from_dir & fname, to_dir & fname End If End If ' Get the next file. If FindNextFile(search_handle, file_data) = 0 Then Exit Do Loop ' Close the file search hanlde. FindClose search_handle End If ' Search subdirectories. For i = 1 To dirs.Count fname = dirs(i) files_copied = files_copied + CopyFiles(from_dir & fname & "\", to_dir & fname & "\") Next i CopyFiles = files_copied End Function ' Copy from_file to to_file. If from_file is a ' directory, copy it and its files, creating to_file ' if necessary. Private Function XCopyFile(ByVal from_file As String, ByVal to_file As String) As Long Dim files_copied As Long ' See if from_file is a directory. If GetAttr(from_file) And vbDirectory Then ' This is a directory. If Right$(from_file, 1) <> "\" Then from_file = from_file & "\" If Right$(to_file, 1) <> "\" Then to_file = to_file & "\" ' Create to_file if necessary. On Error Resume Next MkDir to_file If Err.Number = 0 Then files_copied = 1 On Error GoTo 0 ' Copy the files in the directory. files_copied = files_copied + CopyFiles(from_file, to_file) Else ' This is not a directory. ' Copy the file. FileCopy from_file, to_file files_copied = 1 End If XCopyFile = files_copied End Function Private Sub Command1_Click() Dim from_file As String Dim to_file As String Dim files_copied As Long MousePointer = vbHourglass DoEvents from_file = txtFrom.Text If Right$(from_file, 1) <> "\" Then from_file = from_file & "\" to_file = txtTo.Text If Right$(to_file, 1) <> "\" Then to_file = to_file & "\" files_copied = XCopyFile(from_file, to_file) MousePointer = vbDefault MsgBox "Copied " & Format$(files_copied) & " files." End Sub Private Sub Form_Load() txtFrom.Text = App.Path txtTo.Text = "C:\" End Sub Private Sub txtTo_Change() End Sub Этот код копирует введенную вами папку с одного места в другое. Вопрос: Как мне сделать, чтобы эта программа копировала ту папку, которую я введу в сам код? Чтобы не нужно это было делать после запуска программы. Напишите мне, пожалуйста, сам код, а не варианты как это сделать. Я в VB не силён, так что не разберусь. |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Самый простой вариант,
В Form_Load запиши txtFrom.Text = откуда - откуда копировать txtTo.Text = куда - куда копировать Command1_Click - запустить копирование End - для выхода, если надо End Sub -------------------- Никогда не говори никогда |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Модератор: Название темы должно отражать ее суть!
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Poxer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 29.5.2004 Репутация: нет Всего: нет |
Boevik большое спасибо за ответ! Я всё сделал, как ты сказал и программы заработала. Только появилась новая проблема. Поставил в свойствах формы invisible<false (мне нужно, чтобы программа производила копирование невидимо для пользователя запустившего её). После того как я это поставил и откомпилировал код программа после запуска копирует все файлы как положено, но высвечивает ошибку:
Run-time error ‘75’: Path/File access error И кнопочка “OK” снизу. Как убрать эту ошибку? |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Пойми в какой именно момент происходит ошибка и поймешь почему она происходит.
А вообще посмотри что написано про эту ошибку здесь: http://forum.vingrad.ru/index.php?&act=ST&f=33&t=18126 И тут почитай: http://forum.vingrad.ru/index.php?showtopic=20722 -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Poxer, если нужна "невидемая" прога, то не используй форму.
Весь код запиши в модуль. И вместо Form_Load и Command1_Click в процедуре Main запиши:
-------------------- Никогда не говори никогда |
|||
|
||||
| Poxer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 29.5.2004 Репутация: нет Всего: нет |
boevik у меня к тебе много вопросов но почему то в ICQ ты всегда Online а на мои слова не отвечаешь??
|
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Задавай вопросы на форуме, другим тоже интересно
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |