Announcement

Collapse
No announcement yet.

C# Programmeinstellungen speichern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • C# Programmeinstellungen speichern

    Moin moin,

    mein Problem ist es, dass ich bestimmte Programm-Einstellungen so speichern möchte, dass diese beim nächsten Programmstart wieder aufgerufen werden können. Bedeutet, wenn der Anwender in den Programm-Einstellungen (mittels ProgressBar, Textbox o.Ä.) ein Intervall von 3000ms angibt, dass diese beim nächsten Programm-Start gespeichert bleiben, und der Anwender die Einstellung nicht wieder erneut eingeben muss.

    Zuvor hatte ich zwei verschiedene Lösungsmöglichkeiten:
    - Diese Programmeinstellungen in einer Text-Datei speichern. Bei Programmstart soll die Text-Datei gelesen werden und anhand der Werte die Einstellungen wieder vorgenommen werden. Problem ist nur, dass ich denn einen Ordner finden muss, der universell (also bei verschiedenen Benutzern) vorhanden ist. Immer eine Text-Datei neben der eigentlichen .exe-Datei abzulegen halte ich für unschön.

    - Oder die Einstellungen in der Registry speichern und von dort aus immer auslesen


    Habt ihr vielleicht einen besseren Vorschlag, wie man solche Daten besser für den nächsten Programmstart aufheben kann? Oder würdet ihr direkt schon eine der beiden Lösungen bevorzugen?

    Mit freundlichem Gruß

  • #2
    http://stackoverflow.com/questions/1...-how-to-use-it

    Davon abgesehen gibt es Ordner, die bei jedem User vorhanden sind -> bsp eigene Dokumente, Musik u.a.

    Immer eine Text-Datei neben der eigentlichen .exe-Datei abzulegen halte ich für unschön.
    Das sehe ich genau anders. Die dusselige Verteilung der ganzen Dateien einer Anwendung im ganzen Betriebssystem bringt nur Ärger. Eine Neuinstallation des BS ist so einfach nicht möglich. Jede Software muss "Nachinstalliert" werden. Wenn jede Software ihre Dateien bei sich behält, ist das effektiver.
    Christian

    Comment


    • #3
      Wenn es nur ein paar wenige Werte sind würde ich es in die Registry schreiben, das ist immer noch am einfachsten.

      Neben der "App.Config" Datei im XML-Format gibt es noch die ganz klassische Variante mit der Ini-Datei. Hier gibt es eine kostenlose Klasse um Ini-Dateien zu schreiben und zu lesen: IniReader
      Die Ini-Datei gehört entweder ins Programm Verzeichnis (wenn es für alle User gleich sein soll) oder typischerweise ins %LOCALAPPDATA%\Deine_Anwendung wenn es für jeden User individuell sein soll.


      Gruss

      Comment


      • #4
        Kommt ein wenig drauf an was du genau erreichen willst. Wem sollen die Einstellungen zur Verfügung stehen. Jedem User auf dem Rechner, einem User auf dem Rechner, einem User auf jedem Rechner auf dem er die Software benutzt, jedem User auf jedem Rechner etc. Je nachdem fallen bestimmte Lösungen eher raus.

        Persönlich würde ich egal was du machst die App.Config Variante ablehnen die wäre mir zu eingeschränkt wie die funktioniert(nicht weil sie im Programmverzeichnis oder im Userverzeichnis schreibt sondern weil das Verfahren fix ist). Etwas selbstgemachtest ist auch nicht zu aufwendig und letztlich hast du dann die Freiheit wohin es geht und woher es kommt. Also einfach eine Klasse schreiben die Einstellungen im Speicher hält und dazu dann irgendein oder mehrere Serialisierungsverfahren die man auf diese Klasse anwenden kann. Ob das dann Registry, Xml-File, Ini-File, Datenbank oder was auch immer ist ist dann leicht austauschbar und ein nachgelagertes Problem. Aka das kleine Problem hat man schonmal in 2 noch kleinere Problemchen zerlegt die einfacher einzeln lösbar sind und die Flexibilität erhöhen. Das Verfahren ist dann leicht austauschbar wenn es sich auf die Dauer, Anforderungen ändern sich ja üblicherweise, als suboptimal erweist.

        Comment


        • #5
          Hey,

          recht herzlichen Dank für die zahlreichen nützlichen Anmerkungen! Ich werde mich mal in das Thema App.Config einlesen und später wahrscheinlich noch den Vorschlag "Entwicklung einer Klasse" annehmen!

          Comment


          • #6
            Originally posted by Ralf Jansen View Post
            ...Persönlich würde ich egal was du machst die App.Config Variante ablehnen die wäre mir zu eingeschränkt wie die funktioniert(nicht weil sie im Programmverzeichnis oder im Userverzeichnis schreibt sondern weil das Verfahren fix ist). Etwas selbstgemachtest ist auch nicht zu aufwendig und letztlich hast du dann die Freiheit wohin es geht und woher es kommt. Also einfach eine Klasse schreiben die Einstellungen im Speicher hält und dazu dann irgendein oder mehrere Serialisierungsverfahren die man auf diese Klasse anwenden kann. ...
            Allerdings muss man sagen dass die app.conf oder web.conf auch einfach funktioniert ohne dass ich groß was tun muss. Man kann in der app.conf aber auch eigene Sektionen anlegen. Diese kann man dann sogar typisieren usw. Würde ich aber keinem empfehlen, weil super kompliziert. Aber der AppSettings Block funktioniert eigentlich ganz gut.

            Comment

            Working...
            X