Frage: FTP.au3

  • Hi,

    das kommt ja in einem DLL Aufruf vor. Dort ist es einfach nur ein Stringparameter, der den Typ einer Variablen festlegt, die an die DLL-Funktion übergeben wird. Da AutoIt für die Basistypen nicht streng typisiert ist (völlig egal ob ich int, long, double, float, string in einer Variablen speichere), aber bei einem DLL Aufruf die Anzahl der Bytes, die über den Stack übergeben werden, bekannt sein muss, bieten diese Parameter beim Aufruf einer DLL-Funktion die Möglichkeit der expliziten Typdeklarierung.

    Oder so ähnlich ;)

    Gruß,

    TrueMu

  • ich galub sie meint das:

    Spoiler anzeigen

    Parameter(s): $l_FTPSession - The Long from _FTPConnect()

    wobei ich jetz au nicht wüsste wie ich die FTPSEssion dann difinier.

    vllt mit $ai_InternetConnect ?

  • Das ist einfach nur der Rückgabewert von _FTPConnect, also:

    $l_FTPSession = _FTPConnect()

    Wenn der Connect erfolgreich ist, ist $l_FTPSession einfach ein Identifier, deshalb long.

    Gruß,

    TrueMu

  • In Ordnung. Danke. Noch eine letzte Fareg:

    Wenn ich die Funktion benutze, also zum Beispiel _FTPConnect(), reicht es, wenn ich einfach nur

    _FTPConnect() schreibe oder muss ich alles was da steht in die Klammer rein tun?

  • [autoit]

    Func _FTPConnect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_ServerPort = 0, $l_Service = 1, $l_Flags = 0, $l_Context = 0)

    [/autoit]


    $l_internetSession bekommst du ja von FTP_open()
    den servernamen usernamen und das password musst du eintragen! ansonsten = error
    allerdings ist hierbei der port, der service und die flags sowie der context optional!

    MfG azu

  • Ich hab mir das ganze mal angeschaut. Ich bekomms au nich hin...

    Spoiler anzeigen
    [autoit]

    ;==============================================================================
    ;Upload
    ;==============================================================================

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

    ;FTP Open
    ;==============================================================================

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

    $s_Agent = "Upload"
    $l_AccessType = 1
    $s_ProxyName = ''
    $s_ProxyBypass = ''
    $l_Flags = 0

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

    Func _FTPOpen($s_Agent)


    Local $ai_InternetOpen = DllCall('wininet.dll', 'long', 'InternetOpen', 'str', $s_Agent, 'long', $l_AccessType, 'str', $s_ProxyName, 'str', $s_ProxyBypass, 'long', $l_Flags)
    If @error OR $ai_InternetOpen[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    Return $ai_InternetOpen[0]

    EndFunc ;==> _FTPOpen()

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

    ;FTP Connect
    ;==============================================================================
    $Open = _FTPOpen($s_Agent)
    $l_InternetSession = $Open ;The Long from _FTPOpen()
    $s_ServerName = "musterserver.de"
    $s_Username = "muster"
    $s_Password = "server"
    $i_ServerPort = 0 ;Server port ( 0 is default (21) )
    $l_Service = 1
    $l_Flags = 0
    $l_Context = 0

    Func _FTPConnect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_ServerPort, $l_Service, $l_Flags, $l_Context)

    Local $ai_InternetConnect = DllCall('wininet.dll', 'long', 'InternetConnect', 'long', $l_InternetSession, 'str', $s_ServerName, 'int', $i_ServerPort, 'str', $s_Username, 'str', $s_Password, 'long', $l_Service, 'long', $l_Flags, 'long', $l_Context)
    If @error OR $ai_InternetConnect[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    Return $ai_InternetConnect[0]

    EndFunc ;==> _FTPConnect()

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

    ;FTP FileUpload
    ;================================================================================
    $Conn = _FTPConnect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_ServerPort, $l_Service, $l_Flags, $l_Context)
    $l_FTPSession = $Conn ;The Long from _FTPConnect()
    $s_LocalFile = @ScriptDir & "\logisch.html"
    $s_RemoteFile = "/logisch.html" ;The remote Location for the file.
    $l_Flags = 0
    $l_Context = 0

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

    Func _FTPPutFile($l_FTPSession, $s_LocalFile, $s_RemoteFile, $l_Flags, $l_Context)

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

    Local $ai_FTPPutFile = DllCall('wininet.dll', 'int', 'FtpPutFile', 'long', $l_FTPSession, 'str', $s_LocalFile, 'str', $s_RemoteFile, 'long', $l_Flags, 'long', $l_Context)
    If @error OR $ai_FTPPutFile[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    Return $ai_FTPPutFile[0]

    EndFunc ;==> _FTPPutFile()

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

    ;FTP Close
    ;===================================================================================

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

    Func _FTPClose($l_InternetSession)

    Local $ai_InternetCloseHandle = DllCall('wininet.dll', 'int', 'InternetCloseHandle', 'long', $l_InternetSession)
    If @error OR $ai_InternetCloseHandle[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    Return $ai_InternetCloseHandle[0]

    EndFunc ;==> _FTPClose()

    [/autoit]


    keine fehlermeldung,nichts. aber die file wird nicht geuploaded...
    Edit: Was ist denn Proxybypass bzw was muss man da eingeben?

    Einmal editiert, zuletzt von Dönn3y (25. März 2008 um 13:33)

  • Danke für die Antworten. Ich habs mal versucht aber irgendwie nicht hingekriegt.

    Außerdem plagt mich grad auch das selbe Problem wie Dönn3y.

    Kann da niemand helfen?