Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    39

    [VB NET 2010 express] messaggio di errore nella lettura e scrittura di un file

    Salve, ho una porzione di codice che cerca di leggere/scrivere un file xml, ma mi si presenta sempre lo stesso errore in windows Vista : System.UnauthorizedAccessException. tale errore è da interpretare come un errore I/O o di livello di accesso negato; ma io non capisco il perchè. Ecco una parte del codice :
    codice:
    Private Sub salva_dati() 'in un file xml Dim stringa1 As String Dim locazione As String stringa1 = "<?xml version='1.0'?><datiopzioni><font><carattere>" & lblfont.Text & "</carattere></font></datiopzioni>" Dim doc As XElement = XElement.Parse(stringa1) locazione = GetCurrentDirectory() & "/dati" Dim x As String x = Dir(locazione, vbDirectory) If x <> "" Then ' nulla MsgBox("la cartella esiste") Else 'MsgBox("la cartella non esiste") Directory.CreateDirectory(Application.StartupPath & "\dati") End If Try doc.Save(locazione) Catch ex As Exception MsgBox(ex.Message) End Try End Sub

  2. #2
    Ci sono un po' di cose che non quadrano nel tuo codice:

    crei una cartella in
    Application.StartupPath & "\dati"
    ma poi salvi i dati in GetCurrentDirectory() & "/dati"
    (oltretutto senza specificare il nome del file).

    Non so se l'errore che ottieni è dovuto a questa osservazione, comunque sia da Vista in poi l'applicazione non ha i diritti di scrittura nella cartella dove è installato l'eseguibile, a meno che questa cartella non si trovi dentro una cartella utente (per esempio Desktop o Documenti).

    Per salvare dei dati globali a tutti gli utenti, la cartella giusta è ottenibile con questo codice:

    Application.CommonAppDataPath

    Se invece i dati sono riservati all'utente corrente, allora dovresti usare

    Application.UserAppDataPath

    Ultima cosa: il codice così come l'hai postato è assolutamente illeggibile, ho dovuto copiarlo e incollarlo in un editor e lavorarci un po' per capirci qualcosa. La prossima volta ti consiglio di controllare meglio, sarà più facile per te ottenere qualche risposta!
    Chi non cerca trova.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    39

    [visual basic net express] risposta a Tas

    Grazie Tas per la tua osservazione, sono neofita di forum, e cercherò di postare meglio la prossima volta. Ho utilizzato i 2 tipi di codice ma non ha funzionato. eppure la cartella è nel Desktop e quindi nella cartella dell'utente. Come posso fare altrimenti? Ti riposto il codice:
    codice:
    Private Sub salva_dati() 'in un file xml 
    Dim stringa1 As String 
    Dim locazione As String 
    stringa1 = "<?xml version='1.0'?><datiopzioni><font><carattere>" & lblfont.Text & "</carattere></font></datiopzioni>" 
    Dim doc As XElement = XElement.Parse(stringa1) locazione = Application.CommonAppDataPath & "\dati\elementi.xml" 
    Dim x As String x = Dir(locazione, vbDirectory) 
    If x <> "" Then 
    ' nulla 
    MsgBox("la cartella esiste") 
    Else 
    MsgBox("la cartella non esiste") 
    Directory.CreateDirectory(Application.CommonAppDataPath & "\dati\elementi.xml") 
    End If 
    Try 
    doc.Save(locazione) 
    Catch ex As Exception MsgBox(ex.Message)
     End Try 
    End Sub
    Ciao e grazie......

  4. #4
    Nel metodo CreateDirectory hai concatenato erroneamente anche il nome del file, che invece andava aggiunto al metodo Save.
    Chi non cerca trova.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    39

    [visual basic net express] risposta

    Grazie molte per la dritta. dovevo essere assonnato per non aver visto il problema e un altro analogo in scrittura.

    Ciao e grazie mille!!!

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.