Avatar billede robbin Nybegynder
09. august 2003 - 15:22 Der er 7 kommentarer

Find en fil og send

Hej jeg har lært lidt VB og mangler lidt hjælp! :)

hvordan laver jeg sådan så et program søger efter en speciel fil på ens harddrive fx "text.cfg" og bagefter sender til min e-mail konto.. ? det er nemlig sådan så jeg er ansat et sted hvor jeg bliver nød til at bruge sådan et program ellers vil det tage mig dobbelt så lang tid?

på forhån tak!
Avatar billede sjh Nybegynder
09. august 2003 - 15:35 #1
Tør man spørge hvad det er foret job, siden du skal sende filer til dig selv?
Avatar billede robbin Nybegynder
09. august 2003 - 16:00 #2
ohh ja jeg er bestyrer i en brugs og skal nummere alle varer som kommer ind omorgenen så det ville være lidt nemmere med lidt hjælp fra computeren.. :-)
Avatar billede robbin Nybegynder
09. august 2003 - 16:01 #3
bagefter skal de sendes videre til fdb som skal tjekke alt en ekstra gang..
Avatar billede mbl Novice
09. august 2003 - 19:34 #4
Dette kan hjælpe lidt på vej, men er dog kunne en lille del.

http://www.eksperten.dk/spm/280026
Avatar billede robbin Nybegynder
09. august 2003 - 21:07 #5
jeg har lavet noget af det selv indtil videre.. jeg mangler bare det sidste hjælp det med at sende en mail!


Private Const vbDot = 46
Private Const MAX_PATH = 260
Private Const INVALID_HANDLE_VALUE = -1
Private Const vbBackslash = "\"
Private Const ALL_FILES = "*.*"

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 Type FILE_PARAMS
  bRecurse As Boolean
  nCount As Long
  nSearched As Long
  sFileNameExt As String
  sFileRoot As String
End Type

Private Declare Function FindClose Lib "kernel32" _
  (ByVal hFindFile As Long) As Long
 
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 GetTickCount Lib "kernel32" () As Long

Private Declare Function lstrlen Lib "kernel32" _
    Alias "lstrlenW" (ByVal lpString As Long) As Long

Private Declare Function PathMatchSpec Lib "shlwapi" _
  Alias "PathMatchSpecW" _
  (ByVal pszFileParam As Long, _
  ByVal pszSpec As Long) As Long

Private fp As FILE_PARAMS  'holds search parameters


Private Sub Form_Load()

  Text1.Text = "C:\"
  Text2.Text = "perform.ini"
  Command1.Caption = "Search"

End Sub


Private Sub Command1_Click()

  Dim tstart As Single  'timer var for this routine only
  Dim tend As Single    'timer var for this routine only
 
  List1.Clear
  List1.Visible = False
 
  With fp
      .sFileRoot = QualifyPath(Text1.Text) 'start path
      .sFileNameExt = Text2.Text          'file type(s) of interest
      .bRecurse = Check1.Value = 1        'True = recursive search
      .nCount = 0                          'results
      .nSearched = 0                      'results
  End With
 
  tstart = GetTickCount()
  Call SearchForFiles(fp.sFileRoot)
  tend = GetTickCount()
 
  List1.Visible = True
                                   
End Sub


Private Sub SearchForFiles(sRoot As String)

  Dim WFD As WIN32_FIND_DATA
  Dim hFile As Long
 
  hFile = FindFirstFile(sRoot & ALL_FILES, WFD)
 
  If hFile <> INVALID_HANDLE_VALUE Then
 
      Do
                 
        'if a folder, and recurse specified, call
        'method again
        If (WFD.dwFileAttributes And vbDirectory) Then
            If Asc(WFD.cFileName) <> vbDot Then

            If fp.bRecurse Then
                  SearchForFiles sRoot & TrimNull(WFD.cFileName) & vbBackslash
              End If
            End If
           
        Else
       
          'must be a file..
            If MatchSpec(WFD.cFileName, fp.sFileNameExt) Then
              fp.nCount = fp.nCount + 1
              List1.AddItem sRoot & TrimNull(WFD.cFileName)
            End If  'If MatchSpec
     
        End If 'If WFD.dwFileAttributes
     
        fp.nSearched = fp.nSearched + 1
     
      Loop While FindNextFile(hFile, WFD)
 
  End If 'If hFile
 
  Call FindClose(hFile)

End Sub


Private Function QualifyPath(sPath As String) As String

  If Right$(sPath, 1) <> vbBackslash Then
        QualifyPath = sPath & vbBackslash
  Else: QualifyPath = sPath
  End If
     
End Function


Private Function TrimNull(startstr As String) As String

  TrimNull = Left$(startstr, lstrlen(StrPtr(startstr)))
 
End Function


Private Function MatchSpec(sFile As String, sSpec As String) As Boolean

  MatchSpec = PathMatchSpec(StrPtr(sFile), StrPtr(sSpec))
 
End Function
'--end block--'


Private Sub Text5_Change()

End Sub
Avatar billede martin_moth Mester
12. august 2003 - 16:31 #6
Hvis du ikke har fået svar i overmorgen lægger jeg et (når jeg får fat i min egen PC med VB på) - så vær tålmodig
Avatar billede robbin Nybegynder
12. august 2003 - 19:03 #7
takker!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester