Wie kann ich Lesen Sie die einzelnen Zeilen einer CSV-Datei in ein string-array, dann werden selektiv angezeigt, über combobox-Eingabe?

Brauche ich Eure Hilfe, Jungs! 😐

Habe ich mir eine CSV-Datei mit folgendem Inhalt:

1,The Compact,1.8GHz,1024MB,160GB,440    
2,The Medium,2.4GHz,1024MB,180GB,500    
3,The Workhorse,2.4GHz,2048MB,220GB,650

Es ist eine Liste von computer-Systemen, grundsätzlich gilt, dass der Benutzer kaufen können.

Muss ich diese Datei Lesen, Zeile für Zeile in ein array. Nennen wir dieses array csvline().

Die erste Zeile der text-Datei gespeichert csvline(0). Zeile zwei würde gespeichert werden in csvline(1). Und so weiter. (Ich habe angefangen mit null, weil das ist, wo die VB startet seine arrays). Ein drop-down-Liste würde dann dem Benutzer ermöglichen, wählen Sie 1, 2 oder 3 (oder wie viele Leitungen/Systeme in der Datei gespeichert werden). Bei Auswahl einer Anzahl - sagen wir 1 - csvline(0) angezeigt wäre, innerhalb einer textbox (textbox1, sagen wir). Wenn 2 ausgewählt wurde, csvline(1) angezeigt werden würde, und so weiter.

Es ist nicht die Formatierung, ich brauche Hilfe mit, obwohl; das ist der einfache Teil. Ich brauche nur jemanden, der helfen, mich lehren, wie Sie eine CSV-Datei line-by-line, setzen Sie jede Zeile in eine string-array - csvlines(count) - dann Inkrement-Zählung um eins, so dass die nächste Zeile in einen anderen Steckplatz.

So weit, ich habe in der Lage, fügen Sie die Nummer von jedem system in eine combobox:

Using csvfileparser As New Microsoft.VisualBasic.FileIO.TextFieldParser _
        ("F:\folder\programname\programname\bin\Debug\systems.csv")

            Dim csvalue As String()

            csvfileparser.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
            csvfileparser.Delimiters = New String() {","}

            While Not csvfileparser.EndOfData

                csvalue = csvfileparser.ReadFields()

                combobox1.Items.Add(String.Format("{1}{0}", _
                                          Environment.NewLine, _
                                          csvalue(0)))

            End While

        End Using

Aber dies nur wählt die einzelnen Werte. Ich brauche, um herauszufinden, wie Sie eine dieser Nummern in der combobox auslösen können textbox1 angehängt werden, mit nur dieser Zeile (kann ich mit der Formatierung, die Verwendung der string.format Zeug). Wenn ich versuche, dies zu tun mit csvalue = csvtranslator.ReadLine bekomme ich folgende Fehlermeldung:

"Fehler 1 der Wert vom Typ "String" kann nicht in "1-dimensionales array von String'."

Wenn dann steckte ich es als ein array, dh: csvalue() = csvtranslator.ReadLine habe ich dann eine andere Fehlermeldung:

"Fehler 1 die Anzahl der Indizes ist geringer als die Anzahl der Dimensionen des indizierten Arrays."

Was ist das Talent, Jungs? Ich habe Stunden damit verbracht, zu versuchen, um dies herauszufinden.

Bitte gehen Sie einfach auf mich - und zu halten alle Antworten extrem einfach, für mein newbie-Hirn - ich bin sehr neu auf all dies-Programmierung malarkey und nur ab und zu aus! 🙂

       Structure systemstructure

        Dim number As Byte
        Dim name As String
        Dim procspeed As String
        Dim ram As String
        Dim harddrive As String
        Dim price As Integer

    End Structure


 Private Sub csvmanagement()

        Dim systemspecs As New systemstructure

        Using csvparser As New FileIO.TextFieldParser _
        ("F:\folder\programname\programname\bin\Debug\systems.csv")

            Dim csvalue As String()

            csvparser.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
            csvparser.Delimiters = New String() {","}

            csvalue = csvparser.ReadFields()

            systemspecs.number = csvalue(0)
            systemspecs.name = csvalue(1)
            systemspecs.procspeed = csvalue(2)
            systemspecs.ram = csvalue(3)
            systemspecs.harddrive = csvalue(4)
            systemspecs.optical = csvalue(5)
            systemspecs.graphics = csvalue(6)
            systemspecs.audio = csvalue(7)
            systemspecs.monitor = csvalue(8)
            systemspecs.software = csvalue(9)
            systemspecs.price = csvalue(10)

            While Not csvparser.EndOfData

                csvalue = csvparser.ReadFields()

                systemlist.Items.Add(systemspecs)

            End While

        End Using

    End Sub

Edit:
Danke für Eure Hilfe Jungs, ich habe es geschafft das problem zu lösen jetzt.

Es war nur eine Frage aufrufen Schlaufen an der richtigen Stelle in der Zeit.

  • Verwenden Sie nicht Microsoft.VisualBasic-namespace --- pfui.
  • Vielen Dank für das informative Anregung, Cen. 😛 Sie werden froh zu hören, dass ich es entfernt.
  • Sorry! Fll-vom radar über das lange Wochenende... Di Sie Sortieren Sie aus? PK 🙂
  • Yeah, endlich geschafft. Vielen Dank für Ihre Hilfe. 🙂
InformationsquelleAutor Ryan | 2010-04-02
Schreibe einen Kommentar