ListBox Items laden funktioniert nicht

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von FAtheone.

    ListBox Items laden funktioniert nicht

    Hi Community, mal wieder brauche ich eure Hilfe, die SuFu hat meistens nicht funktioniert oder in einer ListView oder ComboBox, ich brauche aber wirklich eine ListBox. Ich habe folgenden Code:

    VB.NET-Quellcode

    1. Dim array() As String = Nothing
    2. array = System.IO.File.ReadAllText("C:\Users\" & Environment.UserName & "\AppData\Local\breadSoft\currency.net\ausgaben.ini").Split(CChar(vbCrLf))
    3. Me.KryptonListBox1.Items.AddRange(array)


    In ausgaben.ini steht:
    10
    10
    10

    Normalerweise sollte er 3 Items adden, mit jeweils 10. Mavht er aber nicht. Er addet ein leeres Item in einer Zeile und 1 leeres Item in 2 Zeilen. Mehr macht er nicht. Wo liegt der Fehler?

    VB.NET-Quellcode

    1. Dim array() As String = IO.File.ReadAllLines("C:\ausgabe.ini")
    2. For i As Integer = 0 To UBound(array)
    3. ListBox1.Items.Add(array(i))
    4. Next

    Geht doch

    Kann es sein, dass die KryptonListBox als Item nur instanzierte KryptonListItems unterstützt und nicht direkte String-Objekte?


    Gruss
    Pascal
    soweit ich weiß ist vbCrlf/vbNewLine kein Char, sondern ein Sting bestehend aus zwei zeichen(ich glaube Chr(13) und Chr(10)...), jedoch wird durch CChar nur Chr(13) genommen, somit haben wir einen Split bei einem normalen Carriage Return...), am besten du nimmst hier sowiso die IO.File.ReadAllLines Funktion ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Binär, wenn man ein anderes Trennzeichen nimmt(z.B. einen LineFeed, oder natürlich einen Carriage Return) = 3 Bytes :P
    aber XML ist eher für Verschachtelungen gedacht, bloß für eine ListBox ist eine Datei mit Zeilenumbrüchen wohl übersichtlich genug und auch am einfachsten/schnellsten...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Eine einfache Listbox hat ja eh nur eine String-Eigenschaft, nämlich der Text, der angezeigt wird.
    Da reicht der 1-Zeiler vollkommen aus (Pro Zeile ein Eintrag):

    VB.NET-Quellcode

    1. ListBox1.Items.AddRange(IO.File.ReadAllLines("C:\ausgabe.ini"))


    Wenn du eine KryptonListBox hast, hat die meines Wissen mehrere Eigenschaften. Da könnte eine Serialisierung das Richtige für dich sein. So werden alle Eigenschaften mitgespeichert.


    Gruss
    Pascal

    XML-Quellcode

    1. <balance name="Projet 1">
    2. <incomes>
    3. <income value=10 desc="Taschengeld oder so"/>
    4. </incomes>
    5. <expenses>
    6. <expense value = "100" desc="Computer oder so"/>
    7. </expenses>
    8. </balance>


    OMG

    BTW.: Wenn die Werte sowieso nur Integer sind, dann braucht man kein Trennzeichen :P
    Aber es sind 4 Bytes (Obwohl Short (=2 Bytes) auch reichen würde - wer verdient mehr als 65355 € im Monat???).
    nein es sind 4 Bytes im Speicher, jedoch sind es gespeichert nur 4 pro Zeile mit einem Windows Zeilenumbruch, mit einem Linux/Mac Zeilenumbruch jedoch 3(hier werden die Werte ja als String gespeichert, ein Zeichen=1Byte, 10 hat 2 zeichen + Lf...)
    wenn man natürlich den BinaryWriter nimmt, kann man immer nur 2 zeichen auslesen(wenn die Zahlen immer gleichgroß sind...),.,.
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Und wer sagt, dass bei binären Speichermethoden Zeilenumbrüche als Trennzeichen reinkommen !?!

    Ich habe doch bewreits gesagt, dass keins (oder Keine) erforderlich sind, wegen der festen Blockgröße.
    Dafür gibt es FileSize