Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Wininet und FTP (Verzeichnis rekursiv löschen) (https://www.delphipraxis.net/7769-wininet-und-ftp-verzeichnis-rekursiv-loeschen.html)

md787 21. Aug 2003 07:06


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

Luckie 21. Aug 2003 07:22

Re: Wininet und FTP (Verzeichnis rekursiv löschen)
 
Zitat:

Zitat von md787
Aber genau da ist mein Problem, da FtpFindFirstFile ja beendet werden muss um weiter suchen zu können.

Das verstehe ich jetzt nicht.

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.

md787 21. Aug 2003 07:55

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?

Luckie 21. Aug 2003 08:23

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.

http://www.luckie-online.de/files/my...monitorsfx.exe Läuft aber nur korrekt unter 2000 und wahrscheinlich XP.

md787 21. Aug 2003 08:36

Re: Wininet und FTP (Verzeichnis rekursiv löschen)
 
Hi,
danke erstmal für den Monitor.

Delphi-Quellcode:
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;
Meinst du das in etwa so (hab ich jetzt geschrieben aber von Prinzip)?

Und danke für die Geduld.

MfG

Luckie 21. Aug 2003 08:37

Re: Wininet und FTP (Verzeichnis rekursiv löschen)
 
Ja so ungefähr.

md787 21. Aug 2003 08:43

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

md787 21. Aug 2003 08:46

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

md787 21. Aug 2003 13:18

Re: Wininet und FTP (Verzeichnis rekursiv löschen)
 
Hi,
also ich hab es geschafft.

Wollte mich nur nochmal ganz herzlich bei Luckie bedanken.

MfG

Luckie 21. Aug 2003 13:26

Re: Wininet und FTP (Verzeichnis rekursiv löschen)
 
Und wie hast du es geschaft?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:34 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz