Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Apertura File testo e oggetto derivato
Forum - C# / VB.NET - [VB.NET] Apertura File testo e oggetto derivato

Avatar
Renny (Normal User)
Expert


Messaggi: 231
Iscritto: 30/07/2011

Segnala al moderatore
Postato alle 15:42
Martedì, 11/10/2011
Ciao a tutti.
Una domanda: ho creato un componente personalizzato, una textbox a cui devo aggiungere delle funzioni. E ok, faccio una classe TextBoxEx a cui faccio ereditare textBox.
Ho creato poi un'altra classe, chiamata Elementi, che nel suo costruttore ha delle istruzioni per leggere un file di testo salvato sull'hardisk con delle informazioni da caricare. Se io istanzio la mia classe come oggetto nella form, uso l'istruzione:
Codice sorgente - presumibilmente VB.NET

  1. If Not IO.File.Exists(Application.StartupPath & "\Tags.dat") Then
  2. e poi
  3. Dim Reader As New IO.StreamReader(Application.StartupPath & "\Tags.dat")


Così leggo i dati e ok.
Ma se io volessi che la classe elemento fosse istanziata dalla mia classe derivata TextBoxEx? Dove devo mettere il file .dat?
Mi dice che non lo trova. Ho fatto stampare a video il valore della proprietà "Application.StartupPath" e mi restituisce "c:\Programmi\Microsoft Visual Studio 10.0\Common7\IDE" e non capisco se carica veramente il file..
Tra l'altro quel messaggio me lo mostra solo a volte.. non capisco.
Qual'è la prassi in questi casi? :-|8-|
Ciao!


In attesa della fine del mondo, fissata per l'anno prossimo, sono alla ricerca di un notaio con cui fare testamento...
PM
Avatar
walker93 (Member)
Expert


Messaggi: 460
Iscritto: 31/01/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 15:57
Martedì, 11/10/2011
Sinceramente non credo di risolvere il tuo problema completamente... per l'ultima parte( quella sull' application.startuppath) ti posso dire che per indicare la stessa directory del file eseguibile non è necessario indicarla esplicitamente e che quindi:
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim Reader As New IO.StreamReader(Application.StartupPath & "\Tags.dat")


Equivale a scrivere
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim Reader As New IO.StreamReader("Tags.dat")


Prova in questo modo, oppure se continua a dirti file non trovato...

Ciao.. No, l'errore continua a venir fuori.. O meglio, ho messo una messageBox all'interno dell'IF che verifica se il file esiste.. Resta il fatto che poi i dati me li carica.. Non capisco da che routine, o come, però poi ci sono.. - Renny - 11/10/11 16:30
Dunque, ho scoperto, andando per escusione, che il programma si prende il file dal seguente percorso: - Renny - 11/10/11 16:38
C:\Documents and Settings\utente\Documenti\Visual Studio 2010\Projects\ProvaIntellisense\ProvaIntellisense\bin\Debug.. E' corretto che faccia così? - Renny - 11/10/11 16:39
se il file exe si trova a quel percorso si... dovresti per avere conferma certa, avviare il debug e da task manager aprire il percorso dell'exe con il tasto destro del mouse. - walker93 - 11/10/11 21:38
Me ne sono accorto ora, ma il eprcorso secificato nel commento è diverso da quello specificato nel tuo post...ne deduco che qualcosa è cambiato e sembra anche in meglio... - walker93 - 11/10/11 21:40
in realtà credo che con If Not IO.File.Exists(Application.StartupPath & "\Tags.dat") cerca qui "c:\Programmi\Microsoft Visual Studio 10.0\Common7\IDE", mi mostra l'errore, perchè li non c'è. Il reader cerca in file anche qui (bin\debug), dove c'è l'exe.. Fa + ricerce insomma.. Può essere? :) - Renny - 11/10/11 21:57
Non può essere... viene specificato sempre Application.StartUpPath e non può cambiare... comunque prova a toglierlo sia dal reader sia nell'IF lasciando solo "Tags.dat" - walker93 - 12/10/11 18:33


Il software è come il sesso, è meglio quando è libero.
Linus Torvalds, Conferenza della Free Software Foundation, 1996 (attribuito)

Non provare mai a spiegare il computer a un profano. È più facile spiegare il sesso a una vergine.
Robert Anson Heinle
PM