Ini Datei für Einstellungen

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Ini Datei für Einstellungen

    Hallo,
    also ich bin noch neu in der Benutzung von den Win APIs. Ich habe im Internet massenweise source codes gefunden, einer länger und komplexer als der andere, die entweder Fehler aufwiesen oder einfach nur grottenschlecht erklärt waren. Da verliert man einfach den Überblick wie ich finde. Und nun weiß ich nicht was am besten ist ?( Vielleicht eignet sich ja sogar XML o.ä. besser?
    Also es ist so das die Settings auf einem Server gespeicher und von überall abgerufen werden können (per WPF). Und eigentlich finde ich das Ini gut geeignet ist für diesen Zweck. Hier ein Beispiel:

    Quellcode

    1. [SData]
    2. pname =
    3. pclass =
    4. pimage =
    5. [PData]
    6. pbdate =
    7. padress1 =
    8. padress2 =
    9. phnumber1 =
    10. phnumber2 =
    11. snumber1 =
    12. snumber2 =
    13. pdis = None
    14. [Main Settings]
    15. prActive = False
    16. plevel = 3
    17. [SPSDATA]
    18. mds = 15
    19. cmmts =


    Wenn man das so auf XML überträgt ist das dnn im Endeffekt wirklich besser?
    @ErfinderDesRades:
    Danke für das Tut! Also My.Settings wollte ich eigentlich ungern verwenden, ich habe gehört, dass es eine etwas unkonventionelle Lösung ist...Ich verwende nun beides, XML und Ini. Da ich den großteil der Settings schon geschrieben habe wollte ich dafür Ini verwenden (habe mich im Forum und bei Google nochmal umgesehen und habe folgendes gefunden und etwas umgeschrieben)

    VB.NET-Quellcode

    1. 'Api klasse einbinden
    2. Public Class INI
    3. <DllImport("kernel32", EntryPoint:="WritePrivateProfileString")> _
    4. Shared Function Schreiben( _
    5. ByVal Sektion As String, ByVal Key As String, ByVal Value As String, _
    6. ByVal Dateiname As String) As Int32
    7. End Function
    8. <DllImport("kernel32", EntryPoint:="GetPrivateProfileString")> _
    9. Shared Function Lesen( _
    10. ByVal Sektion As String, ByVal Key As String, ByVal StandartVal As String, _
    11. ByVal Result As StringBuilder, ByVal Size As Int32, ByVal Dateiname As String) As Int32
    12. End Function
    13. End Class
    14. 'Schreiben
    15. Private Function WriteIni(ByVal FilePath As String, ByVal Section As String, ByVal Key As String, ByVal Value As String)
    16. INI.Schreiben(Section, Key, Value, FilePath)
    17. Return Nothing
    18. End Function
    19. 'lesen. Aufgrund der nötigen Stringbuilder variable habe ich die funktionen nochmal in eine andere eingepackt um es zu verkürzen
    20. Private Function ReadIni(ByVal FilePath As String, ByVal Section As String, ByVal Key As String)
    21. Dim sb As StringBuilder
    22. sb = New StringBuilder(4096)
    23. INI.Lesen(Section, Key, "", sb, sb.Capacity, FilePath)
    24. Return sb.ToString
    25. End Function


    XML werde ich für die Einstellungen das Programm betreffend verwenden. Ini ist für meine Profileinstellungen :D

    Danke nochmal an alle!
    @Xylon:: Auch für INI-Datei-Zugriffe gibt es fertige Klassen.
    Die haben normalerweise alle folgendes gemeinsam, was im Gegensatz zu Deinem Code steht: Die Prozeduren heißen nicht Schreiben und Lesen, es kommt stets ProfileString drin vor.
    Also etwa WriteProfileString.
    Warum machst Du eine Function, wenn Du stets Nothing zurückgibst?
    Und
    Vielleicht ist es sinnvoll, von dieser Klasse eine Instanz zu erstellen, die den Dateinamen im Konstruktor übergeben bekommt?
    Da lassen sich mehrere INI-Dateien besser behandeln.
    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!