FTP-Synchronisieren

  • VB.NET

Es gibt 42 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    as List(of String) zu deklarieren ist die kleinste geschichte, jedoch bekomm ich doch dann hinterher die Ausgabe nicht mehr in der TreeView eingebettet, oder doch?
    Dennoch komm ich grad nicht weiter...
    Habe das List(of String) nun in der Private Function eingetragen, nun meldet er mir das der Return nicht stimmt.
    Wie deklariere ich das List of String bei Return?
    Nein! Doch! OHH!
    Das ist erstmal ein sinnloser Satz:
    Wie deklariere ich das List of String bei Return?
    "bei Return" deklariert man nix.


    Was notwendig ist, ist logischerweise, eine List(Of String) returnen - keinen String.
    Bislang gibts noch keine List(Of String) in deiner Methode - ist dann natürlich schlecht zum returnen.
    Also erstell eine, mit Dim, und New.
    Hab ich aktuell so...
    Unterstreichen tut er mir jedoch Return lstWriteBits blau

    VB.NET-Quellcode

    1. Private Function list_quelle(server As String, dir As String, user As String, pass As String) As List(Of String)
    2. Dim fwr As FtpWebRequest = CType(FtpWebRequest.Create("ftp://" & tb_q_server.Text & tb_q_dir.Text), FtpWebRequest)
    3. fwr.Credentials = New NetworkCredential(tb_q_user.Text, tb_q_pass.Text)
    4. fwr.Method = WebRequestMethods.Ftp.ListDirectory
    5. Dim sr As New StreamReader(fwr.GetResponse().GetResponseStream())
    6. Dim str As String = sr.ReadLine()
    7. While Not str Is Nothing
    8. Dim inputs() As String = {str}
    9. Dim lstWriteBits() As List(Of String) = New List(Of String)(inputs)
    10. Return lstWriteBits
    11. str = sr.ReadLine()
    12. End While
    13. sr.Close()
    14. sr = Nothing
    15. fwr = Nothing
    16. End Function

    Nein! Doch! OHH!
    nimm die klammern beim namen der liste weg.

    EDIT: Ich bin mir nicht ganz sicher ob du überhaupt den weg über ein Array inputs() gehen musst und gleich die Liste befüllen solltest. Ansonsten musst du das Array nachher in die Liste füllen.....
    Zum einfüllen des Array's müsstest du nur Dim list As New List(Of String)(strArr) schreiben, für recht sinnig halte ich es jedoch nicht zuerst ein Arry zu befüllen und dann auf ne Liste umzusteigen....
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Snaptu“ ()

    danke erstmal... hab es nun soweit bereinigt bekommen das die Funktion sauber ist. wäre nur die frage,
    wie bekomm ich das aus der Liste in die TreeView...
    Ebenfalls mit For Each und TreeView1.Nodes.Add()
    jedoch gibt es hier bei mir wieder eine Meldung...

    Quellcode

    1. Fehler 2 Fehler bei der Überladungsauflösung, da keine zugreifbare "Add" mit diesen Argumenten aufgerufen werden kann:
    2. "Public Overridable Function Add(node As System.Windows.Forms.TreeNode) As Integer": Der Wert vom Typ "System.Collections.Generic.List(Of String)" kann nicht in "System.Windows.Forms.TreeNode" konvertiert werden.
    3. "Public Overridable Function Add(text As String) As System.Windows.Forms.TreeNode": Der Wert vom Typ "System.Collections.Generic.List(Of String)" kann nicht in "String" konvertiert werden. F:\VB.Net\FAST-DL_Kopierer_CSS\FAST-DL_Kopierer_CSS\Form1.vb 27 13 FAST-DL_Kopierer_CSS


    Daraus lese ich, das er mit dem Add nicht klar kommt, da er nicht mit List(of String) zusammen passt?!
    Nein! Doch! OHH!
    ja, eine List(Of String) kann man nicht in eine TreenodeCollection adden.
    Welche Datentypen kann man einer TreenodeCollection adden?
    Guck dir die Klasse mal im ObjectBrowser an - es gibt 2 Add-Methoden ("Überladung" nennt man es, wenn es mehrere verschiedene Methoden gibt, die vom Namen her gleich sind)
    @ErfinderDesRades Sorry aber da komm ich nun nicht mehr hinterher...
    Was ich nun gefunden habe ist, das man nur "String" adden kann...
    Eine List of Strings ist meines erachtens nach ein 1 Dimensionales Array?! da es mehr als einen Wert beinhaltet?!
    Daher die For Schleife... aber ich bekomm die Daten dennoch nicht mit Add in den Tree
    Nein! Doch! OHH!
    hier der Quellcode:

    VB.NET-Quellcode

    1. Private Async Sub bt_q_test_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_q_test.Click
    2. TreeView1.Nodes.Clear()
    3. Dim return_ftp As List(Of String) = Await Task.Run(Function() list_quelle(tb_q_server.Text, tb_q_dir.Text, tb_q_user.Text, tb_q_pass.Text))
    4. For Each line In return_ftp
    5. TreeView1.Nodes.Insert(return_ftp)
    6. Next
    7. End Sub


    Mit der TreeView1.Nodes.Insert funktioniert es nicht und mit der TreeView1.Nodes.Add funktioniert es nicht.
    Daher meine Frage, wie bekomm ich den return As List(Of String) aus der Funktion nun in die TreeView?!

    Danke schon mal.
    Nein! Doch! OHH!
    oh man,... was ein Denkfehler... Sorry...
    Habs getestet, nur hier kommt in der TreeView nur eine Datei vom FTP an,... Woran könnte das liegen?
    Habe mal mit einem FTP Programm drauf geschaut, es ist die letzte Datei (Namentlich)... Alles was davor ist, bringt er mir nun nicht.
    Anbei nochmal der komplette Code...
    Wo ist mein Fehler?

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.Net
    3. Imports System.IO
    4. Imports Microsoft.Win32
    5. Public Class Form1
    6. Dim ret_str As String
    7. Private Function list_quelle(server As String, dir As String, user As String, pass As String) As List(Of String)
    8. Dim fwr As FtpWebRequest = CType(FtpWebRequest.Create("ftp://" & tb_q_server.Text & tb_q_dir.Text), FtpWebRequest)
    9. fwr.Credentials = New NetworkCredential(tb_q_user.Text, tb_q_pass.Text)
    10. fwr.Method = WebRequestMethods.Ftp.ListDirectory
    11. Dim sr As New StreamReader(fwr.GetResponse().GetResponseStream())
    12. Dim str As String = sr.ReadLine()
    13. While Not str Is Nothing
    14. Dim lstWriteBits As List(Of String) = New List(Of String)
    15. lstWriteBits.Add(str)
    16. Return lstWriteBits
    17. str = sr.ReadLine()
    18. End While
    19. sr.Close()
    20. sr = Nothing
    21. fwr = Nothing
    22. End Function
    23. Private Async Sub bt_q_test_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_q_test.Click
    24. TreeView1.Nodes.Clear()
    25. Dim return_ftp As List(Of String) = Await Task.Run(Function() list_quelle(tb_q_server.Text, tb_q_dir.Text, tb_q_user.Text, tb_q_pass.Text))
    26. For Each line In return_ftp
    27. TreeView1.Nodes.Add(line)
    28. Next
    29. End Sub
    30. End Class
    Nein! Doch! OHH!
    Fehler gefunden,...
    habe das Dim lstWriteBits As List(Of String) = New List(Of String) nun an den Anfang des kompletten gesetzt. das Return nun hinter die End While,... Damit erhalte ich nun die Liste... Sie ist jedoch unsortiert... Wie kann ich das beheben?
    Nein! Doch! OHH!