Du bist nicht angemeldet.

Kontrollzentrum

Spenden

Jeder Euro hilft uns, euch zu helfen.

Adsense

Downloads

Stabil: 3.3.8.1 (Q, H)
Stabil: 3.3.10.2 (Q, H)
Beta: 3.3.11.4 (Q, H)
SciTE: 4/5/2014 (Q, H)
Hilfe Deutsch: 12/23/2013 (Q)
Download: OrganizeIncludes (Q)
Stand: 08.04.2014 - 15:42 Uhr

Lieber Besucher, herzlich willkommen bei: AutoIt.de - Das deutsche AutoIt-Forum. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

progandy

Bot-Killer

  • »progandy« ist der Autor dieses Themas

Registrierungsdatum: 7. August 2007

Beruf: Informatik-Student

  • Private Nachricht senden

41

Sonntag, 5. Juli 2009, 13:57

Welche AutoIt-Version? Welche Includes? Hin und wieder werden eben neue Konstanten in die Standard-Includes aufgenommen, die man dann in den UDFs entfernen muss.
In der Beta 3.3.1.1 ist die UDF übrigens unter dem Namen FTPEx.au3 enthalten. Die Funktionen haben aber alle Unterstriche bekommen (z.B. _FTP_Open statt _FTPOpen).

"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"
Antworten auf Hilfegesuche per PN werden nicht garantiert.

Registrierungsdatum: 10. Juni 2009

Wohnort: Nachrodt-Wiblingwerde

Beruf: Azubi -> Fachkraft für Lagerlogistik

  • Private Nachricht senden

42

Sonntag, 5. Juli 2009, 14:32

Scite Ver. 1.78
3.3.0.0 ist die AutoIt version

an meinen Includes liegt es nicht da ich auch schon alle testweise weggehaun hab (die von mir) und der fehler ist der selbe....

progandy

Bot-Killer

  • »progandy« ist der Autor dieses Themas

Registrierungsdatum: 7. August 2007

Beruf: Informatik-Student

  • Private Nachricht senden

43

Sonntag, 5. Juli 2009, 14:59

Ah, OK in 3.3.0.0 sid die KOnstanten in der Constants.au3 drin. Also lösche sie aus der FTP_Ex ;)

"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"
Antworten auf Hilfegesuche per PN werden nicht garantiert.

Registrierungsdatum: 10. Juni 2009

Wohnort: Nachrodt-Wiblingwerde

Beruf: Azubi -> Fachkraft für Lagerlogistik

  • Private Nachricht senden

44

Montag, 6. Juli 2009, 01:13

komisch...weil ich Scite erst vor ein paar wochen (1 oder 2) heruntergeladen habe... o.o
eigendlich müsste ich dann die 3.3.1.0 haben oder nicht?

und ja ich habe auf die beta umgestellt...

Registrierungsdatum: 9. November 2008

  • Private Nachricht senden

45

Samstag, 1. August 2009, 20:41

also ich komm mit dem ftp immer noch nicht klar

ich hab ordner in denen files sind

AutoIt-Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <Array.au3> 
#include <FTP_Ex.au3> 


$serv = "xxx" 
$user = "xxx" 
$pass = "xxx" 

$open = _FTPOpen("TEST") 
$Conn = _FTPConnect($open,$serv,$user,$pass,1) 

$folders=_FTPFilesListToArray($Conn,1) 
_ArrayDisplay($folders) 

;Folderwalk 
for $i=3 to $folders[0] ;Bei meinem ftp server sind die ersten 2 Ordner unsichtbar und unlöschbar deswegen fang ich bei 3 an 
_FTPSetCurrentDir($Conn, $folders[$i]) 
$Files=_FTPFilesListToArray($Conn,2) 
_ArrayDisplay($Files) 
Next

und damit bekomme ich erst alle ordner und danach 10 mal die selben files nur aus dem ersten ordner angezeigt

was hab ich falsch gemacht?

Alina

Skøre Noodle / PowerUserin

Registrierungsdatum: 15. April 2007

Wohnort: Grenzgebiet DK / D

  • Private Nachricht senden

