Danke für die Antwort. Ich als Anfänger habe nun versucht das in FTP umzusetzen. Sind wohl einige Fehler drin.
Klappt nicht so wie es soll. Wo sind die Fehler ?
Code: Alles auswählen
; ***************************************************************************************
EnableExplicit
Global NewList DirList.s()
Global NewList Filelist.s()
; ***************************************************************************************
Global thRead
Global foldername.s, *foldername
; ***************************************************************************************
Global Button_Backup, List_FTP
Enumeration Window
#Gui_1
#Gui_2
EndEnumeration
Enumeration Gadget
#Statusbar
EndEnumeration
Enumeration
#FTP
EndEnumeration
Declare ReadDirectory(Folder.s, SubFolder.s = "")
Declare thReadDirectory(*foldername)
Declare.s DirScan(Directoryname.s)
If OpenWindow(#Gui_1, 0, 0, 600, 400, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
Button_Backup = ButtonGadget(#PB_Any, 212, 148, 196, 85, "Auswahl Backupdateien")
InitNetwork()
If OpenFTP(#FTP, "192.168.40.29", "root", "") ;bitte anpassen
Else
MessageRequester("Error", "Connecting failed")
DisableGadget(Button_Backup, 1)
EndIf
Else
MessageRequester("Error", "Can not open the Window")
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Gui_1
End
Case #Gui_2
HideWindow(#Gui_1, 0)
CloseWindow(#Gui_2)
EndSelect
Case #PB_Event_Menu
Select EventMenu()
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case Button_Backup
HideWindow(#Gui_1, 1)
If OpenWindow(#Gui_2, 0, 0, 400, 700, "Backup- Auswahl", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateStatusBar(#Statusbar, WindowID(#Gui_2))
AddStatusBarField(80)
StatusBarText(#Statusbar, 0, "Label")
AddStatusBarField(320)
StatusBarText(#Statusbar, 1, "File")
List_FTP = TreeGadget(#PB_Any, 8, 8, 380, 632, #PB_Tree_CheckBoxes)
EndIf
DirScan("/")
EndSelect
EndSelect
ForEver
Procedure.s DirScan(DirectoryName.s)
Protected entry.l
If SetFTPDirectory(#FTP, DirectoryName)
If ExamineFTPDirectory(#FTP)
Repeat
Delay(20)
entry.l = NextFTPDirectoryEntry(#FTP)
If entry =1
If FindString(FTPDirectoryEntryName(#FTP), ">")=0 ;Links werden rausgefiltert
*foldername = AllocateMemory(5000)
PokeS(*foldername, FTPDirectoryEntryName(#FTP))
If thRead = CreateThread(@thReadDirectory(), *foldername)
Debug "Thread gestartet"
EndIf
EndIf
EndIf
Until entry = 0
EndIf
EndIf
EndProcedure
Procedure ReadDirectory(Folder.s, SubFolder.s = "")
Protected id, filename.s, foldername.s, temp.s
Static pos = 0
If Right(Folder,1) <> "/"
Folder + "/"
EndIf
If Left(Folder,1) <> "/"
Folder = "/" + Folder
EndIf
foldername = Folder + SubFolder
If Right(foldername,1) <> "/"
foldername + "/"
EndIf
AddElement(DirList())
DirList() = foldername
; - TreeGadget füllen
If SubFolder
AddGadgetItem(List_FTP, -1, Subfolder, 0, pos)
Else
AddGadgetItem(List_FTP, -1, Folder, 0, pos)
EndIf
pos + 1
; -
id =SetFTPDirectory(#FTP, foldername)
If ExamineFTPDirectory(#FTP)
If id
While NextFTPDirectoryEntry(#FTP)
If FTPDirectoryEntryType(#FTP) = 1
AddElement(Filelist())
filename = foldername + FTPDirectoryEntryName(#FTP)
FileList() = filename
If IsStatusBar(#StatusBar)
StatusBarText(#StatusBar, 0, Str(ListSize(Filelist())))
StatusBarText(#StatusBar, 1, filename)
EndIf
Else
temp = FTPDirectoryEntryName(#FTP)
AddGadgetItem(List_FTP, -1, temp, 0, pos)
If temp <> ".." And temp <> "."
ReadDirectory(foldername, temp)
EndIf
EndIf
Wend
FinishFTPDirectory(#FTP)
EndIf
EndIf
pos - 1
ProcedureReturn ListSize(Filelist())
EndProcedure
Procedure thReadDirectory(*foldername)
Protected foldername.s
foldername = PeekS(*foldername)
ClearList(DirList())
ClearList(Filelist())
ReadDirectory(foldername)
EndProcedure
; ***************************************************************************************