![]() |
Wininet und FTP (Verzeichnis rekursiv löschen)
Hi,
ich hab ein grosses Problem. Ich will ein Ordner auf einem FTP Server löschen. Die Funktion FtpRemoveDirectory löscht das Verzeichnis ja nur wenn es leer ist. Damit muss ich erstmal rekursiv die Verzeichnisse löschen und dann diese nacheinander löschen. Aber genau da ist mein Problem, da FtpFindFirstFile ja beendet werden muss um weiter suchen zu können. Vielleicht hatte ja jemand ein ähnliches Problem und kann mir ein Denkanstoss geben. Würde mich freuen. MfG |
Re: Wininet und FTP (Verzeichnis rekursiv löschen)
Zitat:
Aber meines Erachtens sollte es mit den FTP-Funktionen genauso gehen, wie mit den localen Gegenstücken. Und dazu findest du Code hier in der Code Lib. |
Re: Wininet und FTP (Verzeichnis rekursiv löschen)
Hi,
Ertsmal danke für die schnelle Antwort. Das stimmt auch, nur mit dem Unterschied das man nur einmal die FindFirst aufrufen kann. Somit kannst du auf der lokalen Ebene das in der Schleife rekursiv wieder aufrufen. Leider geht es dort nicht, weil er dann mit Suche schon im Gange abbricht. Is immernoch nicht sehr verständlich. Ähm wie kann ich das erklären. Mal ein kurzes stück von meinem source: var hSearch: HINTERNET; findData: WIN32_FIND_DATA; begin hSearch := FtpFindFirstFile(hFTP,nil,findData,0,0); repeat // Delete Files and Folder until not InternetFindNextFile(hSearch,@findData); InternetCloseHandle(hSearch); end; Also in der repeat Schleife kann ich das nicht mehr aufrufen. Es ist eigentlcih sehr trivial, aber es will nicht. Hab gedacht vielleicht hatte jemand schon das gleiche Problem und hat eine elegante Lösung gefunden. Spontan ist mit eingefallen die Verzeichnisse in einer Liste zwischenzuspeichern, aber das war auch nicht so gut. MfG PS: Hab ich total vergessen. Ich hab in einen Post gelesen dass Du einen Ineternetmonitor programmiert hast und das zum download angeboten hast. Wollte nur mal nachfragen ob ich den vielleicht mir mal angucken könnte? |
Re: Wininet und FTP (Verzeichnis rekursiv löschen)
Du darfst nicht FTPFindFirst in deiner Schleife aufrufen, sonder du mußt deine Funktion wieder aufrufen und zwar mit dem dem ersten gefunden Verzeichnis als neues Startverzeichnis.
![]() |
Re: Wininet und FTP (Verzeichnis rekursiv löschen)
Hi,
danke erstmal für den Monitor.
Delphi-Quellcode:
Meinst du das in etwa so (hab ich jetzt geschrieben aber von Prinzip)?
procedure WasAuchImmer(hFTP: HINTERNET; Pfad: String);
var hSearch: HINTERNET; findData: WIN32_FIND_DATA; begin //FtpSetCurrentDir(hFTP, PChar(Pfad)); // oder hSearch := FtpFindFirstFile(hFTP,PChar(Pfad),findData,0,0); <- Das hab ich nicht getestet // sollte aber auch funktionieren hSearch := FtpFindFirstFile(hFTP,nil,findData,0,0); repeat if Folder then WasAuchImmer(hFTP, Pfad + '\' + findData.cfFilename + '\'); until not InternetFindNextFile(hSearch,@findData); InternetCloseHandle(hSearch); end; Und danke für die Geduld. MfG |
Re: Wininet und FTP (Verzeichnis rekursiv löschen)
Ja so ungefähr.
|
Re: Wininet und FTP (Verzeichnis rekursiv löschen)
Hi,
und genau da ist das Problem. hSearch := FtpFindFirstFile(hFTP,nil,findData,0,0); <- wird damit rekursiv aufgerufen und das geht nicht. MfG |
Re: Wininet und FTP (Verzeichnis rekursiv löschen)
Moment mir fällt gerade ein.
Ich kann ja den Search Handle ausserhalb der procedure erstellen und dann diesen mit übergeben. EDIT: Auch Blödsinn. MfG |
Re: Wininet und FTP (Verzeichnis rekursiv löschen)
Hi,
also ich hab es geschafft. Wollte mich nur nochmal ganz herzlich bei Luckie bedanken. MfG |
Re: Wininet und FTP (Verzeichnis rekursiv löschen)
Und wie hast du es geschaft?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz