FTP Tool

  • Hallo Leutz,

    Ich habe mich heute dran begeben, ein FTP Programm zu schreiben.
    Habe bisher folgenden Code:

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ftp.au3>

    [/autoit][autoit][/autoit][autoit]

    $title = GUICreate("FastTransfer", 658, 443, 192, 124)
    $server_l = GUICtrlCreateLabel("Server:", 8, 8, 38, 19)
    $username_l = GUICtrlCreateLabel("Username:", 176, 8, 55, 19)
    $password_l = GUICtrlCreateLabel("Password:", 360, 8, 53, 19)
    $server_i = GUICtrlCreateInput("", 48, 8, 121, 21)
    $username_i = GUICtrlCreateInput("", 232, 8, 121, 21)
    $password_i = GUICtrlCreateInput("", 416, 8, 121, 21)
    $connect = GUICtrlCreateButton("Connect", 544, 8, 105, 25, $WS_GROUP)
    $dateieneigen = GUICtrlCreateList("", 8, 80, 641, 136)
    $dateienserver = GUICtrlCreateList("", 8, 230, 641, 136)

    [/autoit][autoit][/autoit][autoit]

    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Case $connect
    $open = _FTPOpen("FastTransfer")
    $connection = _FTPConnect($open,$server_i,$username_i,$password_i)
    $filelist = _FTPFilesListTo2DArray ($connection,0,0x80000000)

    [/autoit][autoit][/autoit][autoit]

    Case $GUI_EVENT_CLOSE
    _FTPClose($connection)
    Exit

    [/autoit][autoit][/autoit][autoit]

    EndSwitch
    WEnd

    [/autoit]


    Wenn ich alle Daten eingegeben habe und dann auf Connect klicke, passiert jedoch nichts :(
    Warum?


    Danke :)

  • [autoit]

    $Text = GUICtrlRead ($Label1)

    [/autoit]


    Das ist die Lösung!

    Erst musst du die Inputs auslesen :rolleyes:

  • [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ftp.au3>

    [/autoit][autoit][/autoit][autoit]

    $title = GUICreate("FastTransfer", 658, 443, 192, 124)
    $server_l = GUICtrlCreateLabel("Server:", 8, 8, 38, 19)
    $username_l = GUICtrlCreateLabel("Username:", 176, 8, 55, 19)
    $password_l = GUICtrlCreateLabel("Password:", 360, 8, 53, 19)
    $server_i = GUICtrlCreateInput("", 48, 8, 121, 21)
    $username_i = GUICtrlCreateInput("", 232, 8, 121, 21)
    $password_i = GUICtrlCreateInput("", 416, 8, 121, 21)
    $connect = GUICtrlCreateButton("Connect", 544, 8, 105, 25, $WS_GROUP)
    $dateieneigen = GUICtrlCreateList("", 8, 80, 641, 136)
    $dateienserver = GUICtrlCreateList("", 8, 230, 641, 136)
    $server = GUICTRLRead($server_i)
    $username = GUICTRLRead($username_i)
    $password = GUICTRLRead($password_i)
    $open = _FTPOpen("FastTransfer")
    $connection = _FTPConnect($open,$server,$username,$password)
    $filelist = _FTPFilesListTo2DArray ($connection)

    [/autoit][autoit][/autoit][autoit]

    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Case $connect
    _FTPOpen("FastTransfer")
    _FTPConnect($open, $server, $username, $password)

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($dateienserver, $filelist [$i][0]&"|")
    Next

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Case $GUI_EVENT_CLOSE
    _FTPClose($connection)
    Exit

    [/autoit][autoit][/autoit][autoit]

    EndSwitch
    WEnd

    [/autoit]

    Gemacht, ändert sich aber nichts.
    Und ja, die Login Daten, die ich nutze, sind richtig :)

  • Also da ich sehe, dass es mit dem GUICtrlRead usw. ja auch nicht geht, hab ich das Script weitergeführt und bin nun soweit.
    Nun gibt er mir auch in der Log Datei an, dass die Verbindung nicht gemacht wird.
    Es tritt also eiN Fehler auf. Bitte helft mir. Bin mit meinem Latein am ende.....


    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ftp.au3>
    #Include <Date.au3>

    [/autoit][autoit][/autoit][autoit]

    $title = GUICreate("FastTransfer", 658, 443, 192, 124)
    $menu1 = GUICtrlCreateMenu("Datei")
    $menu11 = GUICtrlCreateMenuitem("New Connection", $menu1)
    $menu12 = GUICtrlCreateMenuitem("Close Connection", $menu1)
    $menu13 = GUICtrlCreateMenuitem("Servermanager", $menu1)
    $menu14 = GUICtrlCreateMenuitem("Exit", $menu1)
    $menu2 = GUICtrlCreateMenu("Other")
    $menu21 = GUICtrlCreateMenuitem("About", $menu2)
    $server_l = GUICtrlCreateLabel("Server:", 8, 8, 38, 19)
    $username_l = GUICtrlCreateLabel("Username:", 176, 8, 55, 19)
    $password_l = GUICtrlCreateLabel("Password:", 360, 8, 53, 19)
    $server_i = GUICtrlCreateInput("", 48, 8, 121, 21)
    $username_i = GUICtrlCreateInput("", 232, 8, 121, 21)
    $password_i = GUICtrlCreateInput("", 416, 8, 121, 21)
    $connect = GUICtrlCreateButton("Connect", 544, 8, 105, 25, $WS_GROUP)
    $dateieneigen = GUICtrlCreateList("", 8, 80, 641, 136)
    $dateienserver = GUICtrlCreateList("", 8, 230, 641, 136)
    $toolname = "FastTransfer"
    $open = _FTPOpen($toolname)
    $connection = _FTPConnect($open,$server_i,$username_i,$password_i)
    $filelist = _FTPFilesListToArray ($connection)
    $uhrzeit = @Hour & ":" & @Min & ":" & @Sec & " "
    DirCreate("Logs")
    $log = "Logs\" & _NowDate() & ".txt"
    FileOpen($log, 1)
    FileWriteLine($log, $uhrzeit & $toolname & " wurde gestartet. "& @CRLF)
    $server = GUICtrlRead($server_i)

    [/autoit][autoit][/autoit][autoit]

    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $menu14
    _FTPClose($connection)
    FileWriteLine($log, $uhrzeit & $toolname & " wurde beendet. "& @CRLF)
    MSGBOX(1, "Exit", "Vielen Dank, dass sie FastTransfer genutzt haben.")
    Exit

    [/autoit][autoit][/autoit][autoit]

    Case $menu12
    FileWriteLine($log, $uhrzeit & "Verbindung zu " & $connection & " wurde getrennt." & @CRLF)
    _FTPClose($connection)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Case $connect
    _FTPOpen($toolname)
    _FTPConnect($open, $server_i, $username_i, $password_i)
    if(@error = -1) Then
    FileWriteLine($log, $uhrzeit & "Bei der Verbindung zu " & $server & " trat ein Fehler auf." & @CRLF)
    Else
    FileWriteLine($log, $uhrzeit & "Verbindung erfolgreich hergestellt zu " & $server_i & @CRLF)
    EndIf

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($dateienserver, $filelist [$i][0]&"|")
    Next

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Case $GUI_EVENT_CLOSE
    _FTPClose($connection)
    FileWriteLine($log, $uhrzeit & $toolname & " wurde beendet. "& @CRLF)
    Exit

    [/autoit][autoit][/autoit][autoit]

    EndSwitch
    WEnd

    [/autoit]
  • Ich hab sie momentan nicht.
    Deswegen ^^

    Edit:
    Gerade nervt mein Computer..
    Du musst dich noch ein paar Minuten gedulden ^^
    Ich weiß nicht warum gerade nur Fehler aus der FTP.au3 kommen. ;(

  • ohne das Script getestet zu haben würde ich mal behaupten:
    Es liegt am Auslesen!
    Im Moment erstellst du die GUI mit leeren Inputs und weist den Variablen
    sofort den Wert der (immernoch leeren) Inputs zu. Dieser Wert ändert sich
    nicht und führt warscheinlich für Firefox zum Error.
    Du solltest das Auslesen der Inputs in die Case-Bedingung einfügen,
    in der auch Firefox gestartet wird.

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    $server = GUICTRLRead($server_i) ; <--- Dieser Wert is leer und muss erst auf die Buttonfunktion gelegt werden
    $username = GUICTRLRead($username_i); <--- Hier genauso
    $password = GUICTRLRead($password_i); <-- Das gleiche ist auch hier
    $open = _FTPOpen("FastTransfer")
    $connection = _FTPConnect($open,$server,$username,$password); Diese Funktion muss später ausgeführt werden, NACH Case $connect z.b. und NACH den Variablen (oben)
    $filelist = _FTPFilesListTo2DArray ($connection)

    [/autoit] [autoit][/autoit] [autoit][/autoit]


    ich hoffe es ist nicht so unverständlich, es is ja auch schon wieder spät *gähn* ;)

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • Aaaaaaaah......

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ftp.au3>
    #Include <Date.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $title = GUICreate("FastTransfer", 658, 443, 192, 124)
    $menu1 = GUICtrlCreateMenu("Datei")
    $menu11 = GUICtrlCreateMenuitem("New Connection", $menu1)
    $menu12 = GUICtrlCreateMenuitem("Close Connection", $menu1)
    $menu13 = GUICtrlCreateMenuitem("Servermanager", $menu1)
    $menu14 = GUICtrlCreateMenuitem("Exit", $menu1)
    $menu2 = GUICtrlCreateMenu("Other")
    $menu21 = GUICtrlCreateMenuitem("About", $menu2)
    $server_l = GUICtrlCreateLabel("Server:", 8, 8, 38, 19)
    $username_l = GUICtrlCreateLabel("Username:", 176, 8, 55, 19)
    $password_l = GUICtrlCreateLabel("Password:", 360, 8, 53, 19)
    $server_i = GUICtrlCreateInput("", 48, 8, 121, 21)
    $username_i = GUICtrlCreateInput("", 232, 8, 121, 21)
    $password_i = GUICtrlCreateInput("", 416, 8, 121, 21)
    $connect = GUICtrlCreateButton("Connect", 544, 8, 105, 25, $WS_GROUP)
    $dateieneigen = GUICtrlCreateList("", 8, 80, 641, 136)
    $dateienserver = GUICtrlCreateList("", 8, 230, 641, 136)
    $toolname = "FastTransfer"
    $open = _FTPOpen($toolname)
    $uhrzeit = @Hour & ":" & @Min & ":" & @Sec & " "
    DirCreate("Logs")
    $log = "Logs\" & _NowDate() & ".txt"
    FileOpen($log, 1)
    FileWriteLine($log, $uhrzeit & $toolname & " wurde gestartet. "& @CRLF)
    $server = $server_i
    $username = $username_i
    $password = $password_i
    $connection = _FTPConnect($open,$server,$username,$password, 80)
    $filelist = _FTPFilesListToArray ($connection)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $uhrzeit = @Hour & ":" & @Min & ":" & @Sec & " "
    $server = GUICTRLRead($server_i)
    $username = GUICTRLRead($username_i)
    $password = GUICTRLRead($password_i)

    [/autoit] [autoit][/autoit] [autoit]

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $menu14
    _FTPClose($connection)
    FileWriteLine($log, $uhrzeit & $toolname & " wurde beendet. "& @CRLF)
    MSGBOX(1, "Exit", "Vielen Dank, dass sie FastTransfer genutzt haben.")
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case $menu12
    FileWriteLine($log, $uhrzeit & "Verbindung zu " & $connection & " wurde getrennt." & @CRLF)
    _FTPClose($connection)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Case $connect
    _FTPConnect($open,$server,$username,$password)
    _FTPFilesListTo2DArray ($connection)
    if(@error = -1) Then
    FileWriteLine($log, $uhrzeit & "Bei der Verbindung zu " & $server_i & " trat ein Fehler auf." & @CRLF)
    Else
    FileWriteLine($log, $uhrzeit & "Verbindung erfolgreich hergestellt zu " & $server_i & @CRLF)
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Case $GUI_EVENT_CLOSE
    _FTPClose($connection)
    FileWriteLine($log, $uhrzeit & $toolname & " wurde beendet. "& @CRLF)
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]

    Habs so mal probiert, Eintrag in der Log:
    00:18:59 Verbindung erfolgreich hergestellt zu 13

    Die 13 ist noch, weil der leere Wert genommen ist.
    Verbindung wird aber erfolgreich hergestellt....


    Danke euch :)

    // Werde das Thread offen halten, damit ich meine weiteren Fragen hier posten kann und nicht immer ein neues aufmachen muss :)
    //Edit2:

    Nun gibt er mir immer aus, dass die Verbindung hergestellt wurde, obwohl die LogiN Daten falsch sind xD

    Einmal editiert, zuletzt von Rubberducky (22. November 2009 um 00:33)

  • Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ftp.au3>
    #Include <Date.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $title = GUICreate("FastTransfer", 658, 443, 192, 124)
    $menu1 = GUICtrlCreateMenu("Datei")
    $menu11 = GUICtrlCreateMenuitem("New Connection", $menu1)
    $menu12 = GUICtrlCreateMenuitem("Close Connection", $menu1)
    $menu13 = GUICtrlCreateMenuitem("Servermanager", $menu1)
    $menu14 = GUICtrlCreateMenuitem("Exit", $menu1)
    $menu2 = GUICtrlCreateMenu("Other")
    $menu21 = GUICtrlCreateMenuitem("About", $menu2)
    $server_l = GUICtrlCreateLabel("Server:", 8, 8, 38, 19)
    $username_l = GUICtrlCreateLabel("Username:", 176, 8, 55, 19)
    $password_l = GUICtrlCreateLabel("Password:", 360, 8, 53, 19)
    $server_i = GUICtrlCreateInput("", 48, 8, 121, 21)
    $username_i = GUICtrlCreateInput("", 232, 8, 121, 21)
    $password_i = GUICtrlCreateInput("", 416, 8, 121, 21)
    $connect = GUICtrlCreateButton("Connect", 544, 8, 105, 25, $WS_GROUP)
    $dateieneigen = GUICtrlCreateList("", 8, 80, 641, 136)
    $dateienserver = GUICtrlCreateList("", 8, 230, 641, 136)
    $toolname = "FastTransfer"
    $open = _FTPOpen($toolname)
    $server = " "
    $username = " "
    $password = " "
    $uhrzeit = @Hour & ":" & @Min & ":" & @Sec & " "
    $connection = _FTPConnect($open,$server,$username,$password, 80)
    DirCreate("Logs")
    $log = "Logs\" & _NowDate() & ".txt"
    FileOpen($log, 1)
    FileWriteLine($log, $uhrzeit & $toolname & " wurde gestartet. "& @CRLF)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $uhrzeit = @Hour & ":" & @Min & ":" & @Sec & " "
    $server = GUICTRLRead($server_i)
    $username = GUICTRLRead($username_i)
    $password = GUICTRLRead($password_i)

    [/autoit] [autoit][/autoit] [autoit]

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $menu14
    _FTPClose($connection)
    FileWriteLine($log, $uhrzeit & $toolname & " wurde beendet. "& @CRLF)
    MSGBOX(1, "Exit", "Vielen Dank, dass sie FastTransfer genutzt haben.")
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Case $menu12
    FileWriteLine($log, $uhrzeit & "Verbindung zu " & $connection & " wurde getrennt." & @CRLF)
    _FTPClose($connection)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Case $connect
    if($server = "" or $username = "" or $password = "") Then
    MSGBOX(1, "Error", "Server, Username oder Password wurde nicht angegeben.")
    FileWriteLine($log, $uhrzeit & "Server, Username oder Password wurde nicht angegeben." & @CRLF)
    Else
    _FTPConnect($open,$server,$username,$password)
    if(@error) Then
    FileWriteLine($log, $uhrzeit & "Bei der Verbindung zu " & $server & " trat ein Fehler auf." & @CRLF)
    Else
    FileWriteLine($log, $uhrzeit & "Verbindung erfolgreich hergestellt zu " & $server & @CRLF)
    EndIf
    $filelist = _FTPFilesListToArray ($connection)
    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($dateienserver, $filelist [$i][0]&"|")
    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Case $GUI_EVENT_CLOSE
    _FTPClose($connection)
    FileWriteLine($log, $uhrzeit & $toolname & " wurde beendet. "& @CRLF)
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]

    Er loggt sich ein, gibt mir auch bei fehlerhaftem Login die Meldung von wegen nicht erfolgreich aus, jedoch funktioniert das mit dem Filelisttoarray nicht.
    Diesmal bitte keine vollständigen Codes, sondern nur Hilfen und Infos, was daran falsch ist. Möchte ja auch was lernen :)