Auslesen nach "=" von einer Configdatei

  • VB.NET

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

    Auslesen nach "=" von einer Configdatei

    Grüße

    Aktuell finde ich leider kein Thema welches zu meiner Problematik passt.

    Ja es gibt das ein oder anderen Thema was etwas darauf eingeht allerdings in anderer Form weshalb das ganze für mich nicht ganz zutrifft.

    Folgendes würde ich gerne erzielen:

    In der .cfg stehen folgende Zeilen exakt so aufgelistet darin:

    Port=80
    Host=website.de
    Link=Enabled

    So nun habe ich in meiner Form 3 Textboxen. Durch das Form loading Ereigniss soll er die .cfg auslesen.

    Den Inhalt den er findet soll er wie folgt wiedergeben:

    Textbox1 = "80"
    Textbox2 = "website.de"
    Textbox3 = "Enabled"

    Natürlich soll der Inhalt in der Textbox nicht in Anführungsstrichen stehen. Mein Problem ist allerdings nun folgendes: Wenn ich die Datei auslese liest er sie komplett aus und er schreibt mir den ganzen Saft in die Textbox1.
    Ich habe bereits einen Thread gefunden indem jemand etwas ähnliches vor hat allerdings mit Listboxen, das möchte ich jedoch nicht, würde lieber die Textbox verwenden.

    Wie setze ich nun das ganze in die Tat um? Leider weiß ich nicht wie ich ihm Befehle dass er das was nach "Port=" in Textbox1 schreibt und so weiter. Denn er soll wirklich in der Textbox1 nur "80" rein schreiben und nichts weiteres.

    Habt ihr da Tipps für mich oder gar kleine Code schnipsel welche mir das etwas näherbringen können? (Bitte keinen Vollwertigen Code, wenn nur kleine Schnipsel so dass ich das selbst analysieren kann^^)

    Ich bedanke mich schonmal im vorraus und sollte es doch solch einen Thread geben und ich habe ihn übersehen wäre es sehr nett mir diesen zu verlinken hihi

    Grüße :)
    was hast du denn bis jetzt?
    Poste mal bitte deinen aktuellen Code.

    Ggf. ist die Funktion Split das wonach du suchst.


    LG, Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Hab den Code gestern Abend komplett rausgelöscht und das ganze vorerst so gespeichert, den kann ich also leider nicht mehr posten :/

    Gefunden hatte ich den:

    VB.NET-Quellcode

    1. Dim sr As IO.StreamReader = New IO.StreamReader(path)
    2. Do While sr.Peek() >= 0
    3. Dim Zeile As String = sr.ReadLine
    4. If Zeile.StartsWith("GC") Then 'Wenn die aktuelle Zeile mit GC beginnt..
    5. Dim SplittedPart() As String = Zeile.Split(","c) 'Splitte bei Komma
    6. 'Trage in Listbox ein
    7. ListBox1.Items.Add(SplittedPart(0)) 'In Feld 0 des Arrays ist der Teil des Strings bis zum ersten Komma
    8. End If
    9. Loop
    10. sr.Close()


    Wobei hier einfach "Listbox1.Items.Add" auszutauschen mit "Textbox1.Text" auch nichts gebracht hatte, der ist übrigens Copy & Paste aus einem anderen Thread, wollte versuchen ob das auf die Weise bei mir funktionieren könnte, da der Tausch allerdings nicht klappt hab ich den auch wieder rausgeworfen.

    Vorher hatte ich die Datei einfach ganz auslesen lassen und in eine RichTextBox ausgeben lassen

    VB.NET-Quellcode

    1. RichTextBox1.Text = System.IO.File.ReadAllText(path & "\config.cfg")


    Da das aber mit der Zeit zu unübersichtlich wurde würde ich das ganze eben einfach aufteilen wie oben beschrieben. Vor der Textbox steht dann immer ein Label und in der Textbox das hinter dem "="
    Die .cfg wird allerdings im Endeffekt nicht von meinem Programm selbst ausgelesen sondern von einem anderen Programm, darum müsste ich mich also gar nicht kümmern, geht darum dass man so einfacher die .cfg editieren kann, ich hoffe man versteht was ich meine ^^

    Und da häng ich eben aktuell da ich auf die Weise noch nie gearbeitet habe, habe also keine Ahnung wie ich das Vorhaben welches ich habe so umsetzen kann wie ich es gerne hätte :/

    EDIT: Gerade gesehen von Eierlein, werde das mal Probieren. Vermute allerdings mal das man bei String den Filename mit path & "\conf.cfg" angibt, richtig? Ich werde damit einmal rumexperimentieren, eventuell klappt das ja. Wenn das so funktioniert wie ich mir das gerade denke müsste ich ja nur noch die "5" hinten in der Klammer an das anpassen was für die anderen Zeilen bestimmt ist.
    Kleines Edit nebenher: Gerade selbst meine überlegene Blödheit festgestellt... man muss die Datei natürlich erst auch auslesen einfach so path & conf.cfg is nich ^^

    EDIT2:

    Hab das ganze nun so:

    VB.NET-Quellcode

    1. Dim readfile() As String = IO.File.ReadAllLines(path & "\config.cfg")
    2. TextBox2.Text = readfile(5)
    3. TextBox2.Text.Split("=")


    Er liest mir nun die ganze Zeile aus die ich haben möchte (mit 5 auch die richtige, gewünschte)
    Jedoch steig ich gerade nicht im "Split" durch... Ich weiß nicht wie genau ich das machen muss... Habe gerade auch gegoogled und ein paar Threads gefunden, jedoch wie in Post 1 das gleiche Problem... es wird per Listbox gemacht... Keine ahnung vielleicht bin ich heute auch nicht Fit in der Rübe aber ich kapier da gerade nichts mehr. Wie Splitte ich das ganze denn richtig?

    Das ganze mit Substring hat überhaupt nicht funktioniert, kam immer wieder ein Error weshalb ich nun Split in betracht ziehen wollte und versuchen wollte... wäre schade da jetzt auch fest zu hängen und nicht mehr weiter zu kommen :(

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

    Hmmh, mir wird leider "Split" rot unterkringelt.

    Fehlercode:

    Quellcode

    1. Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
    2. Fehler BC30519 Fehler bei der Überladungsauflösung, da keine zugreifbare "Split" ohne einschränkende Konvertierung aufgerufen werden kann:
    3. "Public Overloads Function Split(separator As Char(), count As Integer) As String()": Der mit dem Argument übereinstimmende separator-Parameter wird von "String" auf "Char()" eingeschränkt.
    4. "Public Overloads Function Split(separator As Char(), options As StringSplitOptions) As String()": Der mit dem Argument übereinstimmende separator-Parameter wird von "String" auf "Char()" eingeschränkt.
    5. "Public Overloads Function Split(separator As Char(), options As StringSplitOptions) As String()": Der mit dem Argument übereinstimmende options-Parameter wird von "Integer" auf "StringSplitOptions" eingeschränkt.


    Habe auch versucht etwas rumzuprobieren, beispielsweise "Split" durch Substring auszuwechseln (wurde hier nicht unterkringelt)
    Beim Ausführen allerdings kam dann folgender Fehler:

    "Ungültige Konvertierung von der Zeichenfolge = in Typ Integer."

    Hab ich irgendwas vergessen zu Implementieren oder am Code was verhaspelt dass der mir den Fehler ausgibt?

    EDIT: Sollte eventuell den Aktuellen Code dazupacken damit man das ganze sieht ^^

    VB.NET-Quellcode

    1. Dim readfile() As String = IO.File.ReadAllLines(path & "\config.cfg")
    2. TextBox2.Text = readfile(5)
    3. If TextBox2.Text.Contains("=") Then
    4. TextBox2.Text = TextBox2.Text.Split("=", 2)(1)
    5. End If


    Aaalles klar habe den Fehler selbst ausfinden können.

    "Textbox2.Text = Textbox2.Text.Split("=")(1)" <-- so hat es funktioniert, einfach das ", 2" weglassen.

    Somit bedanke ich mich hier an alle die so tatkräftig geholfen haben, glaube wenn ich mich ab hier noch etwas weiter damit beschäftige krieg ich das ganze in naher Zukunft auch nahtlos alleine hin! ;D

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

    @Flauschi Falls das eine Windows-INI-Datei ist, nimm auch Prozeduren, die dies können.
    .ini Datei auswerten/lesen
    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!

    Flauschi schrieb:

    Aber hat sich bereits erledigt



    Forumsfunktion - Lösung teilen!

    Wäre klasse ;)

    LG, Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    @Flauschi Es ist doch egal, ob die Datei .CFG oder .INI heißt, das ist eine Frage der Syntax der Datei. ;)
    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!
    Anderes Problem was hiermit aber im Zusammenhang steht:

    Wie schreibe bzw speichere ich das ganze nun wieder ab?

    Sprich dass wenn in Textbox1 dann nicht mehr "80" steht sondern "90" beispielsweise er nichts anderes in der .cfg ändert außer dem was hinter dem "=" in besagter Zeile steht.

    Nicht das am Ende die config.cfg komplett leer ist bis auf "90". Hoffe man versteht so ungefähr was ich meine.

    Wie man Standardmäßig in eine Richtextbox ausliest und diese nach bearbeiten wieder exakt so abspeichert weiß ich, so hatte ich das ganze ja vorher, nur so funktioniert das hier ja nicht..

    Hoffe da kann mir jemand weiterhelfen :/

    Edit: Grml grad gesehen dass es nun ein "Doppelpost" ist... hab eigentlich auf Bearbeiten geklickt :/ Sorry dafür..
    Setzte die Variablen alle wieder zusammen und speichere das Teil am Stück ab.
    So oder so ähnlich (hans aus dem Kopf geschrieben, daher nicht getestet):

    VB.NET-Quellcode

    1. Dim s As String =
    2. "Foo1="&Textbox1.Text & vbcrlf &
    3. "Foo2="&Textbox2.Text & vbcrlf &
    4. "Foo3="&Textbox3.Text
    5. Using sw As New StreamWriter(sDateiPfad)
    6. sw.WriteLine(s)
    7. End Using
    "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

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

    Flauschi schrieb:

    Wie schreibe bzw speichere ich das ganze nun wieder ab?
    Siehe Post #7.
    Eine komplette Bibliothek dafür findest Du hier: INI-Lib | Dateien unkompliziert Speichern und Aufrufen
    Behandle die Daten einer INI-Datei wie eine INI-Datei.
    @mrMo Suboptimal. Wenn, dann mit nem StringBuilder: msdn.microsoft.com/de-de/libra…ingbuilder(v=vs.110).aspx
    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!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ () aus folgendem Grund: Links präzisiert