[Hilfe] Listbox 4

  • VB.NET

Es gibt 33 Antworten in diesem Thema. Der letzte Beitrag () ist von welt.

    @welt
    @RodFromGermany hat schon recht.
    Du musst deine Vorstellung sauber formulieren.
    Und dann aber auch deine eigenen Versuche bzw. Ansätze mit rein-bringen.
    Zerlege dein Problem in Teilprobleme.
    1. Vorletzte Zahl finden.

    VB.NET-Quellcode

    1. Dim i As Integer = CInt(ListBox1.Items.Item(ListBox1.Items.Count - 1 - 1))

    Normale sollte man das nicht tun, denn ich vergewaltige ein Item zu einem Integer. Jedoch sollte ich GUI von Daten trennen.
    Eigentlich solltest du parallel eine List(of Integer) laufen lassen, damit rechnen, und die ListBox nur als Anzeige benutzen.
    2. Die Zahl soll eine 1 sein ? Kein Problem. If-Befehl. Lernt man im Programmierkindergarten.

    VB.NET-Quellcode

    1. If i = 1 Then '...

    3. Leider kann ich wie Rod auch nicht hellsehen und kann nur ahnen was du zusammenzählen willst ;)
    Hallo

    Ich versuch es nochmal für euch verständlich zu vormulieren.

    Ich habe in allen ListboxItems einen Text wie diesen(ähnlich)

    10.10.11 16:31:18;00;046;05;1


    das Lehrzeichen danach ist zu beachten. So jetzt zur Frage ich möchte alle Listbox Items die als vorletze Zahl (wegen dem Lehrzeichen)
    eine 1 haben ein Label um 1 höher werden lassen (das mit Label höher werden lassen weiß ich).
    Stimmt eine der beiden Varianten?

    Variante 1:
    Spoiler anzeigen

    Nehmen wir an wir haben:
    10.10.11 16:31:18;00;046;01;1

    Dann sollte folgendes gemacht werden:
    10.10.11 16:31:18;00;046;02;1


    Variante 2:
    Spoiler anzeigen

    Nehmen wir an wir haben:
    10.10.11 16:31:18;00;046;05;1

    Dann sollte folgendes gemacht werden:
    10.10.11 16:31:18;00;046;05;2


    Und das bei jedem EIntrag in der ListBox?

    Grüsse
    Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    @welt: Mach mal eine Vorher-Nachher-Tabelle mit signifikanten Beispielen.
    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 weiß nicht was du meinst

    Ich die Items sollen gezählt werden die als vorletzte Zahl eine 1 haben und die Anzahl soll in einem Label ausgegeben werden.

    vorletzte Zahl wegen dem Lehrzeichen

    an der Item soll nichts verändert werden

    Beispiel als Items:

    10.10.11 16:31:52;00;048;06;1
    10.10.11 16:31:54;00;048;03;0
    10.10.11 16:31:59;00;052;04;1

    So in dem Fall haben 2 Items als vorletzte Zahl eine 1

    Also soll ein Label auf 2 gesetzt werden weil 2 Items als vorletzte zahl eine 1 haben
    Häh?????,

    ich seh 2 String wo die letzte Zahl ´ne 1 ist. Der mittlere String weist nur eine 1 weniger auf als die anderen.
    Falls es dir um die Zahl hinter´m letzten Simikolon geht gugge dir dies an:

    VB.NET-Quellcode

    1. For i As Integer = 0 To ListBox1.Items.Count - 1
    2. Dim s As String = ListBox1.Items(i).ToString
    3. s = s.Substring(s.LastIndexOf(";"c) + 1, 1)
    4. MessageBox.Show(s)
    5. Next


    Da baust du noch eine If abfrage ein und erhöhst eine Integer um 1 im Fall von True. Nach der Schleife setzt du dann den Label.Text.

    mfg

    Derfuhr

    Derfuhr schrieb:

    Da baust du noch eine If abfrage ein und erhöhst eine Integer um 1 im Fall von True. Nach der Schleife setzt du dann den Label.Text.


    in der schleife
    If s = "1" Then
    'integer um 1 erhöhen
    End If

    nach der Schleife:

    Label.Text setzten der den Wert der jeweils erhöhten Integer beinhaltet.

    EDIT: @welt:: Also nur wenn 4;1???? oder immer bei ;1?????
    drücke dich bitte etwas DEUTLICHER aus.

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

    welt schrieb:

    ich weiß nicht was du meinst
    Leseschwäche? Denkblockade?
    Vorher ==> Nachher
    1 ==> 2
    11 ==> 21
    111 ==> 121
    oder so was in der Art.
    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!
    EDIT: @welt:: Also nur wenn 4;1???? oder immer bei ;1?????
    drücke dich bitte etwas DEUTLICHER aus.

    ich hatte damit gemeint wenn das 4te Simikolon eine 1 ist

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

    welt schrieb:

    wie kann man das mit deiner Methode machen.
    Ja was mit wessen Methode bitte?
    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!

    VB.NET-Quellcode

    1. For i As Integer = 0 To ListBox1.Items.Count - 1
    2. Dim s As String = ListBox1.Items(i).ToString
    3. s = s.Substring(s.LastIndexOf(";"c) + 1, 1)
    4. If s = "1" Then
    5. MessageBox.Show("Integer muss hier erhöht werden!!!!!!!!!!!!!!")
    6. End If
    7. Next


    anstatt von MessageBox.Show erhöhe eine Integer um 1(die du vor der Schleife mit = 0 deklarierst) nach der Schleife ist der Wert der Integer = die anzahl der erfüllten Bedigungen. Den Wert dieser Integer kann du dann im Label.Text mit einbeziehen.

    VB.NET-Quellcode

    1. For i As Integer = 0 To ListBox1.Items.Count - 1
    2. Dim s As String = ListBox1.Items(i).ToString
    3. s = s.Substring(s.LastIndexOf(";"c) + 1, 1)
    4. If s = "1" Then
    5. Label11.Text = Val(Label11.Text) + "1"
    6. End If
    7. Next


    wenn ich das jetzt ausführe sagt mir das Programm ich hätte ArgumentOutOfRangeException nicht behandelt wie macht man das

    Edit by Manschula: Was machst du richtig, was alle anderen falsch machen? Richtig, keinen VB-Tag verwenden! --> VB-Tag eingefügt

    Bei mir hat sich das auf eine eine Lage Zeile verschoben deswegen habe ich das nicht gemacht

    Edit by Manschula #2: Und noch zwei Hinweise: a) die Farbe Rot ist der Moderation vorbehalten! b) Anleitung VB-Tag richtig verwenden

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Manschula“ ()

    Mal ernsthaft(ohne dir ans Bein pinkeln zu wollen),

    hast du dich schon mal richtig mit den Grundlagen beschäftigt?Auf mich wirkt es das es nicht so ist. Man rechnet einfach nicht mit Label-Texten dafür gibt es Single, Double, Long, Short, Integer und alle nochma alle mit U davor.
    hier nun ein korrektes Beispiel:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim anzahl_der_Treffer As Integer = 0
    3. For i As Integer = 0 To ListBox1.Items.Count - 1
    4. Dim s As String = ListBox1.Items(i).ToString
    5. s = s.Substring(s.LastIndexOf(";"c) + 1, 1)
    6. If s = "1" Then
    7. anzahl_der_Treffer += 1
    8. End If
    9. Next
    10. Label11.Text = anzahl_der_Treffer.ToString
    11. End Sub


    Ich empfehle dir: Wenn du als Progger/Hobby-Progger weiterkommen willst lese dir diese zwei Bücher durchzulesen:
    1. Visual Basic 2005 - Das Entwicklerbuch
    2. Visual Basic 2008 - Das Entwicklerbuch
    gibt es kostenlos als PDF zum download. Vor allem das 2005´er da werden die Grundlagen etwas besser behandelt:

    mfG

    Derfuhr
    da steht wenn ich das Programm ausführe ArgumentOutOfRangeException wurde nicht behandelt

    Danke hab nicht gewusst das es sowas kostenlos gibt danke für den Hinweis ich werde mich mal damit beschäftigen habe bis jetzt immer nur den Quelltext genommen umgebaut und so eingebaut wie ich ihn brauche