array(i).xyz in txt ausgeben

  • VB.NET

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

    array(i).xyz in txt ausgeben

    Tag Leute,

    ich versuche hier ein Array mit Unterpunkt (crypted(i).encrypt) in eine .txt zu schreiben.
    Das Array sollte sich so ganz einfach in eine .txt schreiben lassen (verwende es in einer For Schleife) =

    My.Computer.FileSystem.WriteAllText("test.txt", crypted(i).encrypt, False)

    Naja, ich will ja nicht nur einen Punkt des Arrays in die .txt schreiben sondern die ganzen 3k Stellen.
    Ich habe versucht das Problem wie folgt zu lösen. (Der Verschlüsselungsteil ist nicht zu beachten, das funktioniert alles soweit):

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. Dim var As String
    3. Dim rd As New RijndaelManaged
    4. Dim md5 As New MD5CryptoServiceProvider
    5. Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes(TextBox2.Text))
    6. Dim array() As String
    7. Dim write() As String
    8. Dim read As String
    9. For i = 0 To UBound(script)
    10. md5.Clear()
    11. rd.Key = key
    12. rd.GenerateIV()
    13. Dim iv() As Byte = rd.IV
    14. Dim ms As New MemoryStream
    15. ms.Write(iv, 0, iv.Length)
    16. Dim cs As New CryptoStream(ms, rd.CreateEncryptor, CryptoStreamMode.Write)
    17. Dim data() As Byte = System.Text.Encoding.UTF8.GetBytes(script(i).reihe)
    18. cs.Write(data, 0, data.Length)
    19. cs.FlushFinalBlock()
    20. Dim encdata() As Byte = ms.ToArray()
    21. var = Convert.ToBase64String(encdata)
    22. cs.Close()
    23. rd.Clear()
    24. array = var.Split(",")
    25. Dim u As New oo
    26. u.encrypt = array(0)
    27. If crypted Is Nothing Then
    28. ReDim crypted(0)
    29. crypted(0) = u
    30. Else
    31. Dim laenge = crypted.Length
    32. ReDim Preserve crypted(laenge)
    33. crypted(laenge) = u
    34. End If
    35. My.Computer.FileSystem.WriteAllText("test.txt", crypted(i).encrypt, False)
    36. read = My.Computer.FileSystem.ReadAllText("test.txt")
    37. write(i) = read
    38. Next
    39. End Sub

    Hier noch ein Screen mit der Fehlermeldung: www0.xup.in/exec/ximg.php?fid=21352069
    Sehe ich es richtig, dass du da immer einen Teil schreibst, dann einliest und anschließend noch was dranhängen willst?
    Nimm doch nen String, füge immer was hinzu (z.B. in ner Schleife) und schreib am Ende. Das geht außerdem wesentlich schneller.
    Gucke mal:

    VB.NET-Quellcode

    1. IO.File.WriteAllText(Pfad, String.Join(vbcrlf, Array.ConvertAll(crypted, Function(Item) Item.Encrypt))) 'Oder Environment.NewLine statt vbcrlf verwendn, oder was Ihnen belibet ^^


    String.Join() fügt zwischen allen Elementen des Arrays einen Trennstring ein (in diesem Fall einen Zeilenumbruch).
    Array.ConvertAll() führt für alle Items des eines Arrays eine Function aus (hier eine Lambdafunktion), und gibt ein Array des neuen Typs zurück.
    Also aus
    {CryptedDingensInstanz, CryptedDingensInstanz, CryptedDingensInstanz}
    wird
    {CryptedDingensInstanz.Encrypt, CryptedDingensInstanz.Encrypt, CryptedDingensInstanz.Encrypt}
    bzw. halt dann ein String-Array.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils