Mini FTP Client

  • hallo, Ich habe auf dem Gerüst von PokerFace einen mini FTP Client gemacht, um etwas mit der FTP_Ex zu üben, und weil mir Langweilig war :D
    nun will aber die Refresh Funktion nicht so wirklich das machen, was Sie soll, und ich kann und kann den Fehler nicht finden :(

    Spoiler anzeigen
    [autoit]


    #RequireAdmin
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <FTP_Ex.au3>

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

    $serveradresse = "##########"
    $username = "##########"
    $passwort = "##########"

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

    $open = _FTPOpen("dateishare")
    $connection = _FTPConnect($open,$serveradresse,$username,$passwort)
    $filelist = _FTPFilesListTo2DArray ($connection)

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

    ;GUI CODE STARTET HIER;
    $Gui = GUICreate("Dateishare",310,500)
    $header = GUICtrlCreateLabel("Datei auswählen",65,10)
    $liste = GUICtrlCreateList("",20,30,200,450)
    $downloadbutton = GUICtrlCreateButton("Download",235,30,55,50)
    $uploadbutton = GUICtrlCreateButton("Upload",235,100,55,50)
    $filedel = GUICtrlCreateButton("Delete",235,170,55,50)
    $refresh = GUICtrlCreateButton("Refresh",235,240,55,50)
    $rename = GUICtrlCreateButton("Rename",235,310,55,50)

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

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

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

    GUISetState(@SW_SHOW)
    ;GUI CODE ENDET HIER;

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

    while 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    _FTPClose($connection)
    _FTPUnInit()
    Exit
    Case $DownloadButton
    $DownFile = GUICtrlRead ($liste)
    If $DownFile = "" Then
    MsgBox (16, "STOP", "Du musst erst eine Datei auswählen")
    Else
    DirCreate (@ScriptDir&"\Download")
    _FTP_DownloadProgress($connection, @ScriptDir&"\Download\"&$DownFile, "/"&$DownFile)
    EndIf
    Case $uploadbutton
    $UploadPfad = FileOpenDialog("Auswählen",@ScriptDir,"Alle (*.*)")
    If $UploadPfad = "" Then
    MsgBox (0, "Achtung!", "Erst eine Datei auswählen!")
    Else
    $dateinamensplit = StringSplit($UploadPfad,"\")
    $teile = $dateinamensplit[0]
    Global $UploadVorgang = _FTP_UploadProgress($connection, $UploadPfad, "/"&$dateinamensplit[$teile])
    If $UploadVorgang = 1 Then
    MsgBox (64, "Okay", "hochladen erfolgreich")
    Else
    MsgBox (16, "Error", "Aufgrund eines Fehlers wird das Programm beendet!")
    Exit
    EndIf
    EndIf

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

    Case $filedel
    $s_RemoteFile = GUICtrlRead($liste)
    _FTPDelFile($connection, $s_RemoteFile)
    MsgBox(64,"ok","Ok, Die Datei wurde erfolgreich gelöscht")

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

    Case $refresh
    GUICtrlDelete($liste)
    _FTPClose($connection)
    _FTPUnInit()
    $open = ""
    $connection = ""
    $filelist = ""
    $i = ""
    $open = _FTPOpen("Homeworker by Alex")
    $connection = _FTPConnect($open,$serveradresse,$username,$passwort)
    $filelist = _FTPFilesListTo2DArray ($connection)
    $liste = GUICtrlCreateList("",20,30,200,450)
    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i][0]&"|")
    Next

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

    Case $rename
    $s_Existing = GUICtrlRead($liste)
    $s_New = InputBox("Rename","in welchen Namen soll die Datei umbenannt werden?",$s_Existing)
    if Not @error then
    _FTPRenameFile($connection, $s_Existing, $s_New)
    MsgBox(0,"ok","Die Datei wurde umbeannt")
    Else
    MsgBox(64,"oioi","Aktion abgebrochen!")
    EndIf

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

    EndSwitch
    WEnd

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


    Falls sie jemand nciht hat, habe ich die FTP_Ex.au3 angehängt

  • Dummerweise bekomm ich neuerdings immer die Meldung:
    Can not redeclare a constant.
    (Line 22)

    Na toll =D
    Ich habe auch schon dafür ne Refresh Funktion gemacht :)
    Aber ich kann diese jetzt nicht mehr neu schreiben weil die FTP_Ex.au3 bei mir irgendwie nie geht.

    Aber ich kann dir sagen wie es gehen sollte.

    Erstmal die Liste "leer" deklarieren.
    Dann die FTP Verbindung wieder aufbauen.
    Und die Dateien auslesen lassen.
    Diese in den ListView einsetzten.

    [autoit]

    Func Refresh()
    $liste = ""
    $open = _FTPOpen("dateishare")
    $connection = _FTPConnect($open,$serveradresse,$username,$passwort)
    $filelist = _FTPFilesListTo2DArray ($connection)
    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i][0]&"|")
    Next

    [/autoit]

    Edit: Ungefähr so sollte die Refresh Funktion aussehen.

  • Das habe ich ja, ich habe alles leer deklariert und die Liste sogar gelöscht und neu erstellt. aber es läuft trotzdem leider nicht :( *siehe unten*

    Spoiler anzeigen
    [autoit]


    GUICtrlDelete($liste) ; Liste wird gelöscht
    _FTPClose($connection)
    _FTPUnInit()
    $open = "";----------|
    $connection = "";---------|Hier wird alles leerdeklariert
    $filelist = "";---------|
    $i = "";----------------|
    $open = _FTPOpen("dateishare");wie du auch sagtest
    $connection = _FTPConnect($open,$serveradresse,$username,$passwort)
    $filelist = _FTPFilesListTo2DArray ($connection);files "theoretisch" neu auslesen
    $liste = GUICtrlCreateList("",20,30,200,450); die liste wird neu gemacht
    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i][0]&"|")
    Next

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Das Problem ist, daß du aus dem Cache liest statt direkt vom Server.
    Irgendein Flag muss gesetzt werden, ich schau mal....

    [autoit]

    $filelist = _FTPFilesListTo2DArray ($connection,0,0x80000000)

    [/autoit]

    das Flag INTERNET_FLAG_RELOADwars....

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (20. November 2009 um 15:01)