Frage zur Sicherung von Programmeinstellungen

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von egon.

    Frage zur Sicherung von Programmeinstellungen

    Bei mir geht es um die Frage nach der Speicherung von Programmeinstellungen. Mit My.Settings bin ich nicht zufrieden, da der Speicherort nicht festgelegt werden kann (sonst sind sie sehr bequem). Ich möchte, dass meine "Settings" in dem gleichen Ordner abgespeichert werden können wie der Programmordner. Andere (externe) Messprogramme, mit denen ich arbeite, verwenden noch Ini-Dateien, die auch im gleichen Ordner abgelegt werden. So kann das Programm leicht an einem anderen Ort mit den gleichen Einstellungen gestartet werden.
    Wenn ich eure Beiträge hier im Forum richtig verstanden habe, wird bei ähnlichen Anfragen fast immer ein typisiertes Dataset empfohlen.
    Bei mir sammeln sich rund zweihundert Parameter an (Einstellungen von Controls), die gespeichert werden sollen.
    Mein Programm ist eine Messdatenerfassung mit grafischer Darstellung in einem Chart. Allein die ganzen Chart-Einstellungen müssen sinnvoll abgelegt werden. Die Messdaten werden jetzt schon in einem typ. Dataset verarbeitet und gespeichert.

    Nun zu meinen Fragen:
    - Bin ich mit dem typisierten Dataset für die Sicherung von Programmeinstellungen auf dem richtigen Weg?
    - Wie kann ich im Designer für ein Dataset die Einträge alphabetisch sortieren?
    - Ist es sinnvoll alle Größen die gespeichert werden sollen in der Hauptspalte abzulegen? Also alles in eine Spalte? Letztlich geht es um die übersichtliche Sortierung.
    - Wie kann man die Einstellungen von Controls in untergeordneten Fenster zur Programmlaufzeit so sichern, dass die Einstellungen beim Schließen von einem untergeordneten Fenseter nicht sofort wieder verloren gehen?
    Klar kannst Du mit dem DataSet auch Deine Einstellungen speichern und laden. Alphabetisch sortieren? Hm, ist zwar nicht während der Laufzeit von Vorteil, aber ja, per Hand geht das per Cut&Paste.
    Was beim DataSet als Spalte angezeigt wird, ist in Wirklichkeit eine Zeile und umgedreht. Aber wurscht. Ob es sinnvoll ist, kommt drauf an, ob die Daten hirarchisch sind. Aber das sind sie wohl eher nicht, von daher: hau ruhig alles in eine Tabelle.
    Antwort auf die letzte Frage: Mittels Daten sichern und laden wäre wohl am sinnvollsten. Oder alternativ nicht mit ShowDialog arbeiten, sondern mit Show&Hide. Dann wird das Fenster ja offen gehalten und die eingegebenen Daten gehen nicht verloren. Aber mach es mit Save&Load, das ist sauberer und flexibler.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Wenn es nur einige wenige Daten sind, kann man sogar ne simple TextDatei zum speichern/laden verwenden. Hierbei kann man, spaßeshalber eine eigene Dateiendung angeben. Dann haste nachher ne .egon Datei mit deinen Einstellungen drin ;)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    egon schrieb:

    da der Speicherort nicht festgelegt werden kann
    Gugst Du hier: UserSettingsProvider (Persistieren von UserSettings)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Oder als xml.

    Eine Klasse mit deinen Einstellungen (bool, string, customirgendwas).

    Methode für lesen / speichern der Xml.

    Die aktuellen einstellungen in einer instanz deiner klasse vorhalten.

    Schaust du hier:

    github.com/BornToBeRoot/NETwor…ttings/SettingsManager.cs
    und die Klasse:

    github.com/BornToBeRoot/NETwor…/Settings/SettingsInfo.cs
    NETworkManager - A powerful tool for managing networks and troubleshoot network problems!
    Wenn ich dem Link von RodFromGermany folge stellen sich mir mehrere Fragen
    - Wie kann man Variablen speichern/auslesen? In dem Beispiel wird das Databinding an Controls gezeigt.
    - Wie kann man den gespeicherten Inhalt es Control auslesen? (z.B.den Text einer Textbox)
    - Was muss ich an welchen Stellen eifügen umd diese Sicherung in mein Projekt mit aufzunehmen?
    Ich gehe mal davon aus, dass ich auch von untegeortneten Fenstern auf die gesicherten Inhalte/Einstellungen zugreifen kann.


    >>> Oder alternativ nicht mit ShowDialog arbeiten, sondern mit Show&Hide. Dann wird das Fenster ja offen gehalten und die eingegebenen Daten gehen nicht verloren. Aber mach es mit Save&Load, das ist sauberer und flexibler.
    Ich kenne nur das

    VB.NET-Quellcode

    1. Using frm = New frmSetup
    2. Dim result = frm.ShowDialog
    3. End Using

    Könntest du mir bitte erklären was du meinst mit "Save&Load" und welche Vorteile es hat.

    egon schrieb:

    Wie kann man Variablen speichern/auslesen?
    Die My.Settings werden mit dieser Methode unter Deinem vorgebbaren Pfad abgelegt.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hmmm, da hatte ich mit My.Settings eine lange Leitung :-(.
    Was muss ich alles einstellen, bzw. in ein bestehendes Projekt kopieren, damit ich deine Erweitereung auch dort richtig nutzen kann? In dem Projekt gibt es schon My.Settings-Einträge. Deren alten Werte sind aber nicht wichtig und können ruhig überschrieben werden.

    Me.Label3.DataBindings.Add(New Binding("Text", My.MySettings.Default, "Ort", True, DataSourceUpdateMode.OnPropertyChanged))
    Welche Bedeutung hat das "Text" ? Kann da irgendetwas stehen und sich auch von Binding zu Binding immer wieder wiederholen?

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „egon“ ()

    Dieser Provider wird einfach einem Projekt mitgegeben und ein Verweis angelegt.
    Eigentlich ganz trivial...
    Lese dazu meinen Eingangspost zu diesem Thema: UserSettingsProvider (Persistieren von UserSettings)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VB1963“ ()