dlaczego mi nie działa ten kod do końca...?

0

Zostaja puste katalogi nie wiem dlaczego f-cja rmdir zbytnio nie dziala...

FK

[code]unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure DestroyDir(const Directory:string);
var
Path:String;
Search: TSearchRec;

begin
Path:=IncludeTrailingBackSlash(Directory);
if FindFirst(Path+'.',faAnyFile,Search) = 0 then
try
repeat
if (Search.Attr and faDirectory) <> 0 then
DestroyDir(Path+Search.Name)
else
DeleteFile(path+Search.Name)
until FindNext(Search) <> 0;
finally
FindClose(Search);
end;
{$I-}
RmDir(Path);
{$I+}
end;

procedure TForm1.Button1Click(Sender: TObject);
var
directory:String;

begin

directory:=Edit1.Text;
DestroyDir(directory);

end;

end.[/code]

0

nie jestem pewny czy funkcja rmdir nie potrzebuje czasem nazwy folderu bez znaku backslasha na końcu więc trzeba zostawić bez slasha zmienną na początku a potem się do niej odwołać albo zastosować coś odwrotnego do IncludeTrailingBackSlash(Directory); i oczywiście w Edit1 musi być nazwa folderu bez backslasha na końcu

0

funkcja rmdir potrzebuje nazwę folderu bez znaku backslasha na końcu więc trzeba odwołać się do rmdir(Directory) a nie rmdir(Path) i oczywiście w Edit1 musi być nazwa folderu bez backslasha na końcu

procedure DestroyDir(const Directory:string);
var
  Path:String;
  Search: TSearchRec;

begin
  Path:=IncludeTrailingBackSlash(Directory);
  if FindFirst(Path+'*.*',faAnyFile,Search) = 0 then
  try
    repeat
    if (Search.Attr and faDirectory) <> 0 then
      DestroyDir(Path+Search.Name)
      else
        DeleteFile(path+Search.Name)
    until FindNext(Search) <> 0;
    finally
      FindClose(Search);
    end;
    {$I-}
    RmDir(

Directory

);
    {$I+}
end;

ps. a nie łatwiej plik wsadowy utworzyć z poleceniem deltree /Y :)

0

mozna ale tutaj chodzi o napisanie aplikacji konsolowej...
pozdrawiam
FK

1 użytkowników online, w tym zalogowanych: 0, gości: 1