Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 35
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    31

    [VB.NET] Scrittura file su Win8

    Un saluto a tutto il forum, primo post.

    Ho realizzato un applicativo in VB.NET (VS2010) che, tra le altre cose, genera dei file di testo in formato ASCII. Allego la parte del codice per la quale chiedo aiuto.

    codice:
    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            '
            Dim sw As System.IO.StreamWriter
    
            Try
    
                ' Apre il file
                sw = New System.IO.StreamWriter("C:\Prova.txt")
    
    
                ' Scrive il contenuto
                sw.Write("Testo")
    
    
                ' Chiude il file
                sw.Close()
    
    
            Catch
    
                ' Intercetta l'errore.
                MsgBox("Si è verificato un errore durante la scrittura del file:")
    
    
            Finally
                ' Libera le risorse allocate con New.
                sw = Nothing
    
    
            End Try
    
    
        End Sub

    Nulla di trascendentale e il codice funziona perfettamente su Win XP.

    Anche su Win 8 funziona perfettamente se la directory non è "C:\".
    Su questa directory invece, a causa delle restrizioni sui permessi di accesso, il programma sembra funzionare, ma non genera il file.

    La cosa che mi fa imbestialire è che non genera nessuna eccezione!

    Come faccio a intercettare l'errore?

    Grazie a chi vorrà essermi utile.

    Giorgio
    Ultima modifica di bgiorgio; 09-11-2015 a 17:38 Motivo: Errore nella trascrizione del codice

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Sposto nel forum dedicato al linguaggio VB: Visual Basic e .NET Framework.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    31
    Ti ringrazio. Mi sono accorto in ritardo e non sono più riuscito a modificare il titolo e la posizione. Chiedo scusa.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Devi scrivere solo

    sw = New System.IO.StreamWriter("C:\Prova.txt")

    visto che la Dim l'hai già fatta ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Probabilmente perché da Vista in poi Windows usa un'area virtualizzata (VirtualStore) per cui il file lo scrive (ed ecco perché non genera l'errore) ma lo fa dove non ti aspetti che lo faccia, ovvero nella VirtualStore:

    C:\Users\<utente>\AppData\Local\VirtualStore


    Potresti anche disabilitare ilVirtualStore:

    How to disable the Windows Store in Windows 8
    http://www.bleepingcomputer.com/tutorials/disable-the-windows-store-in-windows-8/



  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    31
    Grazie oregon, ma non è quello il problema.
    L'errore nel codice era solo per un errato taglia-incolla da un listato più complesso che ho semplificato per rendere più leggibile.
    Adesso l'ho corretto.

    Il codice funziona, non ci sono errori di compilazione o altre eccezioni. Il problema è solo nella gestione delle directory chiamiamole "speciali" (viene voglia di rimpiangere il DOS...).

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Capiamoci ... NON è possibile scrivere in quella cartella e quindi devi avere un messaggio d'errore.

    Ho solo corretto il codice che avevi presentato e che aveva quella Dim di troppo. Fatto questo, viene visualizzato correttamente il messaggio di errore derivante dall'eccezione.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    31
    Grande gibra! Centrato in pieno.

    Ora lo sfogo è d'obbligo: se la macchina fa qualcosa di diverso da quanto richiesto, dovrebbe avvisare! Non cambiare directory "a pene" senza darne avviso... Anche perché lo fa su alcuni SO e non su altri.

    Come risolvo? Non posso imporre modifiche alle macchine di chi utilizzerà il programma: il goal è avere qualcosa fool-proof. Ma se questo mi seleziona una directory non adatta, devo avvisarlo, non scrivere in un altro posto...

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    31
    Scusa oregon, non ci siamo capiti: l'errore non era nel codice, ma solo nella sua trascrizione nel post. Nel codice che gira non c'è il doppio Dim (anche perché se fosse, non compilerebbe). Con il codice compilato regolarmente non avvisa per nulla, ma scrive... altrove.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non devi far selezionare cartelle all'utente ma utilizzare quelle previste per i dati.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.