VB2010 ini automatisch auslesen

  • VB.NET
  • .NET (FX) 4.0

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

    VB2010 ini automatisch auslesen

    Moin liebe Forum Gemeinde,
    ich bin derzeit dabei, mir die Arbeit zu erleichtern und habe ein kleines Programm geschrieben. Nun stehe ich vor einem Problem.
    Mein Programm besteht aus insgesamt 2 Forms. Einmal die normale Oberfläche und einmal eines für Einstellungen. Ich speichere
    die Werte der EInstellungen in einer *ini Datei. nur muss ich leider jedesmal auf Einstellungen laden klicken, bevor diese übernommen werden.
    Gibt es eine Möglichkeit, diese sofort bei Programmstart auszulesen ohne, dass ich auf den Button Einstellungen laden klicken muss?

    Hier der Code aus dem Einstellungs Form:

    VB.NET-Quellcode

    1. Public Class settingsX
    2. Private Declare Ansi Function GetPrivateProfileString Lib "kernel32.dll" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Int32, ByVal lpFileName As String) As Int32
    3. Private Declare Ansi Function WritePrivateProfileString Lib "kernel32.dll" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Int32
    4. Public Function INI_ReadValueFromFile(ByVal strSection As String, ByVal strKey As String, ByVal strDefault As String, ByVal strFile As String) As String
    5. Dim strTemp As String = Space(1024), lLength As Integer
    6. lLength = GetPrivateProfileString(strSection, strKey, strDefault, strTemp, strTemp.Length, strFile)
    7. Return (strTemp.Substring(0, lLength))
    8. End Function
    9. Public Function INI_WriteValueToFile(ByVal strSection As String, ByVal strKey As String, ByVal strValue As String, ByVal strFile As String) As Boolean
    10. Return (Not (WritePrivateProfileString(strSection, strKey, strValue, strFile) = 0))
    11. End Function
    12. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    13. Me.Hide()
    14. End Sub
    15. Private Sub saveini_Click(sender As System.Object, e As System.EventArgs) Handles saveini.Click
    16. INI_WriteValueToFile("SettingsSMTP", "Username", user2.Text, ".\cfg.ini")
    17. INI_WriteValueToFile("SettingsSMTP", "Passwort", pass2.Text, ".\cfg.ini")
    18. INI_WriteValueToFile("SettingsSMTP", "Server", server2.Text, ".\cfg.ini")
    19. INI_WriteValueToFile("SettingsSMTP", "Port", port2.Text, ".\cfg.ini")
    20. INI_WriteValueToFile("SettingsVERSAND", "Dienstleister", dienst2.Text, ".\cfg.ini")
    21. INI_WriteValueToFile("SettingsVERSAND", "Kundennummer", kunden2.Text, ".\cfg.ini")
    22. INI_WriteValueToFile("SettingsVERSAND", "CC", cc2.Text, ".\cfg.ini")
    23. INI_WriteValueToFile("SettingsVERSAND", "Telefon", tel2.Text, ".\cfg.ini")
    24. End Sub
    25. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    26. user2.Text = INI_ReadValueFromFile("SettingsSMTP", "Username", "", ".\cfg.ini")
    27. pass2.Text = INI_ReadValueFromFile("SettingsSMTP", "Passwort", "", ".\cfg.ini")
    28. server2.Text = INI_ReadValueFromFile("SettingsSMTP", "Server", "", ".\cfg.ini")
    29. port2.Text = INI_ReadValueFromFile("SettingsSMTP", "Port", "", ".\cfg.ini")
    30. dienst2.Text = INI_ReadValueFromFile("SettingsVERSAND", "Dienstleister", "", ".\cfg.ini")
    31. kunden2.Text = INI_ReadValueFromFile("SettingsVERSAND", "Kundennummer", "", ".\cfg.ini")
    32. cc2.Text = INI_ReadValueFromFile("SettingsVERSAND", "CC", "", ".\cfg.ini")
    33. tel2.Text = INI_ReadValueFromFile("SettingsVERSAND", "Telefon", "", ".\cfg.ini")
    34. End Sub
    35. Private Sub settingsX_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    36. End Sub
    37. End Class



    Danke im Voraus

    Beste Grüße
    Benutze das Form.Load oder Form.Shown Event. Zudem sind deine Pinvoke Signaturen veraltet, nimm die Zeitgemaessen.

    pinvoke.net/default.aspx/kernel32.writeprivateprofilestring
    pinvoke.net/default.aspx/kernel32.getprivateprofilestring

    Zudem ist es unverantwortlich EMail-Zugangsdaten unverschluesselt zu sichern.
    And i think to myself... what a wonderfuL World!

    panorama24 schrieb:

    Gibt es eine Möglichkeit, diese sofort bei Programmstart auszulesen
    Klar.
    Du solltest Deine Einstellungen in die Settings verlagern und an Controls binden..
    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!