String > StringReplace > Listview

  • Hallo ich brauche mal Eure Hilfe.

    Ich habe eine Datei(siehe Anhang) die ich mit StringReplace bearbeite.

    Meine Frage ist:

    1. wie bekommen ich die fehlenden Seperatoren "|" jeweils in die einzelnen Zeilen, wo die Seperatoren < als 4 sind,

    und zwar vor dem letzten Eintrag in der jeweiligen Zeile, damit dann alle Zeilen die gleiche Anzahl der Seperatoren haben.

    2. wie bekommt man das ganze dann in die Listview

    Danke schon einmal für Eure Hilfe

  • Hi,

    mein Problem Clipboard in Listview einfügen habe ich gerade was gefunden:

    das habe ich nach ConsoleWrite($txt3) eingefügt, Zeile 27

    $clip = $txt3

    ; Zeilenweise Ausgabe

    $clip = StringReplace($clip, @CR, "")

    $split = StringSplit($clip, @LF)

    ...

    das habe ich vor GUISetState(@SW_SHOW) eingefügt, Zeile 54

    For $i = 1 To $split[0] Step 1

    GUICtrlCreateListViewItem($split[$i], $List)

    Next

    Jetzt fehlt eigentlich nur noch Problem 1

  • Jetzt fehlt eigentlich nur noch Problem 1

    Du meinst natürlich die Lösung für Problem 1...

  • Hallo Bitnugger,

    danke für die Lösung, Wahnsinn!

    Du hast natürlich Recht, dass ich die "Lösung" für Problem1 meinte, aber im Eifer des Gefechts habe ich das Wort vergessen.

    Also nochmals vielen, vielen Dank.

  • Zitat von ruby

    String > StringReplace > Listview

    Moin,

    meine alternative Methode:

    Einmal editiert, zuletzt von Velted (1. Mai 2022 um 19:05) aus folgendem Grund: Spaces to Tabs

  • $Line = StringReplace(StringReplace($Line, @TAB, "|"), "/", "|")

    In deinen Testdaten ist kein TAB vorhanden, kann somit also auch keiner ersetzt werden. Dadurch wird das Ergebnis natürlich verfälscht.

    Ich vermute mal, dass die Tabs durch den Forumseditor zu Leerzeichen konvertiert wurden?!

  • Bitnugger

    danke für den Hinweis. Du hast recht. Nachdem ich die Tabs schon im Quellcode nachbessern musste, sind sie wieder verschwunden. Gibt es dafür eine Einstellung in der Forensoftware, die mir bisher entgangen ist?

    (Wenn nicht, müsste ich sagen, dass der Forumseditor für Sourcecode eher suboptimal ist!) :Face:

  • Hallo Velted,

    deine Lösung gefällt mir auch sehr gut, und Du bist Schüler?

    Ich habe anstatt den Text wie Du in eine Func zu schreiben, es so gemacht Dim $Test = FileRead($sdatei)

    Allerdings ist die erste Zeile in der Listview leer, deswegen noch ein _GUICtrlListView_DeleteItem($List, 0) hinterher.

    Warum ist die erste Zeile leer, keine Ahnung?

    Das GUI soll skalierbar sein, warum fehlt das kleine Dreieck recht unten?

    An beide noch einmal vielen Dank für Eure Hilfe.

  • ruby : nur als Tipp, Dim ist aus meiner Sicht suboptimal, besser ist Global bzw. Local zu nutzen um eine eindeutige Definition zu erhalten.

    Ebenso anstatt StringMid("|||", 1, 4 - @extended) würd ich zur besseren Lesbarkeit zu StringLeft("|||", 4 - @extended) raten. Stringmid würde ich nur nutzen, wenn wirklich mittendrin etwas zu holen ist.

  • Hallo Moombas,

    danke für den Hinweis, ich muss ersteinmal den Code mit

    Code
    ; ListView füllen
    For $Line In StringSplit($rdatei, @CRLF, 3)
        $Line = StringReplace(StringReplace($Line, @TAB, "|"), "/", "|")
        If @extended < 3 Then $Line = StringReplace($Line, "|", StringMid("|||", 1, 4 - @extended), - 1)
        GUICtrlCreateListViewItem($Line, $List)
    Next

    verstehen und lernen, auch das was Bitnugger geschrieben hat.

    Da tue ich mich doch noch schwer mit .

    Vielen Dank an Alle.

  • (Off-Topic)

    Hallo Velted , deine Lösung gefällt mir auch sehr gut, und Du bist Schüler?

    Schüler ist nur ein beitragsabhängiger Zusatz, nicht zwingend ein Qualitätsmerkmal. Würde z.B. Stephen_Hawking von den Toten auferstehen und sich im Forum anmelden, stände dort Anfänger ^^ .

    Falls ich mich recht erinnere läuft das so ab :

    0 .. 299 Beitragspunkte = Anfänger

    300 .. 899 Beitragspunkte = Schüler

    900 .. 2999 Beitragspunkte = Fortgeschrittener

    3000+ Beitragspunkte = Profi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Aahhh, und ich dachte es wäre ein Qulitätsmerkmal, wie doof von mir.

    Es macht hier immer wieder Spaß.

    Der kürzeste Programmierer Witz: Gleich bin ich fertig!

    In diesem Sinne, kann dies hier geschlossen werden.

  • Warum ist die erste Zeile leer, keine Ahnung?

    Moin ruby,

    höchstwahrscheinlich, weil an der letzten Zeile der Datei ein Zeilenwechsel hängt. Das kann man recht einfach abfangen. Ich habe den Code zur Verdeutlichung der Funktion mal vereinfacht und kommentiert:

    Mein Beispiel sollte nur die mögliche Verwendung von StringReplace() zeigen. Um das GUI habe ich mich nicht weiter gekümmert.