Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di erosmax
    Registrato dal
    Jan 2003
    Messaggi
    119

    [VB6] Controllo file Esistente

    Ho un problema.
    Dovrei controllare se un file sia già esistente.


    Do While myname <> "" ' Avvia il ciclo.
    ......
    ......
    ......
    If COPIA = 1 Then
    Dim confronto As String
    Dim ctrlexist As String
    confronto = MyPath & "\" & nomefile
    If confronto = "" Then GoTo nessuno
    If Esiste.Value = 1 Then ctrlexist = Dir(confronto) 'Controlla Esistenza file
    If ctrlexist <> "" Then FileCopy MyPath & "\" & myname, "C:\FileXTool\" & nomefile else GoTo nessuno
    End If
    Form1.List3.AddItem myname
    List4.AddItem MyPath
    fileFnd = fileFnd + 1
    nessuno:
    myname = Dir ' Legge la voce successiva.
    Form1.Refresh
    Loop

    Nel passare ctrlexist = Dir(confronto) la variabile è vuota (anche se in Debug scrivo Prit Dir(confronto), da nullo mentre confronto è pieno e il percorso ed il file è esatto...insomma esiste nel disco).
    Ho provato anche ad utilizzare l'istruzione GetAttr e, la prima volta il On Error Goto intercetta l'errore, mentre al secondo passaggio non viene intercerttato dal On Erro Goto ma da un On Error Resume Nex posizionato in un'altra Function

    ... insomma c'è un modo per verificare se il file esiste ? O dove sbaglio?
    Grazie
    Non ho nulla da dire...e lo stò dicendo!
    - Scarica i miei Software FREE

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Il codice sembra corretto, a prima vista, ma senza conoscere i valori non ti si può dire molto.
    Forse se prepari un progettino di esempio in un file ZIP, e lo rendi disponibile, ci si può capire qualcosa di più anche perchè il codice è incompleto di conseguenza alcune parti sono incomprensibili, esempio:

    1 - If Esiste.Value = 1
    2 - myname = Dir ' Legge la voce successiva
    3 - Loop
    4 - ecc...

    Magari è una 'sciocchezza'...

    Il punto 2 comunque mi insospettisce perchè
    - prima esegui prima la Dir usando nomefile
    - poi leggi il successivo assegnandolo a myname
    C'è una correlazione tra questi due nomi?

    Ciao

  3. #3
    Utente di HTML.it L'avatar di erosmax
    Registrato dal
    Jan 2003
    Messaggi
    119
    Grazie per la risposta ma, come al solito, le cose più semplici sono quelle che arrivano per ultimo!

    Nel mio listato, vi era si, un errore, ma era nella dichiarazione iniziale della variabile confronto che, invece di passare MyPath, dovevo passare "C:\FileXTool\"... ma non era questa la causa.

    Ho risolto inserendo la "vecchia" Open:


    Do While myname <> "" ' Avvia il ciclo.
    ......
    ......
    ......
    If COPIA = 1 Then
    Dim confronto As String
    Dim ctrlexist As String
    confronto = "C:\FileXTool\" & nomefile
    If confronto = "" Then GoTo nessuno
    ctrlexist = True
    If Esiste.Value = 1 Then ctrlexist = FileExist(confronto)
    If ctrlexist = True Then FileCopy MyPath & "\" & myname, "C:\FileXTool\" & nomefile else GoTo nessuno
    End If
    Form1.List3.AddItem myname
    List4.AddItem MyPath
    fileFnd = fileFnd + 1
    nessuno:
    myname = Dir ' Legge la voce successiva.
    Form1.Refresh
    Loop


    e la function



    Public Function FileExist(confronto) As Boolean
    On Error Resume Next
    Open confronto For Input As FreeFile
    If Err.Number <> 0 Then FileExist = True Else FileExist = False
    Close
    End Function



    Ora funziona!

    Grazie e Cioap!
    Non ho nulla da dire...e lo stò dicendo!
    - Scarica i miei Software FREE

  4. #4
    Utente di HTML.it L'avatar di naki
    Registrato dal
    Feb 2009
    Messaggi
    52
    potresti usare la funzione dir(percorso)
    se la stringa restituita è "" allora non esiste altrimenti il file esiste

    Dim DummyFile As String
    On Error Resume Next
    FileEsistente = False
    DummyFile = Dir(NomeFile, vbHidden)
    If (Len(DummyFile) > 0) And (Err = 0) Then
    FileEsistente = True
    End If
    End Function

    se passi vbhidden alla funzione ti cerca anche i file nascosti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.