![]() |
Re: Ordner löschen, auch wenn darauf zugegriffen wird
Ist der Ordner nach einer Operation der Default-Pfad? Vielleicht mit SetCurrentDir('C:\') anders setzten, damit der Ordner quasi nicht mehr benutzt wird.
Ansonsten, wie löscht Du die Ordner? |
Re: Ordner löschen, auch wenn darauf zugegriffen wird
Als ich noch mit der FileListBox gearbeitet habe, setzte ich die Eigenschaft Directory nach dem Auslesen bereits erfolglos auf 'C:\', was wohl den gleichen Effekt wie SetCurrentDir('C:\') hat. Aber ich versuche es trotzdem mal...
Bei der ShellTreeView-Komponente bringt das allerdings wenig. Das Löschen versuchte ich schon auf die verschiedensten Arten. Vom Druck auf die Entferntaste im Windows-Explorer bis hin zu ![]() |
Re: Ordner löschen, auch wenn darauf zugegriffen wird
Zitat:
(sicherheitshalber mal mit Delphi 7 getestet) wobei da ein paar Fragen aufkommen: - warum nicht gleich nach .TXT suchen? - und sicher, daß bei dir alle gwünschten Dateien gefunden werden? (also nur die, welche kein einziges Attribut besitzen, wie z.B. faArchive)
Delphi-Quellcode:
procedure ReadLBFile(Path: string);
var FileInfo: TSearchRec; begin LBFile.Clear; if FindFirst(Path + '*.txt', faAnyFile and not faDirectory, FileInfo) = 0 then begin repeat LBFile.Items.Add(FileInfo.Name); until FindNext(FileInfo) <> 0; FindClose(FileInfo); end; end; |
Re: Ordner löschen, auch wenn darauf zugegriffen wird
Du hast recht! Ich habe jetzt mal ein Beispiel ohne ShellTreeView gemacht und es tut. Dann liegt das Übel wohl alleine an ShellTreeView!
Warum ich nicht gleich nach *.txt suche liegt daran, dass es ja auch mehrere Dateiendungen gibt, nach denen man suchen könnte. Oder gibt es etwa eine Möglichkeit mit FindFirst gleichzeitig nach *.txt, *.doc und *.xls suchen zu lassen? Und nochmal hast Du recht! Ich habe die Attribute vergessen. Danke für den Hinweis! |
Re: Ordner löschen, auch wenn darauf zugegriffen wird
nee, mehrere Masken kann man leider nicht angeben, also dann isses schon OK so :angel:
ich hab das jetzt bei meinem SearchSameFiles praktisch in etwa so gelöst:
Delphi-Quellcode:
>
uses MatchTextUnit;
procedure TForm1.ReadFiles(const Path, Mask: String; List: TStrings); var FileInfo: TSearchRec; begin List.BeginUpdate; try List.Clear; if FindFirst(Path + '*.*', faAnyFile and not faDirectory, FileInfo) = 0 then begin repeat if MatchText(Mask, FileInfo.Name) then List.Items.Add(FileInfo.Name); until FindNext(FileInfo) <> 0; FindClose(FileInfo); end; finally List.EndUpdate; end; end; ![]()
Delphi-Quellcode:
PS: es macht sich immer gut, wenn du GUI und Logik etwas trennst
ReadFiles('C:\', '*.txt', LBFile);
ReadFiles('C:\Path\', '*.txt|*.doc', LBFile); z.B. spätere Umbauten sind dann einfacher und man kann den Code auch mal wiederverwenden Bezüglich deiner ShellTreeView gibt es das Problem, daß sie immer wohl angezeigt wird. Bei mir war es damals so, daß ich den OpenDirectoryDialog statisch aufgerufen hatte, vorher mir ansehn konnte, welche Handles vorhanden sind und nachher im Vergleich prüfen konnte, welche Handles neu waren. Und da ich wußte, daß an anderen Stellen sich keine Handle währenddessen ändern konnten und ich wußte daß nix schlimmes passiert, wenn ich diese Handles nun selber bereinige, konnte ich die Unterschiede dann einfach selber beheben. |
Re: Ordner löschen, auch wenn darauf zugegriffen wird
Vielen Dank für Eure Unterstützung (besonders Dir himitsu), aber ich habe die Nase jetzt voll! Ich stelle einen Linuxrechner daneben und mache die Verzeichnisse darüber ohne Rücksicht auf Verluste platt!!!
|
Re: Ordner löschen, auch wenn darauf zugegriffen wird
Bei diesen Holzhammermethoden möchte ich meine Daten aber nicht mehr von Dir migrieren lassen :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:29 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