Programm einstellungen speichern. Wie?

hi,
ich versuche mich gerade an einer c# anwendung bei der es nötig wird die einstellungen zu speichern. ich teste das ganze an nem simplen testprojekt wo einfach 3 textboxen hat und beim formload die einstellungen geladen werden sollen und beim klick aufn button gespeichert werden soll.

das man alles am besten in ner xml file app.config speichert so weit bin ich schon. Außerdem glaub ich zu wissen das es mit ConfigurationSettings.AppSettings gehen soll.

nur ich kriegs einfach nicht hin. wie kann ich mit der app.config bestimmte werte laden und speichern?

ich hoffe ihr könnt mir helfen ich hock schon seit einiger zeit an dem problem

Hallo

Habe einen MS artikel darüber gefunden:
http://msdn.microsoft.com/library/default.asp?url=/l…

viel erfolg

danke, aber so richtig verstanden hab ichs immernoch net. gibts da net irgendwie ne einfachere methode?

danke, aber so richtig verstanden hab ichs immernoch net.
gibts da net irgendwie ne einfachere methode?

nimm .net 2.0 :wink:

nein im ernst… was verstehst du nicht?

also registry fällt weg. da ich auf mobilen entgeräten zum teil entwickeln werde und ich weiß nicht ob diese auch immer ne registry bzw ne identische registry haben.

was ich gut fänden würde, wäre wenn es irgendwie ne möglichkeit gäbe mit get und set werte zu setzen und zu laden.
ich werde wahrscheinlich eine config.xml machen nur ich weiß nicht wie ich gezielt etwas auslesen kann. bis jetzt bleib ich immer bei readline lösungen stehen…

hallo

ich werde wahrscheinlich eine config.xml machen nur ich weiß
nicht wie ich gezielt etwas auslesen kann. bis jetzt bleib ich
immer bei readline lösungen stehen…

Löse doch das ganze mit einem Typed DataSet:
Gehen wir von einer einfachen Struktur aus: Einen Key mit Value.
Du erstellst eine DataTable mit den Columns Key und Value. Auf den Key setzt Du einen Primary Key.
(Je nach Komplexität der zu speichernden, kannst Du auch mehrere Tabellen mit mehreren Colums haben)

Das DataSet enthält eine Methode ReadXml und WriteXml. Damit kannst Du das File Laden und Speichern.

Da Du einen Primary Key auf der Column „Value“ gesetzt hast, Wir eine Methode geneiert die etwa so aussieht:

myDS.MyTable.FindByValue(„myValue“);

Alles unklar? :smile:

Gruss

hmm keine schlechte idee.
bin aber noch auf ne andere möglichkeit gestoßen an der ich gerade hänge, da die beschreibung in der msdn manchmal etwas ungenau ist und ich nicht unbedingt ein spezialist in sachen xml bin.

und zwar der XmlNodeReader. mit dem kann man glaub ich gezielt items suchen bzw auslesen (soweit hab ich das verstanden)
aber wo ich noch nicht ganz sicher bin ist, welche methode ich da verwenden soll.

huch… da wirst Du dich wund schreiben :smile: einfach gehts wirklich mit dem DataSet…

aber wie du willst :smile: es gibt eine Methode auf dem xmlDocument und XmlNode. Die heisst SelectSingleNode. Der musst du ein ein XPath query mitgeben…

gruss

und zwar der XmlNodeReader. mit dem kann man glaub ich gezielt
items suchen bzw auslesen (soweit hab ich das verstanden)
aber wo ich noch nicht ganz sicher bin ist, welche methode ich
da verwenden soll.

nachtrag
hier noch ein nettes tool
http://weblogs.asp.net/nleghari/articles/27951.aspx

Ok

  1. was ist ein Xpath query?
  2. ich hab ein eigenes xml Format erarbeitet. das wie folgt aussieht:

vielleicht noch ne kleine erklärung. es gibt verschiedene bereiche (area) z.B. für Benutzereinstellungen, Datenbankeinstellungen, Programmeinstellungen etc die sind unterteilt in Unterkategorien (subarea) wo man dann z.B. verschiedene Datenbanken hat z.B. für Oracle und MySql in nem dataset stehen dann alle werte die zusammengehören z.B. username und pwd oder höhe breite und farbe vom programm oder so. alles wird anhand von attributen unterschieden.

