Schleife in RichTextBox

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Cr4ckY.

    Schleife in RichTextBox

    Hallo,
    ich hab ein Problem mit dem Einfügen eines bestimmten Textes in einer Richtextbox.
    Also der Text soll dann so aussehen:

    Quellcode

    1. 00000
    2. 00010
    3. 00020
    4. 00030
    5. 00040
    6. 00050
    7. 00060
    8. 00070
    9. 00080
    10. 00090
    11. 000A0
    12. 000B0
    13. 000C0
    14. 000D0
    15. 000E0
    16. 000F0
    17. 00100
    18. 00110
    19. 00120
    20. 00130
    21. 00140
    22. 00150
    23. 00160
    24. 00170
    25. 00180
    26. 00190
    27. 001A0
    28. 001B0
    29. 001C0
    30. 001D0
    31. 001E0
    32. 001F0
    33. 00200
    34. 00210
    35. ...


    Und so soll das halt immer weiter gehen, nur weiß ich leider nicht wie ich das anstellen soll, und von Hand würde das etwas zu lange dauern.
    Grundfunktion ohne RichTextBox:

    In einer For-Schleife eine Integer-Variable um 16 bzw &H10 erhöhen, Ausgabe per String.Format(Integer-Variable,...) ins Hex-Format konvertieren und führende Nullen anhängen und in der RichTextBox ausgeben.

    lg SeriTools
    | Keine Fragen per PN oder Skype.
    Danke euch beiden, hat super geklappt! Hatte es vor Kangaroo's Antwort so:

    VB.NET-Quellcode

    1. For a As Integer = 0 To 2000 Step 16
    2. RichTextBox1.Text &= String.Format("{0:x4}" & vbNewLine, a)
    3. Next


    Das mit dem Hex-Format hab ich hier dann gefunden: idunno.org/archive/2004/07/14/122.aspx

    Aber noch eine Frage: Bei meinem Code habe ich 0 to 2000 Step 16 und Kangaroo hat 0 to 32 und nimmt die Variable * 16. Also einen unterschied bei der Ausgabe sehe ich dann nicht, aber welches von den beiden ist besser?

    Cr4ckY schrieb:

    welches von den beiden ist besser?

    Das ist zunächst gehopst wie gesprungen, von der Performance ist es genau das Gleiche. Einen Unterschied macht es erst dann wenn Du selber eine RichTextBox mit automatischer Zeilennumerierung definieren willst, da die Lines nicht in 16er Schritten erhöht werden. Ausserdem weiss ich so genau wieviel Zeilen angelegt werden, bei Dir muss ich immer erst durch 16 teilen.

    Aber etwas anderes an Deinem Beispiel ist viel gravierender: Du füllst Deine RichTextbox so

    Cr4ckY schrieb:

    RichTextBox1.Text &= String.Format("{0:x4}" & vbNewLine, a)
    d.h. Du schreibst den Text der gesamten Textbox jedesmal neu. Da die RTB sowieso eher zu den langsameren Controls gehört, wird das bei z.B. 1.000 Zeilen schon saumässig langsam und flackert noch dazu.

    Arbeite lieber mit AppendText

    VB.NET-Quellcode

    1. For i As Integer = 0 To 100
    2. RichTextBox1.AppendText (String.Format("{0:x4}0 " & vbNewLine, i)) ' 0 + blank angefügt
    3. Next

    Wenn Du es vergleichen willst, leg mal eine System.Diagnostics.Stopwatch Klasse an und stoppe die Zeit für die beiden unterschiedlichen Schleifen.

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