Seite 2 von 3

Verfasst: 03.02.2007 15:20
von mk-soft
Nachtrag.

Man sollte nicht vergessen FTPClose(hConnect) auszuführen da sonst irgendwann man keine Verbindung aufbauen kann. Zu viele Verbindungen von den gleichen User verhindert der Server.

Code: Alles auswählen

; Test Beispiel

Global NewList Files.FIND_DATA()

hInternet = FTPInit()
If hInternet = 0
  Debug "Error Init: " + FormatMessage(GetLastError_())
  
  End
EndIf

hConnect = FTPConnect(hInternet, "ftp.avm.de", "", "")

If hConnect = 0
  Debug "Error Connet: " + FormatMessage(GetLastError_())
  
  End
EndIf

If FTPListDir(hConnect, "", Files()) = 0
  Debug FormatMessage(GetLastError_())
  FTPClose(hConnect)
  FTPClose(hInternet)
  End  
EndIf

ForEach Files()
  With Files()
    If \dwFileAttributes & #FILE_ATTRIBUTE_DIRECTORY = #FILE_ATTRIBUTE_DIRECTORY
      Debug "[" + \cFileName + "]"
    Else
      Debug \cFileName
    EndIf
  EndWith
Next

Debug FTPClose(hConnect)
Debug FTPClose(hInternet)
FF :wink:

Verfasst: 03.02.2007 15:23
von mk-soft
@ts-soft

In der Strukture WIN32_FIND_DATA ist cFilename als Char .c[260] und cAlternate als Char c[14] deklariert.
Diese ist einmal falsch bei UNICODE und es lässt sich besser verarbeiten.

FF :wink:

Verfasst: 03.02.2007 15:28
von ts-soft
>> Diese ist einmal falsch bei UNICODE
Das stimmt nicht. aber ansonsten haste vielleicht recht :wink:

Verfasst: 03.02.2007 15:55
von mk-soft
Debug SizeOf(WIN32_FIND_DATA)

Normal : 320 Byte
Unicode: 594 Byte

Großes Fragezeichen? Gehen aber beide Richtig.

cFilename.s{260} braucht man aber kein Peeks()

FF :wink:

Verfasst: 03.02.2007 15:57
von ts-soft
>> Großes Fragezeichen? Gehen aber beide Richtig.
Ist doch korrekt, unter Unicode hat jedes Char (.c) 2 Bytes. Es werden ja
Chars ausgelesen, nicht Bytes :wink:

Verfasst: 03.02.2007 16:21
von mk-soft
Ist Klar :roll:

Habe nur keine FtpFindFirstFileW(...) gefunden. Fragt sich nur wann welche Struktur gültig ist.
Ist aber auch egal. Macht der Compiler für uns.

FF :wink:

Verfasst: 03.02.2007 16:38
von ts-soft
PSDK hat geschrieben:Implemented as FtpFindFirstFileW (Unicode) and FtpFindFirstFileA (ANSI). Note that Unicode support on Windows Me/98/95 requires Microsoft Layer for Unicode.
Wo hast Du geguckt?

Den richtigen API Aufruf erledigt PB, den Rest macht Windows

Verfasst: 03.02.2007 17:16
von Programie
Erstmal: DANKE für die Antworten! :allright:

Verfasst: 03.02.2007 17:38
von Thorsten1867
Jetzt fehlen eigentlich nur noch 'FTPDownloadProgress()' und 'FTPUploadProgress()' und ich kann meine bisherige FTP-Library wegschmeißen und eure nehmen. :wink:
Für den Titel 'PB FTP Hero' müsstet ihr dann lediglich noch die "Kleinigkeit" von 'SFtp' einbauen. :mrgreen:

Verfasst: 03.02.2007 17:46
von ts-soft
Thorsten1867 hat geschrieben:Jetzt fehlen eigentlich nur noch 'FTPDownloadProgress()' und 'FTPUploadProgress()' und ich kann meine bisherige FTP-Library wegschmeißen und eure nehmen. :wink:
Für den Titel 'PB FTP Hero' müsstet ihr dann lediglich noch die "Kleinigkeit" von 'SFtp' einbauen. :mrgreen:
http://www.purebasic.fr/english/viewtopic.php?t=25662
Dort siehste das benötigte Callback, ich hatte bisher keinen Bedarf für sowas,
kannste aber gerne Einbauen, dann wird das hier vielleicht ja noch doch eine
vollständige FTP_ Include/Lib :wink:
Interessant ist aber auch die Variante von DarkDragon, da das auch unter
Linux funktioniert.