Collegarsi ad un altro file o no?????

venerdì 03 ottobre 2008 - 11.54

frenk17 Profilo | Junior Member

cavoli ragazzi sono di nuovo io
ho l' ennesimo problema
devo impostare dei timeout nel mio programma... tuttavia do la possibilità all utente di modificarli tramite un menù.... e di impostare a suo piacimento i timer di default .. solo che proprio non so come fare... come faccio a salvare i dati che l utente ha inserit anche quando chiudo il programma?.... l unica soluzione che mi è venuta in mente è salvarli su un database access o in un documentoi excel.. ma con riesco a farlo...
secondo voi è la soluzione più semplice o c'è un altro metodo? e se è il metodo migliore come faccio? vi prego sono nelle vostre mani....
e urgentissimo.... grazie grazie grazie grazie

aiedail92 Profilo | Expert

Ciao

Per salvare le impostazioni puoi usare un semplicissimo file di testo. Ad esempio potresti scrivere del codice tipo questo:

Class TuaClasse Private tmOut1, tmOut2, tmOut3 As Integer Sub SaveOptions(ByVal outputPath As String) 'Crea il file Dim fileStream As StreamWriter = File.CreateText(outputPath) 'Scrive il nome di ogni variabile e il rispettivo valore fileStream.Write("Timeout1 = ") fileStream.WriteLine(tmOut1) fileStream.Write("Timeout2 = ") fileStream.WriteLine(tmOut2) fileStream.Write("Timeout3 = ") fileStream.WriteLine(tmOut3) 'Chiude il file fileStream.Flush() fileStream.Close() End Sub Sub LoadOptions(ByVal optionFile As String) 'Apre il file Dim fileStream As StreamReader = File.OpenText(optionFile) Try 'Legge tutto il file scorrendo le opzioni Do Until fileStream.EndOfStream 'Ottiene la parte a destra e a sinistra dell'uguale Dim line As String() = fileStream.ReadLine().Split( _ New String() {" = "}, StringSplitOptions.None) 'Se la stringa non è ben formattata lancia l'errore If line.Length <> 2 Then Throw New Exception() End If 'Legge il nome della variabile e imposta il valore di conseguenza Select Case line(0) Case "Timeout1" Me.tmOut1 = Integer.Parse(line(1)) Case "Timeout2" Me.tmOut2 = Integer.Parse(line(1)) Case "Timeout3" Me.tmOut3 = Integer.Parse(line(1)) Case Else Throw New Exception() End Select Loop Catch Throw New Exception("File di opzioni non valido") End Try End Sub End Class

In alternativa potresti usare i registri di Windows, ciò eliminerebbe la necessità di un file di opzioni, ma così non puoi trasferirle facilmente da un computer ad un altro.

Luca

frenk17 Profilo | Junior Member

grazie mile!!!!!!
perchi io stavo provando a collegarlo con un file excel o un database acces ma non mi caricava correttamentei riferimenti...
comunuque ora seguirò il tuo suggerimento...
solo una cosa.. mi da 2 errori
Errore 1 Tipo 'StreamWriter' non definito.
Errore 2 Tipo 'StreamReader' non definito.

aiedail92 Profilo | Expert

Ci sono quegli errori perchè non hai importato il namespace System.IO.

In questi casi (credo a partire da VS 2005) ti basta portare il cursore sull'errore e sulla lineetta che si apre, quindi clickare sul pulsante e scegliere il metodo di correzione. In alternativa puoi premere Alt + Maiusc + F10.

Luca

frenk17 Profilo | Junior Member

si avevo già risolto comunque grazie mille... il tuo metodo è perfetto... grazie ancora.. spero di non dover più aver bisogno di te
ti faccio comunque ancora sapere qualcosa
grazie ancora





scusa ancora.... coem faccio dal file di testo ad estrarre la stringa della riga e selezionare solo la parte numerica della stringa....

per esempio se ho:

pippo=10
a selezionare solo 10 ed assegnarlo come valore ad una variabile? grazie

Harley.Net82 Profilo | Junior Member

Ciao, mi intrometto.

per capire la parte numerica di una stringa puoi fare così:

Scorri la stringa

For each x as string in TuaStringa if IsNumeric(x) then 'se entri qui vuol dire che x rappresenta un carattere numerico 'magari puoi memorizzarlo in una stringa a parte enfd if Next

In ogni caso tu stai salvando delle configurazioni e credo che tu stia sbagliando metodo.
In questi casi conviene salvare le tue impostazioni in un DataTable
e poi sfruttare i metodi che creano (o importano) un file XML.
Questo per migliorare l' accesso al dato.
Ciao

aiedail92 Profilo | Expert

Ciao

La divisione della stringa la puoi fare col metodo Split, come ho fatto nell'esempio riportato:

'La stringa da dividere Dim stringToSplit As String = "pippo=10" 'Le due parti in cui la stringa resta divisa dall'uguale Dim parts As String() = stringToSplit.Split("=") 'Ottiene l'intero dalla seconda parte Dim value As Integer = Integer.Parse(parts(1))

Ho consigliato il metodo del file di testo perchè quello di più semplice realizzazione, ovviamente puoi usare anche l'xml oppure i file di impostazioni con la gestione che offre Visual Studio (che sono sempre xml), o come ho già detto anche il Registro di Windows...

Luca

rossimarko Profilo | Guru

Ciao,

come ti è stato già suggerito per salvare le impostazioni di un programma ti consiglio vivamente di usare un file xml. Prendilo in seria considerazione perchè è un formato standard e soprattutto si può sfruttare la serializzazione per caricare / salvare i dati. In pratica puoi creare una classe .net su cui vai a leggere / scrivere i tuoi dati, poi potrai salvare questa classe in file xml con poche righe di codice che in automatico ti creano il file (anche la parte di lettura è molto semplice).

In questo modo non ti devi preoccupare del formato con cui leggere / scrivere i dati e soprattutto utilizzi un file in un formato leggibile da tutti.

Ti giro un link introduttivo: http://msdn.microsoft.com/it-it/library/90c86ass.aspx

Se ti serve possiamo fare anche un'esempio pratico con un piccola classe..
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

frenk17 Profilo | Junior Member

scusate ragazzi se non ho più risposto ma non sono stato molto bene e quindi non sono vinuto in ufficio.... comunque ho risolto grazie ai vistri consigli..... grazie a tutti
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5