Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Datei suchen + löschen (https://www.delphipraxis.net/37649-datei-suchen-loeschen.html)

St.Pauli 8. Jan 2005 13:09


Datei suchen + löschen
 
Hi, gibt es vieleicht ne möglichkeit, dass die Dateien in der ListBox nach der suche angezeigt werden und das man dann ein paar dateien auswählt und die dann wenn man auf einen anderen Button klickt, gelöscht werden?

Code:
procedure GetFilesInDirectory(Directory: String; const Mask: String;
                              List: TStrings;
                              WithSubDirs, ClearList: Boolean);

procedure ScanDir(const Directory: String);
var
  SR: TSearchRec;
begin
  if FindFirst(Directory + Mask, faAnyFile - faDirectory, SR) = 0 then try
    repeat
      List.Add(Directory + SR.Name)
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;

  if WithSubDirs then begin
    if FindFirst(Directory + '*.*', faAnyFile, SR) = 0 then try
      repeat
        if (SR.Attr = faDirectory) and
           (SR.Name <> '.') and (SR.Name <> '..') then
          ScanDir(Directory + SR.Name + '\');
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  end;
end;

begin
  List.BeginUpdate;
  try
    if ClearList then
      List.Clear;
    if Directory = '' then Exit;
    if Directory[Length(Directory)] <> '\' then
      Directory := Directory + '\';
    ScanDir(Directory);
  finally
    List.EndUpdate;
  end;
end;
 



procedure TForm1.Button1Click(Sender: TObject);
begin
  GetFilesInDirectory('C:\', '*.abc', Listbox1.Items, True, True);
  GetFilesInDirectory('C:\', '*.xyz', Listbox1.Items, True, False);
end;

fkerber 8. Jan 2005 13:38

Re: Datei suchen + löschen
 
Hi!

Such mal nach Hier im Forum suchendelete file / Hier im Forum suchendeletefile


Ciao Frederic

St.Pauli 8. Jan 2005 17:23

Re: Datei suchen + löschen
 
Das klappt ja.

OK, ein Beispiel:

Das Prog findet C:\aaa\bbb.ccc und C:\xxx\yyy.zzz dann schreibt der in die ListBox:

C:\aaa\bbb.ccc
C:\xxx\yyy.zzz

und dann will ich, dass wenn z.B. nur C:\aaa\bbb.ccc markiert ist, der Eintrag irgendwie in DeleteFile(C:\aaa\bbb.ccc) gebracht wird.

Luckie 8. Jan 2005 17:28

Re: Datei suchen + löschen
 
Guck dir mal die Eigenschaft Delphi-Referenz durchsuchenItemnIndex von der Klasse TItems an bzw. Delphi-Referenz durchsuchenSelected.

Im übrigen mehr ein VCL Problem.

PierreB 8. Jan 2005 17:28

Re: Datei suchen + löschen
 
Zitat:

und dann will ich, dass wenn z.B. nur C:\aaa\bbb.ccc markiert ist, der Eintrag irgendwie in DeleteFile(C:\aaa\bbb.ccc) gebracht wird.
Dann mach doch sowas in der Art:
Code:
var
  test: string;

begin
test := listbox1.items[2];
DeleteFile(test);
Oder du machst dann halt ne Prozedur mit der du den Dateinamen den du anwählst automatisch in den String lädt.

//Edit: Fehler korrigiert.

St.Pauli 8. Jan 2005 18:09

Re: Datei suchen + löschen
 
@ delphman

Ja, fast, aber wie mach ich das wenn 100 gefunden wurden, und ganz verschiedene ausgewählt werden. Also das ich jetzt noch nicht weiss was Selected ist? :?: :?: :?:

Luckie 8. Jan 2005 18:12

Re: Datei suchen + löschen
 
In dem du in einer Schleife alle Items prüfst? Und wenn du mehrere findest, dann musst du eben selbst entscheiden, was du machst bzw. was sollden mit allen markierten Items passieren?

St.Pauli 8. Jan 2005 18:19

Re: Datei suchen + löschen
 
Sollen gelöscht werden. K.P. wie das gehen soll :gruebel:

PierreB 8. Jan 2005 18:22

Re: Datei suchen + löschen
 
Vielleicht geht es so: (Bin mir aber net sicher und kanns grad net austesten)

Also du markierst einen Listbox-Eintrag und klickst dann auf nen Button:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  test : String;
begin
  If ( ListBox1.ItemIndex > -1 ) then
  begin
      test := ListBox1.Items.Objects[ ListBox1.ItemIndex ];
      DeleteFile(test);
  end;
end;
Weiß aber net obs geht.... :gruebel:

St.Pauli 8. Jan 2005 18:37

Re: Datei suchen + löschen
 
nee, funzt nicht ...

PierreB 8. Jan 2005 18:51

Re: Datei suchen + löschen
 
Hmm.... Wär schon wenn du das etwas näher beschreiben könntest.
Fehlermeldung ?

St.Pauli 9. Jan 2005 10:17

Re: Datei suchen + löschen
 
^^Sorry, war net mehr on

Habs jetzt so gemacht:

Code:
procedure TForm1.Button5Click(Sender: TObject);
var  I : Integer;
      b : string;
begin
 for I:=Listbox1.Items.Count-1 downto 0 do
  begin
   if Listbox1.Selected[I] then
     b := ListBox1.Items[I];
      DeleteFile(b);
  end;
end;
Und nach ausführlichen Tests in meinem Testlabor klappte es dann auch. :wink:

Weiss einer von euch, wie ich die markierten Einträge dann auch aus der Liste entferne?

PierreB 9. Jan 2005 10:23

Re: Datei suchen + löschen
 
Bau einfach noch ein
Code:
ListBox1.Items.Delete(i);
mit ein. ;)

St.Pauli 9. Jan 2005 10:38

Re: Datei suchen + löschen
 
Ok, jetzt klappt alles wie ichs haben wollte! Danke delphman!!! :-D :-D :-D

PierreB 9. Jan 2005 10:40

Re: Datei suchen + löschen
 
Büdde St.Pauli !!! ;)

:lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 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-2025 by Thomas Breitkreuz