Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Cercare un File in una Directory
Forum - Visual Basic 6 - Cercare un File in una Directory

Avatar
S.y.n.a.p.s.e. (Normal User)
Newbie


Messaggi: 9
Iscritto: 12/09/2010

Segnala al moderatore
Postato alle 14:41
Lunedì, 13/09/2010
Salve Ragazzi... Un'altra domandina per voi ...

Allora io ho una form1 con :

Form1
Text1 Dove Scrivo il file da Cercare
ListBox Dove devono essere Elencati i file ...
Command1 Per far Partire la Ricerca del file scritto nella Text1

Adesso con questo codice anche se metto il nome del file mi elenca nella ListBox tutti i file che ci sono nella Cartella ....

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Command1_Click()
  2.     ListView1.ListItems.Clear
  3.     iRighe = 0
  4.     file = FreeFile
  5.     Open fileTxt For Output As #file
  6.     CercaFile dirText.text, fileText.text
  7.     Close #file
  8. End Sub
  9.  
  10. Sub CercaFile(ByVal NomeDir As String, ByVal NomeFile As String)
  11.     Dim FileFound As String
  12.     Dim PathNames() As String
  13.     Dim FileNames() As String
  14.     Dim k As Integer
  15.     Dim li As ListItem
  16.     k = -1
  17.     If Right$(NomeDir, 1) <> "\" Then NomeDir = NomeDir & "\"
  18.     FileFound = Dir$(NomeDir & NomeFile)
  19.     Do While FileFound <> ""
  20.         If FileFound <> "." And FileFound <> ".." Then
  21.             k = k + 1
  22.             ReDim Preserve FileNames(k)
  23.             FileNames(k) = FileFound
  24.             Print #file, NomeDir + FileFound
  25.         End If
  26.         FileFound = Dir$
  27.     Loop
  28.     If k <> -1 Then
  29.         For k = 0 To UBound(FileNames)
  30.             iRighe = iRighe + 1
  31.             Set li = ListView1.ListItems.Add(, , Format(iRighe, "00000"))   ' righe
  32.             li.SubItems(1) = NomeDir
  33.             li.SubItems(2) = FileNames(k)
  34.         Next
  35.     End If
  36.     k = -1
  37.     FileFound = Dir(NomeDir, vbDirectory)
  38.     Do While FileFound <> ""
  39.         If FileFound <> "." And FileFound <> ".." Then
  40.             If (GetAttr(NomeDir & FileFound) And vbDirectory) = vbDirectory Then
  41.                 k = k + 1
  42.                 ReDim Preserve PathNames(k)
  43.                 PathNames(k) = FileFound
  44.             End If
  45.         End If
  46.         FileFound = Dir
  47.     Loop
  48.     If k = -1 Then Exit Sub
  49.     For k = 0 To UBound(PathNames)
  50.         CercaFile NomeDir & PathNames(k), NomeFile
  51.     Next
  52. End Sub
  53.  
  54. Private Sub Form_Load()
  55.     ListView1.ColumnHeaders.Add , , "Riga", ListView1.Width / 10 * 2, lvwColumnLeft
  56.     ListView1.ColumnHeaders.Add , , "Cartella", ListView1.Width / 10 * 4, lvwColumnLeft
  57.     ListView1.ColumnHeaders.Add , , "File", ListView1.Width / 10 * 4, lvwColumnLeft
  58. End Sub



Invece io vorrei che ricercasse tutti i file Nominati come scritto nella text1 oppure Vicinanze ....

Del Tipo

CARTELLA:
1PiPPO
2PIPPO
3PIPPO
PIPPO1
PIPPO2
PIPPO3

Form:
Nome file : [PIPPO]
LISTBOX :
PIPPO1
PIPPO2
PIPPO3

In Pratica mi dovra elenzare nella ListBox solamente il file rikiesto e in più quelli che si avvicinano al nome .....

Spero Che sono stato abbastanza chiaro ....:asd:

PM
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Up
1
Down
V
Segnala al moderatore
Postato alle 16:03
Lunedì, 13/09/2010
Se intendi che i file che cerchi si chiamano:

PIPPO1
PIPPO2
PIPPO3

senza estensione, casella fileText.text  sarà "Pippo*"
e credo che l'unica via sia controllare che nel nome del file FileFound  non sia presente la stringa ".txt".

PM
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 15:06
Lunedì, 13/09/2010
Facciamo il caso che sia fileText.text ="nome.txt"

Se aggiungi un asterisco all'inizio "*nome.txt" trovi tutti i nomi che hanno qualsiasi sequenza di caratteri prima di nome. Per es. kknome, mionome, Copiadinome
Se aggiungi un asterisco alla fine "nome*.txt" trovi tutti i nomi che hanno qualsiasi carattere che segue nome. Per es. nometre, nomeXX, nomecognome
Tutti i file che sono trovati con i metodi precedenti sono sempre con estensione .txt

Se vuoi considerare tutte le estensioni possibili usi .*

Così  con la stringa  "*nome*.*"  trovi qualsiasi tipo di file dove ci sia il pezzetto nome con qualsiasi estensione

Ultima modifica effettuata da Alfonso il 13/09/2010 alle 15:09
PM
Avatar
S.y.n.a.p.s.e. (Normal User)
Newbie


Messaggi: 9
Iscritto: 12/09/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 15:40
Lunedì, 13/09/2010
Alfonso il problema e che nella Directory ci sono tutti file di Estensione .txt... e quindi automaticamente facendo così caricherà sempre tutti i file nella cartella con estensione .txt....

Come Potrei Fare ?

PM