Oppure

Loading
06/11/09 17:50
dylan666
Gironzolando per la rete ho trovato questo esempio per la creazione di un file di testo

Private Sub Form_Load()
    Open "C:\esempio.txt" For Output As #1
        Print #1, "Hello, World!"
    Close #1
End Sub


Volevo sapere quale era la soluzione più semplice per notificare la sovrascrizione in caso il file esistesse già o la notifica di eventuali errori in caso di mancata creazione per cause varie
aaa
06/11/09 19:23
GrG
allora Aprire un file in Output significa che se non esiste lo crea e ci scrive dentro Hello world! se esiste già, ci riscrive dentro hello world!

allora prima di quel codice basta che controlli se il file in questione esiste già e mandi un messaggio di avviso...

per controllare che esista un file devi usare dir(), per esempio: dir("c:\file.txt";) che restituirà il nome del file, quindi "file.txt" in caso esista, altrimenti niente... quindi un esempio è:

if dir("C:\file.txt";) = "" then
msgbox "non esiste"
else
msgbox "esiste"
end if
aaa
07/11/09 10:26
dylan666
Invece per la gestione di eventuali errori?
Tipo se la cartella non esiste, è protetta da scrittura o altro?
È possibile catturare l'errore o tirare fuori un avviso generico?
aaa
07/11/09 10:34
GrG
si, allora in generale si fa così:

Private Sub ...
On error goto nome_che_vuoi
[...]
codice
[...]
nome_che_vuoi:
if err.description <> "" then 'se la descrizione dell'errore è nulla, quindi se non si è verificato l'errore non fa nulla, ma se non è vuota...
msgbox "Error N°" & err.number & vbcrlf & "Description: " & err.description
end if
End Sub

questo esempio manda il numero e la descrizione dell'errore (sempre se ce n'è stato uno)
Ultima modifica effettuata da GrG 07/11/09 10:35
aaa
07/11/09 13:15
dylan666
Perfetto, evidentemente sbaglio qualcosa

Private Sub Command1_Click()

    Open "c:\esempio.xml" For Output As #1
            Print #1, "ciao"
            On Error GoTo nome_che_vuoi
   Close #1

   
nome_che_vuoi:
If Err.Description <> "" Then 'se la descrizione dell'errore è nulla, quindi se non si è verificato l'errore non fa nulla, ma se non è vuota...
MsgBox "Error N°" & Err.Number & vbCrLf & "Description: " & Err.Description
End If

End Sub


In pratica creo il file esempio.xml e lo metto in sole lettura appositamente per far scattare l'errore. Quando vado a salvare però, invece del MsgBox, mi esce la finestra di debug del Visual Basci che mi indica un errore di accesso al file.
Devo modificare qualcosa nelle opzioni del programma per evitare ch esca quell'avviso invece del mio?
aaa
07/11/09 13:51
GrG
On Error GoTo nome_che_vuoi
lo devi mettere dopo
privat Sub...

deve essere la prima riga, non dopo la Open..
aaa
07/11/09 14:21
dylan666
Grazie!
Prima di tutto per la competenza ma anche per l'immensa pazienza...
aaa
07/11/09 18:10
GrG
di nulla :k:
aaa