#1 27. Oktober 2010 VB eigene Config erstellen (einfach) Hi, da ich heute selber lange nach so einer lösung gesucht habe, dacht ich mir ich mach mal ein kleines tut, evlt. braucht es ja jemand. Visual Studio 2010 bietet ja die möglichkeit für seine Application Einstellungen zu setzen und zu speichern. Dabei gibt es zwei möglichkeiten, entweder diese Einstellungen beziehen sich auf den Benutzer oder auf die Anwendung (also das Programm). Das ist soweit schonmal recht schön und gut, das Problem jedoch ist das die Config für den Benutzer nicht an dem Ort der Anwenung gespeichert ist. Und die Config für die Anwendung leider nur Read Only ist. D.h. die einzelnen Einstellungen können wärend der Laufzeit nicht verändert werden. Da ich aber eine Config haben wollte welche direkt in dem Ordner der Applikation liegt (damit Sie auch manuell geändert werden kann) und ich aber auch die möglichkeit brauchte wärend der Laufzeit des Programmes die Config zu bearbeiten. d.h einstellunge zu speichern, habe ich mir eine eigene kleine Config geschrieben. Das ganze ist sehr einfach aufgebaut, ohne XML Serialisierung oder benutzung der Ini API! Das ganze besteht eigendlich nur aus einer Text Datei welche ich auslese und/oder neu schreibe. Der größte trick dabei ist wohl eine bestimmte Zeile auszulesen. Jetzt aber zum Code: (bei mir heißt die Config Datei config.config und benutzt habe ich .net 3.5) zuerst brauchen wir ein paar Variablen in welche wir die Daten der Config schreiben Code: Dim Setting1 as String Dim Setting2 as String Dim Setting3 as String Dim Setting4 as String Dim Setting5 as String Dim Setting6 as String Dim Setting7 as String Beim Programm start überprüfen wir erstmal ob eine Config Datei bereits existiert: Code: [COLOR=SeaGreen]' Programm start (hier wird die GroupBox1 geladen)[/COLOR] Private Sub GroupBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox1.Enter [COLOR=SeaGreen] ' Falls keine Config existiert eine erstellen ((Application.StartupPath = der Pfad aus 'welchem das Programm gestartet wurde[/COLOR] If My.Computer.FileSystem.FileExists(Application.StartupPath & "\Config.Config") = False Then [COLOR=SeaGreen]' Aufrufen des Subs CreateConfig (Bitte weiter unten weiterlesen)[/COLOR] CreateConfig() End If [COLOR=SeaGreen]' Falls eine Config existiert dann auslesen[/COLOR] Dim reader As New StreamReader(Application.StartupPath & "\Config.Config") Dim Zeilen As New List(Of String) [COLOR=SeaGreen]' jede zeile einer List hinzufügen[/COLOR] While Not reader.EndOfStream = True Zeilen.Add(reader.ReadLine) End While reader.Close() [COLOR=SeaGreen] ' Die bestimmten Zeilen aus dem Array in Varialben Speichern (Das Array beginnt mit 0, dh. 'Zeile 1 wäre Array 0 usw.[/COLOR] Setting1= Zeilen.ElementAt(1) Setting2= Zeilen.ElementAt(4) Setting3 = Zeilen.ElementAt(7) Setting4 = Zeilen.ElementAt(10) Setting5 = Zeilen.ElementAt(13) Setting6 = Zeilen.ElementAt(16) Setting7 = Zeilen.ElementAt(19) [COLOR=SeaGreen] 'als beispiel: 'Text Felder mit Daten aus Config / Variablen füllen[/COLOR] TextBox_setting1.Text = Setting1 TextBox_setting2.Text = Setting2 TextBox_setting3.Text = Setting3 TextBox_setting4.Text = Setting4 TextBox_setting5.Text = Setting5 TextBox_setting6.Text = Setting6 TextBox_setting7.Text = Setting7 End Sub Sub Config erstellen: Code: Public Sub CreateConfig() [COLOR=SeaGreen] ' Hier wird die Config erstellt mit den Daten aus den Variablen (das False heißt das die Daten überschrieben werden und nicht angehängt werden)[/COLOR] Dim writer As New StreamWriter(Application.StartupPath & "\config.config", False) writer.WriteLine("Einstellung 1") writer.WriteLine(Setting1) writer.WriteLine("------------------") writer.WriteLine("Einstellung 2") writer.WriteLine(Setting2) writer.WriteLine("------------------") writer.WriteLine("Einstellung 3") writer.WriteLine(Setting3) writer.WriteLine("------------------") writer.WriteLine("Einstellung 4") writer.WriteLine(Setting4) writer.WriteLine("------------------") writer.WriteLine("Einstellung 5") writer.WriteLine(Setting5) writer.WriteLine("------------------") writer.WriteLine("Einstellung 6") writer.WriteLine(Setting6) writer.WriteLine("------------------") writer.WriteLine("Einstellung 7") writer.WriteLine(Setting7) writer.WriteLine("------------------") writer.Close() End Sub letzendlich kann noch ein Button eingebaut werden um die Einstellunge aus z.b. den Textfeldern zu Speichern, oder man macht dies beim beenden des Programms Code: [COLOR=SeaGreen]'' Einstellungen Speichern[/COLOR] Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click [COLOR=SeaGreen]' Daten aus den Textfeldern erneut in den Variablen speichern[/COLOR] Setting1 = TextBox_setting1.Text Setting2 = TextBox_Setting2.Text Setting3 = TextBox_Setting3.Text Setting4= TextBox_Setting4.Text Setting5 = TextBox_Setting5.Text Setting6 = TextBox_Setting5.Text Setting7 = TextBox_Setting5.Text [COLOR=SeaGreen] ' Config Datei neu erstellen[/COLOR] CreateConfig() MsgBox("Configuration saved!") End Sub Das wars eigendlich schon im großen und ganzen, eigentlich recht einfach, und ein brauchbarer weg für eine Config Datei welche im Programmverzeichniss liegt und beschreibbar ist. Die Variablen könnte man natürlich auch weg lassen und direkt die Textboxen oder was auch immer nehmen. Die Config kann natürlich auf diesem weg beliebig gestaltet und erweitert werden. Es ist sicher nicht die eleganteste Lösung, aber für viele Scenarien sollte es durch kleine anpassungen ausreichend sein. Hasta Pronto Silentuser + Multi-Zitat Zitieren