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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Help!!! 
:(
    Опции темы
Poxer
  Дата 4.6.2004, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 не силён, так что не разберусь.
PM MAIL   Вверх
boevik
Дата 4.6.2004, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

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



Самый простой вариант,
В Form_Load запиши

txtFrom.Text = откуда - откуда копировать
txtTo.Text = куда - куда копировать
Command1_Click - запустить копирование
End - для выхода, если надо
End Sub



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
cardinal
Дата 4.6.2004, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


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

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



Модератор: Название темы должно отражать ее суть!


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Poxer
Дата 5.6.2004, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Boevik большое спасибо за ответ! Я всё сделал, как ты сказал и программы заработала. Только появилась новая проблема. Поставил в свойствах формы invisible<false (мне нужно, чтобы программа производила копирование невидимо для пользователя запустившего её). После того как я это поставил и откомпилировал код программа после запуска копирует все файлы как положено, но высвечивает ошибку:
Run-time error ‘75’:
Path/File access error
И кнопочка “OK” снизу.

Как убрать эту ошибку?

PM MAIL   Вверх
cardinal
Дата 5.6.2004, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 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


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
boevik
Дата 5.6.2004, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

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



Poxer, если нужна "невидемая" прога, то не используй форму.
Весь код запиши в модуль.
И вместо Form_Load и Command1_Click в процедуре Main запиши:
Код

public Sub Main()

'код из Command1_Click  
Dim from_file As String
Dim to_file As String
Dim files_copied As Long

from_file = откуда - откуда копировать
If Right$(from_file, 1) <> "\" Then from_file = from_file & "\"
to_file = куда - куда копировать
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



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Poxer
Дата 7.6.2004, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



boevik у меня к тебе много вопросов но почему то в ICQ ты всегда Online а на мои слова не отвечаешь??
PM MAIL   Вверх
cardinal
Дата 7.6.2004, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


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

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



Задавай вопросы на форуме, другим тоже интересно smile.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

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


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

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


 




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


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

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