c# config datei erstellen...

xlon

Mitglied
Hallo :)

Ich würde gerne für mein Programm eine kleine Config sprich eine kleine ini Datei basteln.

Was die ini Datei mit dem Programm zusammen machen soll:

-das Programm soll beim Programmstart die ini Datei lesen.
-das Programm soll beim drücken eines Buttons die ini Datei neu schreiben...sprich alte werte werden übernommen, neue werte werden überschrieben...

In die ini Datei soll:
-größe des Fensters (windows forms)
-der Status der in einer combobox als "Start" wert angeben ist

Ich habe sowas noch nie gemacht und frage mich wie dies Funktioniert.
Ich würde mich sehr über einen kleinen code bzw. einen kleinen Denk anstoß oder sonstiges freuen.

Viele Grüße
 
Sehr komfortable kannst du das, indem du dir eine DataTable erstellst. Du könntst als Spalten "Setting" und "Value" nehmen, dann eine Zeile "WindowSize" | "300x500", die zweite "comboBoxState" | "CboValue" und dann das ganze mit dataTable.WriteXML schreiben und beim Programmstart per dataTable.readXML wieder laden und auslesen.
 
Danke für deine schnelle Antwort,

könntest Du mir das vielleicht ein bisschen genauer erklären? Was genau muss ich machen?

Gibt es keine andere Lösung?
 
Du musst:

- Eine DataTable-Objekt erstellen
- Der DataTable, nennen wir sie dt, Columns hinzufügen(dt.Columns.Add(newColumn))
- Beim ersten verwenden die Setting-rows erstellen (dt.NewRow()), die Werte setzen und dir Rows hinzufügen (dt.Rows.Add(newRow))
- das ganze nach XML serialisieren (dt.WriteXML(pfad))
- Beim beenden die Daten aktualisieren und wieder serialiserien
- Beim starten die XML auslesen und die Werte z.B. über dt.Select raussuchen

Mehr dazu: http://msdn.microsoft.com/en-us/library/system.data.datatable.select(VS.71).aspx

Viel Spaß beim ausprobieren!
 
Nochmal vielen Dank für deine Antwort,

aber bitte jetzt nicht lachen, da ich noch ganz frisch beim programmieren bin, und ich diese aufgabe für mein Praktikum bekommen habe, welches ich gerade mache.

Code:
            DataTable dt = new DataTable();

            dt.Columns.Add("spalte");

            dt.NewRow();

            dt.Rows.Add("newRow");

            dt.WriteXml(@"c:\settings.xml");

ja leider funktioniert das nicht. Ich weiß das ich das bestimmt falsch verstanden habe, könntest du mir vllt. nochmal helfen?
 
Pass auf:

Code:
private DataTable getSettingsTable(string path)
{
DataTable settingsTable = new DataTable("settings");

if(File.Exists(path)
  settingsTable.LoadXML(path);
else
{
  // Datei existiert noch nicht - Erstellen der Spalten 
  settingsTable.Columns.Add("SettingName");
  settingsTable.Columns.Add("SettingValue");

  //Anlegen der default-Werte
  DataRow row = settingsTable.NewRow();
  row["SettingName"] = "WindowSize";
  row["SettingValue"] = "500|500";

  settingsTable.Rows.Add(row);

  row = settingsTable.NewRow();
  row["SettingName"] = "ComboBoxValue";
  row["SettingValue"] = "";

  settingsTable.Rows.Add(row);

  settingsTable.WriteXML(path);
}

return settingsTable;
}

So in etwa könnte das gehen - hab keine IDE zum testen da, also keine Garantie auf funktionalität ,-)
 
Und nochmals Danke,

Ich möchte dich jetzt aber auch nicht nerven oder so. Aber zwei sachen sind mir noch unschlüssig...Wo legt er die Datei hin? Muss ich bei Path meinen Pfad legen?

Und

Wann, und Wie ruft er die Datei auf...
 
path ist der Pfad zur xml-Datei den du selbst angeben musst. Aufrufen kannst du die Funktion z.B. beim starten der Anwendung um dir die DataTable zu holen und die Werte auszulesen. Beim schließen musst du nur die neuen Werte in die richtige Zeile schreiben und ein dataTable.WriteXML(path) aufrufen und schon sind deine Einstellungen gespeichert.

Gute Beispiele und Erklärungen findest du in der MSDN
 
Vielen Dank,

Die XML datei wird nun geschrieben...

aber beim Lesen ist ein Fehler...also wenn die Datei vorhanden ist, kommt ein fehler...

Code:
if(File.Exists(path)
{
  settingsTable.LoadXML(path);
}

LoadXML gibt es nicht...und bei nur Load kann ich es nicht debuggen weil direkt schon ein fehler ist

UND

bei ReadXml kommt auch ein fehler :(
 
Zurück