Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi gefundenes file löschen (https://www.delphipraxis.net/18869-gefundenes-file-loeschen.html)

tHeRiAn 25. Mär 2004 14:55


gefundenes file löschen
 
Hi.... :-D

bin grad ein prog am coden und hab dabei ein prob.
Es soll aus einem Memo eine Dateiendung ausgelesen werden, dann ein verzeichnis nach dieser Endung durchsucht werden und alle ergebnisse gelöscht und in einer listbox ausgeben werden.
hier erstma die procedure in ders irgendwo an irgendwas mangelt :-)

Delphi-Quellcode:
procedure TfrmAufraeumen.getall(mask: string);
var
  search: TSearchRec;

  verz,
  such,
  ext: string;

  i:   integer;
begin
  myList := TStringList.create;
  verz:=ExtractFilePath( mask );
  such:=ExtractFileName( mask );

  if verz[ Length(verz) ]<>'\' then verz := verz + '\';
  i:=0;
  while i < memEndungen.Lines.Count -1 do begin
     ext:= '*' + memEndungen.Lines.Strings[1];

  {Alle Dateien suche}
  if findfirst( verz +'+'+ ext ,$3F,search ) = 0 then
  repeat
    myList.Add(verz + search.Name );         //gefundenes file auflisten
   SysUtils.DeleteFile(verz + search.Name);  //gefundenes file löschen
  until
    FindNext( search ) <> 0;
  inc(i);
  FindClose( search );
end;//
end;

und hier noch ma der ganze code, falls andere fragen auftreten.


Delphi-Quellcode:
var
  frmAufraeumen: TfrmAufraeumen;
  myList: TStringList;
implementation
uses
  uRundesFenster;
{$R *.DFM}

procedure TfrmAufraeumen.btnPfadAuswahlClick(Sender: TObject);

begin
  if OpenDialog.Execute then begin

    edPfad.Text := ExtractFilePath(OpenDialog.FileName);
  end else begin
    edPfad.Text := '';
  end;//if...
end;

procedure TfrmAufraeumen.btn_searchClick(Sender: TObject);

begin
  getall(edPfad.Text);
  if edPfad.text[ Length(edPfad.text) ]<>'\' then edPfad.text := edPfad.text + '\';
  ListBox1.Items.Assign(myList);
  myList.Free;
end;

procedure TfrmAufraeumen.getall(mask: string);
var
  search: TSearchRec;

  verz,
  such,
  ext: string;

  i:   integer;
begin
  myList := TStringList.create;
  verz:=ExtractFilePath( mask );
  such:=ExtractFileName( mask );

  if verz[ Length(verz) ]<>'\' then verz := verz + '\';
  i:=0;
  while i < memEndungen.Lines.Count -1 do begin
     ext:= '*' + memEndungen.Lines.Strings[1];

  {Alle Dateien suche}
  if findfirst( verz +'+'+ ext ,$3F,search ) = 0 then
  repeat
    myList.Add(verz + search.Name );         //gefundenes file auflisten
   SysUtils.DeleteFile(verz + search.Name);  //gefundenes file löschen
  until
    FindNext( search ) <> 0;
  inc(i);
  FindClose( search );
end;//
end;
procedure TfrmAufraeumen.Button1Click(Sender: TObject);
begin
ListBox1.Clear;
end;
                 

end.
sorry aber ich komm einfach net weiter.....vielleicht habt ihr ja lust und zeit zu helfen......
erstmal vielen dank im vorraus..

mfg sven

himitsu 25. Mär 2004 19:44

Re: gefundenes file löschen
 
1. du übergibst ja der Prozedur ein Verzeichnis - wieso entfenst du dann von diesem das letzte Unterverzeichnis?
Delphi-Quellcode:
  verz:=ExtractFilePath( mask );
  such:=ExtractFileName( mask );
2. beginnen alle Dateien, die du suchen und löschen willst ein Plus am Dateianfang?
Code:
findfirst( verz +[color=red]'+'[/color]+ ext ...
3. das würde ja schon ausreichen:
Delphi-Quellcode:
  while i < memEndungen.Lines.Count -1 do begin
  {Alle Dateien suche} 
  if findfirst( verz + '*' + memEndungen.Lines.Strings[1] ,$3F,search ) = 0 then
ich mach erstmal hier Schluß, wenn das soweit stimmt, dann können wir ja weitermachen ^^ (muß jetzt mal weg)

tHeRiAn 30. Mär 2004 13:38

Re: gefundenes file löschen
 
@ himitsu: die sache mit dem '+' hab ich total übersehen...--- :wall: ....funzt nu alles.....vielen dank

jetzt muss ich das ganze nur noch rekursiv durchführen lassen......falls


mfg


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 Uhr.

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