meine momentane lösung ist ne schleife die solange geht wie der xmlreader ließt und anhand verschiedener ziemlich verschachtelter if abfragen überprüft ob es das gesucht ist bzw bei nem mismatch eine zeile weiter ließt mit read oder ganze childelemente mit skip überspringt. momentan häng ich dort, da ich jetzt weiterweiß wie ich jetzt subareas überprüfe, so wie eben beschrieben funktionierts nicht ganz.
der pfad zu den einzelnen ebenen ist in einem array gespeichert und wird wieder mit ner if abfrage abgeglichen…

aber zurück zum thema:
was ich nicht verstehe ist das:

nsmgr.AddNamespace(„bk“, „urn:samples“);

book = root.SelectSingleNode(„descendant::book[@bk:ISBN=‚1-861001-57-6 Buch anschauen‘]“, nsmgr);

was bedeutet das in der klammer und wie muss es bei mir aussehen?

wäre für weitere hilfe dankbar ich hocke schon seit 3-4 tagen oder so an den problemen und schaff es allein nicht mehr

Hallo

Wie schon gesagt: Du machst Dir das leben unnötig schwer. Mit einem DataSet hättest Du weniger probleme…

Ok

  1. was ist ein Xpath query?

Das --> root.SelectSingleNode(„descendant::book[@bk:ISBN=‚1-861001-57-6 Buch anschauen‘]“,

aber zurück zum thema:
was ich nicht verstehe ist das:

nsmgr.AddNamespace(„bk“, „urn:samples“);

–> Das bruachst Du nicht, weil Du kein Namespace hast.

book =
root.SelectSingleNode(„descendant::book[@bk:ISBN=‚1-861001-57-6 Buch anschauen‘]“,
nsmgr);

was bedeutet das in der klammer und wie muss es bei mir
aussehen?

Ich habe Dir ein Tool gepostet (siehe thread weiter oben). damit kannst Du QPath Queries mit Sourcecode definieren lassen. Das tool macht dier den richtigen Code für dein Zugriff.

gruss

Wieder ein Schrittweiter, aber… :smile:
ok danke, habs geschafft das ding zu installieren und hab auch rausgefunden wie es funktioniert.

allerdings hab ich noch ein paar kleine fragen.
ich möchte mein „kleines“ vorhaben so bedienfreundlihc machen wie möglich und was mach ich wenn ich jetzt mehrere datasets subareas oder areas in der xml file hab? ich weiß ja den xpath nicht immer daher würde ich gerne irgendwie es hinkriegen das man einen datensatz etc nur anhand der areanamen auslesen kann.
Hier weiß ich nicht weiter. Programmcode wird wahrscheinlich nicht nötig sein, brauch nur nen kleinen denkanstoß

achja noch ne frage die sich mir später aufwerfen wird. kann der xmlwriter gezielt sachen ersetzen bzw an bestimmten stellen anfangen zu schreiben bzw löschen?
weil ne config sollte man ja auch schreiben können :smile:

aber nochmals vielen dank für die großartige und geduldige hilfe. ich versuch zwar mir so viel wie möglich selbst zu erarbeiten aber irgendwann steckt man in ner sackgasse und weiß einfach nicht mehr weiter

nicht immer daher würde ich gerne irgendwie es hinkriegen das
man einen datensatz etc nur anhand der areanamen auslesen
kann.
Hier weiß ich nicht weiter. Programmcode wird wahrscheinlich
nicht nötig sein, brauch nur nen kleinen denkanstoß

das geht, du kannst z.b. ein xpath query absetzten indem du nur den areanamen angibst und alles andere offen lässt…
du kannst das ganze xml durchlaufen, etc etc.

achja noch ne frage die sich mir später aufwerfen wird. kann
der xmlwriter gezielt sachen ersetzen bzw an bestimmten
stellen anfangen zu schreiben bzw löschen?
weil ne config sollte man ja auch schreiben können :smile:

hmm ob das der xmlwriter kann bin ich mir nicht sicher… sollte aber schon…sonst gibt es sicherlich andere klassen im .net framework die das können…

hab ich schon erwähnt, dass ein typed Dataset für dein vorhaben vieeel vieeel besser wäre… ? :smile:

gruss

ok was is ein typed dataset und kann ich den ganzen kram in nem xml format speichern?

das geht, du kannst z.b. ein xpath query absetzten indem du nur den areanamen angibst und alles andere offen lässt…
du kannst das ganze xml durchlaufen, etc etc.

hab da ein paar möglichkeiten durchprobiert aber es funzt net so ganz mit den attribut namen

ok was is ein typed dataset und kann ich den ganzen kram in
nem xml format speichern?

ich schick dir ein sample. du musst ev ein wenig umdenken… und auf die attribute verzichten…

gruss