Vai al contenuto
PLC Forum


Create Folder in Vb6 - Errore in certi casi


Brothers

Messaggi consigliati

Salve a tutti

era tanto che non rientravo nel forum, e l'ho trovato tutto cambiato, anche più bello.

Però non ho capito bene dove inserire domande su Vb6, nell'incertezza posto la mia quì.

Ho una funzione

Create_Folder

che mi provoca dei problemi quando cerco di creare un percorso con più di 2 cartelle contemporaneamente, e a volte anche con una soltanto se la Path contiene più cartelle già esistenti.

Codice:

--------------------------------------------------------

Private Sub Create_Folder()

On Error Resume Next

Dim fso As New FileSystemObject, fldr As Folder

Dim Testo As String

Dim Posizione As Integer

Dim Inizio As Integer

Testo = txtPath

Inizio = 4

Posizione = InStr(Inizio, Testo, "\")

If Posizione > 2 Then Testo = Mid(Testo, 1, Posizione - 1)

Set fldr = fso.CreateFolder(Testo)

MsgBox "Cartella creata: ", vbExclamation & fldr.Name

Set fldr = fso.CreateFolder(txtPath)

MsgBox "Cartella creata: ", vbExclamation & fldr.Name

End Sub

--------------------------------------------------------

L'ho scritta così per provare a risolvere il problema sfruttando l'errore

e cercando di far creare la cartella, prima con l'ultima parte della Path

cioè con il nome della cartella e poi con l'intera Path.

Ma mi sa che ho creato un guazzabuglio e mi sono perso.

Qualcuno mi aiuta?

Ciao

Link al commento
Condividi su altri siti


Ciao

No non posso vedere l'errore perchè quando lancio l'applicazione, la stessa per funzionare abbisogna dei file e cartelle in questione, e non trovandoli s'impianta.

Ma per esempio se decido di creare il percorso:

C:\Cartella1\Cartella2\Fileesempio.txt

se Cartella1 e Cartella2

non esistono le crea e ci copia il file, ma se aggiungo al percorso:

C:\Cartella1\Cartella2\Cartella3\Fileesempio.txt

si impianta e si impianta pure se

C:\Cartella1

gia esiste.

azz

Ciao

Link al commento
Condividi su altri siti

Non avevo capito! Penso sia normale che si pianti, in effetti nella descrizione dei metodi del FileSystemObject è specificato che CreateFolder dia errore se la cartella è già esistente.

Per risolvere il problema, secondo me, devi fare un controllo sulle cartelle di nodo superiore per vedere se esistono, quindi posizionarti con il path nel punto in cui vuoi creare la cartella.

Ciao

Link al commento
Condividi su altri siti

Incredibile Holmes.......!!! clap.gif

Elementare Watson, bastava leggere più attentamente le MSDN, o seguire prima le indicazioni del nostro amico iberico(sennò col cavolo) wink.gif ;le posto cosi evito scervellamenti ad altri:

---------------------------

Funzioni

------------------------------------------

Crea Cartelle

------------------------------------------

Private Function CreateFolder(ByVal pFolder As String) As Boolean

Dim sFolder As String, aFolder() As String

Dim iFolder As Integer, sCreatedFolder As String

sFolder = Trim(pFolder)

If sFolder = "" Then Exit Function

If Right(sFolder, 1) = "\" Then

sFolder = Left(sFolder, Len(sFolder) - 1)

End If

aFolder = Split(sFolder, "\")

For iFolder = LBound(aFolder) To UBound(aFolder)

If sCreatedFolder = "" Then

sCreatedFolder = aFolder(iFolder)

Else

sCreatedFolder = sCreatedFolder & "\" & aFolder(iFolder)

End If

If Not FolderExists(sCreatedFolder) Then

MkDir sCreatedFolder

End If

Next iFolder

CreateFolder = True

Exit Function

ErrCreateFolder:

CreateFolder = False

End Function

------------------------------------------

Controllo se esiste

------------------------------------------

Private Function FolderExists(ByRef sFolder As String) As Boolean

Dim sResult As String

On Error Resume Next

sResult = Dir(sFolder, vbDirectory)

On Error GoTo 0

FolderExists = sResult <> ""

End Function

------------------------------------------

Richiamo con messaggio di errore

------------------------------------------

Private Sub cmdCreaCartelle_Click()

If CreateFolder(TxtPercorso.Text) Then

MsgBox "Cartella\e creata\e con successo", vbExclamation, "Folder Created"

Else

MsgBox "Errore Comando Fallito", vbCritical, "Failed"

End If

End Sub

------------------------------------------

La (parola)chiave del mistero era MkDir, e il controllo sull'esistenza, grazie Lucios

Ciao

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...