46

Sonntag, 2. August 2009, 11:26

Hallo zusammen.

Also ich komme, wenn es nur ein oder zwei Dateien sind die ich mal hoch laden möchte mit folgendem Script sehr gut klar. Nur wenn es denn mehr Dateien sind, dann habe ich das Problem, das es hiermit nicht gerade sehr schnell geht. Hier wäre eine Anpassung evtl. notwendig.

Aber teste mal ob damit evtl. funktioniert.

  Spoiler Spoiler

AutoIt-Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#include<Misc.au3>
#include<GUIConstantsEx.au3>

$server = "home.******.dk"
$user = "*****************"
$password = "**************" ; !!!!!!!!!!!!!!!!!!

; Datei 1 hoch laden
ProgressOn("Upload","Uploading file [Cancel with F8]")
$x = _FTP_Upload( $server, $user, $password, 'public_html/testdatei.jpg' , 'E:\testdatei.jpg') ; !!!!!!!!!!!!!!!!!!
ProgressSet(100,"Return: " & $x & @CRLF & "Error: " & @error)
Sleep(2000)
ProgressOff()

; Datei 2 hoch laden
ProgressOn("Upload","Uploading file [Cancel with F8]")
$x = _FTP_Upload( $server, $user, $password, 'public_html/testdatei2.jpg' , 'E:\testdatei2.jpg') ; !!!!!!!!!!!!!!!!!!
ProgressSet(100,"Return: " & $x & @CRLF & "Error: " & @error)
Sleep(2000)
ProgressOff()


Func _UpdateParts($percent)
ProgressSet($percent,$percent &"%")
If _IsPressed("77") Then Return 0
;~ Switch GUIGetMsg()
;~    Case $GUI_EVENT_CLOSE
;~       Return -1 ; In Upload einn Abbruch einbauen, der negative Werte als  Return angibt :) dann im Haupt-Programm testen.
;~   Case $Cancel
;~      Return 0 ; bei 0 Abbruch
;~ EndSwitch
Return 1 ; bei 1 Fortsetzten
Endfunc


Func _FTP_Upload( $server, $user, $password, $file,$FileLocal ,$FunctionToCall="")
#Region connect
Local $aiWinInetDLL = DllOpen("wininet.dll"), $ai_InternetCloseHandle,$parts
Local $ai_InternetOpen = DllCall($aiWinInetDLL, 'long', 'InternetOpen', 'str', 'PicTransfer', 'long', 1, 'str', '', 'str', '', 'long', 0)
If @error Or $ai_InternetOpen[0] = 0 Then
DllClose($aiWinInetDLL)
SetError(-1)
Return 0
EndIf

Local $i_ServerPort = 0, $l_Service = 1, $l_Context = 0, $l_InternetSession = $ai_InternetOpen[0]
Local $ai_InternetConnect = DllCall($aiWinInetDLL , 'long', 'InternetConnect', 'long', $l_InternetSession, 'str', $server, 'int', $i_ServerPort, 'str', $user, 'str', $password, 'long', $l_Service, 'long', 0x08000000, 'long', $l_Context)
If @error Or $ai_InternetConnect[0] = 0 Then
    $ai_InternetCloseHandle = DllCall($aiWinInetDLL , 'int', 'InternetCloseHandle', 'long', $ai_InternetOpen[0])
DllClose($aiWinInetDLL)
SetError(-2)
Return 0
EndIf

Local $ai_ftpopenfile = DllCall( $aiWinInetDLL , 'long', 'FtpOpenFile', 'long', $ai_InternetConnect[0], 'str', $file, 'dword', 0x40000000, 'dword', 0x02, 'dword', 0 )
If @error Or $ai_ftpopenfile[0] = 0 Then
    $ai_InternetCloseHandle = DllCall($aiWinInetDLL , 'int', 'InternetCloseHandle', 'long', $ai_InternetConnect[0])
    $ai_InternetCloseHandle = DllCall($aiWinInetDLL , 'int', 'InternetCloseHandle', 'long', $ai_InternetOpen[0])
    DllClose($aiWinInetDLL)
SetError(-3)
Return 0
EndIf
#EndRegion

#Region DataSend
Local $fhandle = FileOpen($FileLocal,16)
;~ $buffer = FileRead( $fhandle )

$glen = FileGetSize($FileLocal)
$last = Mod($glen,100)
$x = ($glen-$last)/100
;~ If $x = 0 Then $x = 1
If $x = 0 Then
    $x = $last
    $parts = 1
ElseIf $last > 0 Then
    $parts = 101
Else 
    $parts = 100
EndIf
$buffer = DllStructCreate("byte[" & $x & "]")

Dim $out, $i = 0, $result
For $i = 1 To $parts
    Select
        Case $i = 101 And $last > 0
            $x = $last
    EndSelect
    DllStructSetData($buffer,1,FileRead($fhandle,$x))
    
Local $ai_ftpwrite = DllCall( $aiWinInetDLL , 'int', 'InternetWriteFile', 'long', $ai_ftpopenfile[0], 'ptr', DllStructGetPtr($buffer), 'int', $x, 'dword*', $out )
$result += $ai_ftpwrite[4]
If @error Or $ai_ftpwrite[0] = 0 Then
    $ai_InternetCloseHandle = DllCall($aiWinInetDLL , 'int', 'InternetCloseHandle', 'long', $ai_ftpopenfile[0])
    $ai_InternetCloseHandle = DllCall($aiWinInetDLL , 'int', 'InternetCloseHandle', 'long', $ai_InternetConnect[0])
    $ai_InternetCloseHandle = DllCall($aiWinInetDLL , 'int', 'InternetCloseHandle', 'long', $ai_InternetOpen[0])
    FileClose($fhandle)
    DllClose($aiWinInetDLL)
    SetError(-4)
    Return 0
EndIf

Switch $FunctionToCall
    Case ""
        ToolTip( $i )
    Case Else
        $Ret = Call($FunctionToCall,$i)
        Select
            Case $Ret <= 0
                $ai_InternetCloseHandle = DllCall($aiWinInetDLL , 'int', 'InternetCloseHandle', 'long', $ai_ftpopenfile[0])
                DllCall($aiWinInetDLL, 'int', 'FtpDeleteFile', 'long', $ai_InternetConnect[0], 'str', $file)
                $ai_InternetCloseHandle = DllCall($aiWinInetDLL , 'int', 'InternetCloseHandle', 'long', $ai_InternetConnect[0])
                $ai_InternetCloseHandle = DllCall($aiWinInetDLL , 'int', 'InternetCloseHandle', 'long', $ai_InternetOpen[0])
                FileClose($fhandle)
                DllClose($aiWinInetDLL)
                SetError(-6)
                Return $Ret
        EndSelect
EndSwitch
Sleep( 20 )

Next

FileClose($fhandle)
#EndRegion

#region disconnect
$ai_InternetCloseHandle = DllCall($aiWinInetDLL , 'int', 'InternetCloseHandle', 'long', $ai_ftpopenfile[0])
$ai_InternetCloseHandle = DllCall($aiWinInetDLL , 'int', 'InternetCloseHandle', 'long', $ai_InternetConnect[0])
$ai_InternetCloseHandle = DllCall($aiWinInetDLL , 'int', 'InternetCloseHandle', 'long', $ai_InternetOpen[0])
If @error Or $ai_InternetCloseHandle[0] = 0 Then
    DllClose($aiWinInetDLL)
SetError(-5)
Return 0
EndIf
#EndRegion
DllClose($aiWinInetDLL)
Return 1
EndFunc
Lieben Gruß,

Alina.


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ich verwendet derzeitig die AutoIt-Version 3.3.10.2 und die
Beta 3.3.11.0. Ich habe die Deutsche Hilfe auf meinem PC und
OrganizeIncludes ist beim Scripten mein bester Freund.

Okay? ;)

progandy

Bot-Killer

  • »progandy« ist der Autor dieses Themas

Registrierungsdatum: 7. August 2007

Beruf: Informatik-Student

  • Private Nachricht senden

47

Sonntag, 2. August 2009, 11:26

Das:
setze mal den 3. Parameter der FileList-Funktion auf $INTERNET_FLAG_RELOAD = 0x80000000 ;)

AutoIt-Quellcode

1
2
$INTERNET_FLAG_RELOAD = 0x80000000
    $array = _FTPFilesListTo2DArray($FTPServer,0, $INTERNET_FLAG_RELOAD)

"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"
Antworten auf Hilfegesuche per PN werden nicht garantiert.

scu

User

Registrierungsdatum: 13. Oktober 2009

  • Private Nachricht senden

48

Dienstag, 13. Oktober 2009, 01:44

_FTPDelFile

Ich habe ein Problem mit der Funktion _FTPDelFile.
Wenn die Datei auf dem FTP 0 Byte groß ist, dann wird die Datei nicht gelöscht. Dateien die größer als 0 Byte sind, werden ganz normal gelöscht.

Kann mir jemand weiterhelfen? Die Funktion "FtpDeleteFile" die über die UDF aufgerufen wird, hat nur 2 Parameter und keine Flags mit denen man was erreichen könnte.

progandy

Bot-Killer

  • »progandy« ist der Autor dieses Themas

Registrierungsdatum: 7. August 2007

Beruf: Informatik-Student

  • Private Nachricht senden

49

Dienstag, 13. Oktober 2009, 13:39

RE: _FTPDelFile

Ich habe ein Problem mit der Funktion _FTPDelFile.
Wenn die Datei auf dem FTP 0 Byte groß ist, dann wird die Datei nicht gelöscht. Dateien die größer als 0 Byte sind, werden ganz normal gelöscht.

Kann mir jemand weiterhelfen? Die Funktion "FtpDeleteFile" die über die UDF aufgerufen wird, hat nur 2 Parameter und keine Flags mit denen man was erreichen könnte.

Da kann man nichts machen. Auch die Windows-Funktion hat keine weiteren Parameter. Als Workaround kannst du ja eine 1byte große Datei mit dem gleichen Namen hochladen und anschließend löschen ;)

"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"
Antworten auf Hilfegesuche per PN werden nicht garantiert.

scu

User

Registrierungsdatum: 13. Oktober 2009

  • Private Nachricht senden

50

Mittwoch, 14. Oktober 2009, 03:24

RE: RE: _FTPDelFile

Da kann man nichts machen. Auch die Windows-Funktion hat keine weiteren Parameter. Als Workaround kannst du ja eine 1byte große Datei mit dem gleichen Namen hochladen und anschließend löschen ;)

Hmm... Daran hatte ich bereits selbst gedacht, aber bin davon ausgegangen es geht eleganter. Naja, besser als keine Lösung. Danke für den Hinweis.

Bei der Durchführung des obigen Workarounds bin ich auf ein neues Problem gestoßen:

Auf meinem FTP liegen 5 ZIP-Dateien.
file1: 142 bytes
file2: 142 bytes
file3: 0 bytes
file4: 142 bytes
file5: 142 bytes

Eine Schleife die lediglich die Größen in die Console schreibt gibt folgendes aus:
filesize1: 142
filesize2: 142
filesize3: 0
filesize4: -1
filesize5: -1

Der Quellcode sieht so aus:

Quellcode

1
2
3
4
5
6
$downloading_file_max = $filelist[0]

For $i = 1 to $downloading_file_max
	Local $filesize = _FTPGetFileSize($connection, $settings_ftp_path & $filelist[$i])
	ConsoleWriteError("filesize" & $i & ": " & $filesize & @CR)
Next


Der Fehler liegt in der Funktion _FTPGetFileSize. Wenn der Fall Eintritt, dass die Datei 0 bytes groß ist, wird der Handle nicht geschlossen.

progandy

Bot-Killer

  • »progandy« ist der Autor dieses Themas

Registrierungsdatum: 7. August 2007

Beruf: Informatik-Student

  • Private Nachricht senden

51

Mittwoch, 14. Oktober 2009, 13:28

Bitteschön ;)

  Spoiler Spoiler

