_FTPReadFile($ftpfile, 256) Funktioniert nicht kompiliert, sondern nur im Editor

  • Und wieder mal ein Problem:
    Das folgende Skript funktioniert nur im Editor, aber nicht kompiliert.

    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile=ftp.exe
    #AutoIt3Wrapper_Run_Tidy=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <String.au3>
    #include <FTP_Ex.au3>
    $title = "Titel"
    $value = 1
    $file = "ftp.txt"
    Global $serv = "xxx"
    Global $user = "xxx"
    Global $pass = "xxx"
    Global $ftp = _FTPOpen("ftp")
    Global $FTPServer = _FTPConnect($ftp, $serv, $user, $pass, 1)
    $ftpfile = _FTPOpenFile($FTPServer, "iweimhjbei6x1ho")
    $ftpfileread = _FTPReadFile($ftpfile, 256)
    $ftpfileread = BinaryToString($ftpfileread)
    _FTPCloseFile($ftpfile)
    MsgBox(0, $title, $ftpfileread)
    If $value = 1 Then
    If StringInStr($ftpfileread, "4hx17ihqgupg5ld") = 0 Then
    FileWrite($file, 'StringInStr($ftpfileread3, "4hx17ihqgupg5ld") = 0')
    Exit
    ElseIf StringInStr($ftpfileread, "4hx17ihqgupg5ld") > 0 Then
    FileWrite($file, 'StringInStr($ftpfileread3, "4hx17ihqgupg5ld") > 0')
    Else
    FileWrite($file, "Else")
    Exit
    EndIf
    EndIf
    _FTPClose($FTPServer)
    _FTPClose($ftp)

    [/autoit]

    Das heißt, im Editor bekomme ich als MsgBox den ganzen Inhalt, kompiliert bekomme ich nichts.

    Einmal editiert, zuletzt von Franzi (24. Dezember 2009 um 15:53)

  • Kann mir keiner sagen, warum es nicht funktioniert?
    .au3 funktioniert, .a3x funktioniert, .exe funktioniert nicht
    alle möglichen Packoptionen durchprobiert

    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile_type=a3x
    #AutoIt3Wrapper_Run_AU3Check=n
    #AutoIt3Wrapper_Tidy_Stop_OnError=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <FTP_Ex.au3>
    $title = "Titel"
    Global $serv = "xxx"
    Global $user = "xxx"
    Global $pass = "xxx"
    Global $ftp = _FTPOpen("ftp")
    Global $FTPServer = _FTPConnect($ftp, $serv, $user, $pass)
    $ftpfile = _FTPOpenFile($FTPServer, "iweimhjbei6x1ho")
    If @error Then
    MsgBox(0, "", "1 " & @error)
    EndIf
    $ftpfileread = _FTPReadFile($ftpfile, 256)
    If @error Then
    MsgBox(0, "", "2 " & @error)

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

    EndIf
    $ftpfileread = BinaryToString($ftpfileread)
    If @error Then
    MsgBox(0, "", "3 " & @error)
    EndIf
    _FTPCloseFile($ftpfile)
    MsgBox(0, $ftpfileread, @error)
    _FTPClose($FTPServer)
    _FTPClose($ftp)

    [/autoit]
  • Da in der neuen AutoIt-Version die FTPEx.au3 (ohne Unterstrich) mit drin ist, versuch mal, diese Befehle dafür zu verwenden ;) Statt _FTP... heißen die FUnktionen _FTP_... (zusätzlicher Unterstrich)

  • Funpic ist mein Hoster.
    Kann jemand mal testen, ob das bei euch auch so ist? Bitte, das Ganze verwirrt mich total.

    Ich habe FTPEx.au3 und FTP_Ex.au3 in meinem Includeverzeichnis. Die einzige Veränderung ist, das jetzt die Funktionsnamen schön bunt sind.
    Und das Lustige jetzt: Mit FTP_Ex.au3 funktioniert das Skript im Editor nicht, dafür aber als .exe. ;) Umgekehrt funktioniert FTPEx.au3 im Editor, aber nicht als .exe. (Jeweils mit den jeweiligen Funktionen...)

    :rock::rock::rock:

    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Run_AU3Check=n
    #AutoIt3Wrapper_Tidy_Stop_OnError=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <FTPEx.au3>
    $title = "Titel"
    Global $serv = "xxx"
    Global $user = "xxx"
    Global $pass = "xxx"
    Global $ftp = _FTP_Open("ftp")
    Global $FTPServer = _FTP_Connect($ftp, $serv, $user, $pass)
    $ftpfile = _FTP_FileOpen($FTPServer, "iweimhjbei6x1ho")
    If @error Then
    MsgBox(0, "", "1 " & @error)
    EndIf
    $ftpfileread = _FTP_FileRead($ftpfile, 30)
    If @error Then
    MsgBox(0, "", "2 " & @error)

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

    EndIf
    $ftpfileread = BinaryToString($ftpfileread)
    If @error Then
    MsgBox(0, "", "3 " & @error)
    EndIf
    ;~ _FTP_FileClose($ftpfile)
    MsgBox(0, $ftpfileread, @error)
    ;~ _FTP_Close($FTPServer)
    ;~ _FTP_Close($ftp)

    [/autoit]

    Edit:
    Ach ja, der Error kommt immer von
    $ftpfile = _FTP_FileOpen($FTPServer, "iweimhjbei6x1ho")
    oder
    $ftpfile = _FTPOpenFile($FTPServer, "iweimhjbei6x1ho")

    Msgbox spuckt -1 aus.

  • Gib bei dem Dateiname einen Slash mit an ;)

    [autoit]

    $ftpfile = _FTP_FileOpen($FTPServer, "/diedatei.ext")

    [/autoit]
  • Es bleibt bei den gleichen Ergebnissen:

    Spoiler anzeigen

    Und das Lustige jetzt: Mit FTP_Ex.au3 funktioniert das Skript im Editor nicht, dafür aber als .exe. ;) Umgekehrt funktioniert FTPEx.au3 im Editor, aber nicht als .exe. (Jeweils mit den jeweiligen Funktionen...)


    Man kann also den Slash weglassen.

    Kannst du das mal selbst ausprobieren? Wenn nötig stelle ich meinen FTP Zugang zur Verfügung.

  • Das ist schon komisch. Bei mir funktioniert es beim ersten Start nicht, beim zweiten Start dann aber. Ich muss also die au3 starten, den Fehler abwarten und dann nochmal starten. Dann funktioniert es, bei der exe ist es das gleiche. Das liegt wohl am FTP von funpic, mit FireFTP funktoinirt oft der erste Versuch auch nicht.

  • Also ich schiebe nicht die Schuld auf funpic, ich werde es mal mit einem anderen FTP Anbieter ausprobieren.
    Mit dem einen gehts in Scite, mit dem anderen gehts gepackt.

  • Also ich schiebe nicht die Schuld auf funpic, ich werde es mal mit einem anderen FTP Anbieter ausprobieren.
    Mit dem einen gehts in Scite, mit dem anderen gehts gepackt.

    Dann kann ich dir nicht mehr helfen. Bei mir funktioniert zumindest die FTPEx der 3.3.2.0 als exe und au3.