Delphi-PRAXiS
Seite 2 von 2     12   

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 13:44

Re: Wininet und FTP (Verzeichnis rekursiv löschen)
 
Hi,
eigentlich wie ich zu erst gedacht hatte (die ersten sind meistens die besten ideen ;) ).
Es ist die nicht elegante Version (zwichenspeichern). Das hab ich zum Anfang auch versucht, nur vergessen die Verzeichnisse noch zu löschen :(
War wahrscheinlich schon zu spät am Abend ;)
Naja da finde ich die INDY Komponenten schon besser, nur die haben probleme gemacht.

Ach wenn ich schon am tippen bin ;)

Der Inet Monitor war leider nicht was ich gesucht hab oder falsch gelesen ;)
Zumindest such ich noch ein wenig was über InternetStatusCallback, vielleicht hat da jemand noch ein kleines Source Code Stück.
Würde mich freuen.

MfG

PS: Ist jemand schonmal aufgefallen das das letzte Verzeichnis wenn es leer ist nicht als Verzeichnis sondern als File erkannt wird?

md787 21. Aug 2003 14:00

Re: Wininet und FTP (Verzeichnis rekursiv löschen)
 
vielleicth sollte ich einfach mal den source hier reinpacken, ich hab nämlich gar nichts ähnliches im internet gefunden.

Vielleicht findet sich ja jemand der ihn noch verbessert oder jemand anderen nützt das als anfang.

Delphi-Quellcode:
procedure DeleteFolderRecursive(hFTP: HINTERNET; Path: String);
var
  hSearch: HINTERNET;
  findData: WIN32_FIND_DATA;
  TempList: TStringList;
  i: Integer;
begin
  TempList := TStringList.Create;
  try
    hSearch := FtpFindFirstFile(hFTP,PChar(GetFolderPath(Path)),findData,0,0);
    repeat
      if findData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY then
        begin
          if not FtpRemoveDirectory(hFTP, PChar(GetFolderPath(Path))) then
            begin
              TempList.Add(Path + findData.cFileName + '\');
            end;
        end
      else
        begin
          if not FtpDeleteFile(hFTP, PChar(GetFolderPath(Path) + findData.cFileName)) then
            Main_Extras.ErrorPrint('Could not delete File ' + Path + findData.cFileName + '.', 'FTP File Delete Error');
        end;
    until not InternetFindNextFile(hSearch,@findData);
    InternetCloseHandle(hSearch);
    for i:=0 to TempList.Count-1 do
      begin
        DeleteFolderRecursive(hFTP, TempList[i]);
        if not FtpRemoveDirectory(hFTP, PChar(GetFolderPath(TempList[i]))) then
          Main_Extras.ErrorPrint('Could not delete Folder ' + TempList[i] + '.', 'FTP Folder Delete Error');
      end;
  finally
    TempList.Free;
  end;
end;
wobei ihr die funktion GetFolderPath auch wegdenken könnt. Die schneidet nur das Laufwerk raus.

MfG

M_O_C 3. Dez 2003 22:36

Re: Wininet und FTP (Verzeichnis rekursiv löschen)
 
Ich habe das gleiche Problem,

aber ich habe erst gerade mit dem Delphi-Proggen anfangen und benutze aus diesem Grund die Indy-Variante(IdFTP).
Ich habe versucht den CodeSchnipsel in mein Prog einzubinden nur leider hat es nicht funktioniert!
Welche Units muss ich zusätzlich einbinden um das nutzen zu können?
Oder kennt jemand ne Lösung für die Indy-Variante?
Muß ich vielleicht nur einige Variablen umbennen?

Tut mir Leid dass ich so dumme fragen stelle bin aber wirklich real anfänger!(zumindest beim Delphi-Proggen)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 Uhr.
Seite 2 von 2     12   

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