| |
|
|
Jörg Sellmeyer | Hat es eigentlich einen bestimmten Grund, daß diese Funktion direkt in eine Datei schreibt und nicht z.B. in die Listboxliste oder einen Bereich? Wenn das systembedingt so ist: gibt es eine Möglichkeit das in Liste/Bereich umzuleiten, ohne vorher auf die Platte zu schreiben? |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 21.09.2008 ▲ |
|
|
|
|
| ftp . listDir hat noch mindestens ein anderes Problem, die Antworten weichen im Format von Server zu Server ab, der Versuch die Ausgaben zu standardisieren ist imho gescheitert.
Eine Liste geht damit imho deshalb nicht, weil keine Liste zurückgegeben wird, sondern nur ein Kompletttext. Also eher Bereichsvariable statt Datei.
Ich hatte mit Rolf eine ftp include geschrieben, wenn ich mich recht erinnere hatte ich dort eine andere Verzeichniseinlesemethode, diese gibt die Dateien auch einzeln zurück. Vielleicht hat Rolf das noch. |
|
|
| |
|
|
|
Rolf Koch | Leider finde ich die Inc auch nicht mehr. Aber vielleicht irgendwo als Backup. |
|
|
| |
|
|
|
Jörg Sellmeyer | Bereichsvariable wäre ja schon klasse. Damit ist es dann ja leicht, den Inhalt in eine Liste zu bekommen. Daß da nicht ein einheitlicher Standard entwickelt wurde, finde ich schon recht seltsam. Wie schafft es denn dann z.B. Filezilla, die Daten korrekt anzugeben. Oder ist der Autor gut im Vorausplanen und Schreiben von Algorithmen, die auf unterschiedlichste Situationen passen? |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 21.09.2008 ▲ |
|
|
|
|
Rolf Koch | Ich glaub ich habs gefunden - halt nicht als inc. Ist es doch iF, oder? KompilierenMarkierenSeparieren {$i}
declare dllhdl&,ihdl&,chdl&,dhdl&,ftpfile$,nhdl&
declare ftppfad$,listbox1&,closeftp&,ENDE%,anzdat&
cls
declare s$,do&
s$="FTPSESSIONz"
usermessages 16
cls
listbox1&:=createsortedlistbox(%hwnd,"",5,5,(width(%hwnd)-10),(Height(%hwnd)-10))
dllhdl&:=usedll("wininet")
def InternetOpen(5) !"wininet","InternetOpenA"
def InternetClose(1) !"wininet","InternetCloseHandle"
def InternetConnect(8) !"wininet","InternetConnectA"
def FtpFindFirstFile(5) !"wininet","FtpFindFirstFileA"
Def FtpFindNextFile(2) !"wininet","InternetFindNextFileA"
Def GetLastError(0) !"KERNEL32","GetLastError"
def FtpSetCurrentDirectory(2) !"wininet","FtpSetCurrentDirectoryA"
ihdl&:=InternetOpen(addr(s$),0,0,0,0)
declare server$,user$,pwdd$,mem#,data#
Hier Daten (das z muss unbedingt vorhanden bleiben!)***********
server$:=""+"z" SERVER zum Beispiel rokosoft.de
user$:=""+"z" Username
pwdd$:=""+"z" Passwort
ftppfad$:="" Startpfad
****************************************************************
dim mem#,4
long mem#,0:=12345
dim data#,318
clear data#
chdl&:=InternetConnect(ihdl&,addr(server$),21,addr(user$),addr(pwdd$), 1,0, 0)
settext %hwnd,str$(chdl&)
FtpSetCurrentDirectory(chdl&,addr(ftppfad$))
Addstring(listbox1&,"Internet Handle: "+ str$(ihdl&))
Addstring(listbox1&,"Connect Handle: "+ str$(chdl&))
Addstring(listbox1&,"Taste drücken")
sendmessage(listbox1&,$0184,0,0)
dhdl&:=FtpFindFirstFile(chdl&,0,addr(data#),2147483648,0)
do&:=1
while do&
if do&
ftpfile$:=if(long(data#,0)==16," >","")+string$(data#,44)
addstring(listbox1&,ftpfile$)
endif
anzdat&+
do&:=FtpFindNextFile(dhdl&,data#)
endwhile
settext %hwnd,"Anzahl Dateien (incl. Ornder) "+str$(anzdat&)
WHILENOT ENDE%
WAITINPUT
IF %UMESSAGE = 16
ENDE%=1
ENDIF
WEND
sendmessage(listbox1&,$0184,0,0)
Closeftp&=InternetClose(chdl&)
//messagebox("FTP SESSION RETURN = "+str$(closeftp&),"FTP ENDE",0)
dispose mem#
dispose data#
|
|
|
| |
|
|
|
Jörg Sellmeyer | Funktioniert super!!
Jetzt müßte nur FTP("Connect",...) ein Handle zurückliefern und nicht nur 1 für den Erfolg, dann kann man die Verbindung schön bequem mit Profan herstellen und das Auslesen mit API erledingen. |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 21.09.2008 ▲ |
|
|
|