Arrays in Datei schreiben

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von arnie.

    Arrays in Datei schreiben

    Hallo,

    hab eine nächste grundlegende Frage: Drei Vektoren (errechnete Datensätze) sollen in eine Datei (ausgabe.txt) geschrieben werden: Wert1 a(), Wert2 b() und Wert3 c(). Alle Vektoren haben dieselbe Länge. In der ersten Zeile sollen die Beschriftungen stehen. Darunter folgen die entsprechenden Werte spaltenweise:


    Wert1 Wert2 Wert3
    a(1) b(1) c(1)
    a(2) b(2) c(2)
    a(3) b(3) c(3)
    usw.

    Hab schon das ein oder andere via google gefunden. Leider schaffe ich es nicht, die Beispiele auf mein Problem zu übertragen. Das Schreiben soll dabei innerhalb von

    VB.NET-Quellcode

    1. Private Sub cmdStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStart.Click
    2. ....
    3. End Sub

    geschehen.

    mfg
    Zunächst mal kann ich dir statt Google-Codebeispielen und YT-Videos das kostenlos zum Download erhältliche Entwicklerbuchempfehlen.

    Als nächstes würde ich dir vorschlagen, verwirf die Array-Variante zu Gunsten einer Datatable. Die hat Spalten mit Namen, in ihr lassen sich einfach Datensätze (denn davon sprichst du ja selbst) verwalten (hinzufügen und entfernen), Datensätze in einem Datagridview durch Databinding darstellen und das Speichern/Laden geschieht einfach mit Datatable.ReadXML(Pfad) bzw. Datatable.WriteXML(Pfad).

    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Danke für eure Antworten.

    SystemUnknow schrieb:

    Seite schon entdeckt - danke trotzdem für den Link. Versuche seit heute Nachmittag das einzubauen. Es will noch nicht so richtig. Konkrete Frage: Mein Lösungsvektor v() (200 Zeilen - 1 Spalte) soll in die Datei geschrieben werden. Wie muss man die Fkt aufrufen?

    VB.NET-Quellcode

    1. ArraySave("c:\temp\MyTest.txt", v)

    Nächstes Problem: Wie Schreibe ich einen anderen Lösungsvektor - z.B. test() - daneben?

    VB.NET-Quellcode

    1. ArraySave("c:\temp\MyTest.txt", v, test)


    Und dann gibts noch ein Problem mit der Zeichendarstellung (UTF8???)

    mfg
    Mach es so:

    VB.NET-Quellcode

    1. ArraySave("c:\temp\MyTest1.txt", v)
    2. ArraySave("c:\temp\MyTest2.txt", test)

    Um Zeichendarstellung musst Du Dich erst kümmern, wenn es in Germanesien gespeichert und in Amerikanien geladen wird.
    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!
    Hallo,

    bei

    Quellcode

    1. ArraySave("c:\temp\MyTest1.txt", v)


    stehen in der Datei nur komische Zeichen. Mit

    Quellcode

    1. My.Computer.FileSystem.WriteAllText("C:\tmp\bahndaten.txt", radius(1), False)


    kann ich immerhin den ersten Wert auslesen. Wie kann man den ganzen Lösungsvektor auslesen? Beim googlen bin ich u.a auf

    Quellcode

    1. for each s as string in myarray
    2. speicher &= s & vbnewline
    3. next
    4. io.file.writealltext("C:\myarray.txt",speicher)
    5. das zum auslesen:
    6. myarray = split(io.file.readalltext("C:\myarray.txt"),vbnewl ine)


    gestoßen. free-hack.com/showthread.php?t=54867 Also bevor man ausließt, werden die Daten pro Zeile als "ein" Datensatz zusammengefasst (versteh ich das richtig?). Ist das zielführend?

    Das Ziel: Drei Werte (Uhrzeit, Wert1 , Wert 2) sollen in die Datei bahndaten.txt ausgelesen werden. Dabei sollen Wert1 und Wert2 6 Nachkommastellen haben...

    mfg
    Poste mal einen Dateiinhalt, wie Du ihn Dir vorstellst.
    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!

    RodFromGermany schrieb:

    Poste mal einen Dateiinhalt, wie Du ihn Dir vorstellst.
    Hallo,

    also die Ausgabe soll aus drei Spalten bestehen: [UTS] (koordinierte Weltzeit), [Grad] (auf 6 Nachkommastellen) und [km] (das ganze beschreibt eine Satellitenorbit). Also:

    1.Zeile: 17.04.2010 16.30.00(ein paar Leerzeichen)234,67(ein paar Leerzeichen)34567,456
    2.Zeile: 17.04.2010 16.35.00(ein paar Leerzeichen)245,67(ein paar Leerzeichen)36767,456
    usw.

    wobei "1.Zeile" und "2.Zeile" nicht in die Datei geschrieben werden soll (nur zum besseren Verständnis)

    usw.

    Nach viel googeln könnte das mit diesem Pseudocode gehen: Die drei Daten liegen als Vektoren vor. Dann in einer Schleifen alles zusammenbauen:

    Quellcode

    1. Dim output As String
    2. For k = 1 To ende
    3. output = output UTC(k) + " " + (grad(k)).ToString() +" "+ (radius(k)).ToString() + vbCrLf
    4. Next
    5. My.Computer.FileSystem.WriteAllText("C:\tmp\daten.txt", output, False)


    Ich hoffe mal, dass das vbCrLf den Zeilenumbruch bewirkt... oder besser mit output(k) ablegen und dann in die daten.txt schreiben !?

    mfg

    arnie schrieb:

    (nur zum besseren Verständnis)
    So war das gemeint:
    123.456 bla 876.543 bla 2334.6678
    234.567 ksdtgj 444.555 öslfghk 223.445
    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!
    Mach Dir eine List(Of String), an die Du Deine Zeilen einzeln ranhängst. Und diese bläst Du mit einem Einzeiler auf Platte:

    VB.NET-Quellcode

    1. System.IO.File.WriteAllLines(PFAD, mylist.ToArray)
    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!