Module XML Datei laden und Werte als globale Variablen nutzen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von deepernet.

    Module XML Datei laden und Werte als globale Variablen nutzen

    Hallo und einen guten Rutsch ins Jahr 2012,

    ich hab ein Denkfehler. 8| Im Internet gesucht mehrere Tage - ich finde nix.
    Also:
    Ich möchte beim starten des Programms eine XML Datei laden und die Werte aus der XML Datei als gloabale Variablen in form1, form2... nutzen.
    Ich habs versucht mit 'Public Function...' versucht, aber kein Erfolg ?(

    Ich kann in form1 eine xml Datei laden und kann die Werte ändern speichern = funktioniert ^^
    Ich kann in Module Variablen 'Public test As String = "egal"' global nutzen = funktioniert ^^

    Vielen Dank

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „deepernet“ ()

    deepernet schrieb:

    Ich kann in form1 eine xml Datei laden und kann die Werte ändern speichern = funktioniert ^^
    Ich kann in Module Variablen 'Public test As String = "egal"' global nutzen = funktioniert ^^
    Was geht denn nun nicht?
    Zeig mal den Inhalt der xml-Datei und beschreib, was genau passieren soll.
    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!
    Inhalt der xml
    <?xml version="1.0" encoding="utf-8"?>
    <!--XML Database.-->
    <config>
    <Pfad>wert1</Pfad>
    <Pfad1>54848561516146516516161</Pfad1>
    <Checkbox1>Ja</Checkbox1>
    </config>

    in der Module soll er die xml auslesen und die eingetragenen Werte als Variable in form1, form2, form3.. zu verfügung stellen (globale Variablen)

    RodFromGermany schrieb:

    und beschreib, was genau passieren soll.
    z.B.
    Ich will in Form1 eine Variable Pfad anlegen, der Wert soll wert1 sein.
    Ich will in Form2 eine Variable Pfad1 anlegen, der Wert soll 54848561516146516516161 sein.
    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!
    ich möchte die Daten in der xml global nutzen
    und nicht immer die xml in jeder 'form' aufrufen

    ich möchte in form1, in form2, in form3.... die Variable Pfad mit dem Wert der in der xml Datei zu Pfad steht

    einzeln kann ich es wenn ich in form1 und form2 jedesmal die xml aufrufe später wenn ich was ändere dann kann schnell ein fehler passieren weil ich ja in jeder form ändern muss und darum alles in die module rein.
    Ich hab schon mal ein paar test gemacht aber es funktioniert einfach nicht.. leider weiss ich auch nicht wo ich anpacken soll.

    und das hab ich in der module drinnen:

    Imports System
    Imports System.IO
    Imports System.Text
    Imports System.Xml
    Imports System.Xml.Linq
    Imports System.Xml.Serialization

    Module Module1
    Public xmlName As String = "Myname.xml"
    Public curElemt As String

    Public Sub Config(ByVal aPfada As String)
    If File.Exists("MyName.xml") Then
    Dim document As XDocument = XDocument.Load("MyName.xml")
    Dim testen As String = (aPfada)

    For Each curElemt As XElement In document...<Pfad>
    Dim aPfad As String = curElemt
    aPfada = (aPfad)
    Next

    Else
    Form1.InfoLabel1.Text = ("Datei nicht gefunden!") & vbCrLf & ("Lösung: blabla...")
    End If

    End Sub
    End Module

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „deepernet“ ()

    deepernet schrieb:

    VB.NET-Quellcode

    1. Form1.InfoLabel1.Text = ("Datei nicht gefunden!") & vbCrLf & ("Lösung: blabla...")
    Das geht vor die Hose, weil das Modul keine explizite Instanz von Form1 hat, es erstellt eine implizite Instanz, die siehst Du nicht.
    Leg alle Variablen in dem Modul an und greif von Deinen Formen aus darauf zu.
    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!
    habs hinbekommen :rolleyes:

    aufruf in der formx - also egal ob form1 oder form2
    den namen der Sub im Module
    also
    Private Sub(....)
    config()

    hier den code und die variable ... InfoLabel1.Text = testvarpfad

    End Sub

    und in der Module schauts jetzt so aus:
    Public xmlName As String = "Myname.xml"
    Public testvarpfad As String = ""
    Public curElemt As String

    Sub Config()
    If File.Exists(xmlName) Then
    Dim document As XDocument = XDocument.Load(xmlName)


    For Each curElemt As XElement In document...<Pfad>
    Dim aPfad As String = curElemt
    testvarpfad = (aPfad)
    Next

    Else
    Form1.InfoLabel1.Text = ("Datei") & xmlName & (" nicht gefunden!")
    End If

    End Sub


    also er ließt die xml datei aus und übergibt die variable. das ist praktisch wenn User die eigenen Einstellungen inder der xml (per Programm selbstverständlich ;) ) einstellen = Userspezifisch

    Trotzdem Danke und allen noch ein schönes Silvester und guten Rutsch ins Jahr 2012

    PS: Finde das Forum sehr gut hab schon viel Tips gesehen