AutoIt-Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
;===============================================================================
;
; Function Name:    _FTPGetFileSize()
; Description:      Gets filesize of a file on the FTP server.
; Parameter(s):     $l_FTPSession    - The Long from _FTPConnect()
;                   $s_FileName     - The file name.
; Requirement(s):   DllCall, wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        J.o.a.c.h.i.m. d.e. K.o.n.i.n.g.
; Modified:         Prog@ndy
;
;===============================================================================

Func _FTPGetFileSize($l_FTPSession, $s_FileName)

    Local $ai_FTPGetSizeHandle = DllCall($GLOBAL_FTP_WININETHANDLE, 'ptr', 'FtpOpenFile', 'ptr', $l_FTPSession, 'str', $s_FileName, 'long', 0x80000000, 'long', 0x04000002, 'long', 0)
    If @error Or $ai_FTPGetSizeHandle[0] = 0 Then Return SetError(1,0,-1)
    Local $ai_FTPGetFileSize = DllCall($GLOBAL_FTP_WININETHANDLE, 'dword', 'FtpGetFileSize', 'long', $ai_FTPGetSizeHandle[0], 'dword*', 0)
    If @error Then
        DllCall($GLOBAL_FTP_WININETHANDLE, 'int', 'InternetCloseHandle', 'ptr', $ai_FTPGetSizeHandle[0])
        Return SetError(2,0,-1)
    EndIf
    DllCall($GLOBAL_FTP_WININETHANDLE, 'int', 'InternetCloseHandle', 'ptr', $ai_FTPGetSizeHandle[0])

;~     Return $ai_FTPGetFileSize[0]
    Return BitOR(BitShift($ai_FTPGetFileSize[2], -32), BitAND($ai_FTPGetFileSize[0], 0xFFFFFFFF))

EndFunc   ;==>_FTPGetFileSize

"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"
Antworten auf Hilfegesuche per PN werden nicht garantiert.

Registrierungsdatum: 24. Oktober 2009

  • Private Nachricht senden

52

Sonntag, 10. Januar 2010, 13:29

failed!

progandy

Bot-Killer

  • »progandy« ist der Autor dieses Themas

Registrierungsdatum: 7. August 2007

Beruf: Informatik-Student

  • Private Nachricht senden

53

Sonntag, 10. Januar 2010, 14:40

failed!

Äh, was? Hast du ein Problem?
Ach, gefunden ...

evtl meinst du die FTP_ex.au3 aber die hat auch nur fehler und ist kacke gebaut, massig undecleared vars sowie
consts diei verändert werden(failed^^)

Wozu steht ganz dick und fett in ROT, dass die UDF für 3.3.2.0 schon bei AutoIt dabei ist? Meine FTP_Ex ist für AutoIt vor 3.3.2.0, also lies erst, bevor du dich beklagst...

"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"
Antworten auf Hilfegesuche per PN werden nicht garantiert.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »progandy« (10. Januar 2010, 14:47)


Registrierungsdatum: 6. Mai 2010

  • Private Nachricht senden

54

Donnerstag, 6. Mai 2010, 10:23

hi, ich wollte mich nu auch mal an autoit ranwagen und mir schwebt da auch schon was vor, was ich damit anstellen könnte: zugang zu einem ftp-server.
doch nun meine frage:
wie muss ich die datei bearbeiten, damit das klappt ?
wo müssen da genau die konfigurationsparameter rein, damit eine verbindung hergestellt wird ?
wichtig in meine fall wäre nur der download.

Kann mir jemand kurz umreissen, wie ich da einsteige ?

Vielen Dank

progandy

Bot-Killer

  • »progandy« ist der Autor dieses Themas

Registrierungsdatum: 7. August 2007

Beruf: Informatik-Student

  • Private Nachricht senden

55

Donnerstag, 6. Mai 2010, 11:58

Bei der aktuellen AutoIt-Version sind bereits FTP-Funktionen dabei.
Beispiele gibt es hier: http://autoit.de/index.php?page=Thread&p…8200#post138200

"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"
Antworten auf Hilfegesuche per PN werden nicht garantiert.

autoit.de Webutation