Entwickler-Ecke
Dateizugriff - Ordner überwachen
Tilman - Mo 11.12.06 21:09
Titel: Ordner überwachen
Ich möchte einen Ordner überwachen, und neu erstellte bzw. verschobene Dateien sofort in "Archiv"+Fortlaufende Nummer umbenennen. Kann mir jemand sagen wie man am schlausten einen ordner überwacht?
ZeitGeist87 - Mo 11.12.06 21:41
Hallo!
Entweder programmierst du dir einen Service der das ganze überwacht und meinetwegen eine Hash-Tablelle führt und bei Veränderung das vornimmt, was du gedenkst oder du lädst dir die JEDIs runter, da gibt es meines Wissens so ne Komponente die das für dich erledigt.
LG
Stefan
wulfskin - Mo 11.12.06 21:48
Hallo,
für Windows 2000 und darüber, verwendest du am besten
READDIRECTORYCHANGESW. Für alles darunter gibt es [/msdn]FindFirstChangeNotification[/msdn], da bekommst du aber (wenn ich mich recht entsinne) nicht mit, welche Datei geändert wurde.
Viel Erfolg,
Hape
Tilman - Di 12.12.06 02:46
Ne, ob eine Datei geändert wurde muss ich gar nicht wissen. Es geht nur um neue Dateien. Es würde schon reichen eine Liste aller Dateien im ordner in einem gewissen intervall abzufragen, allerdings habe ich halt keine ahnung wie mans o was macht. Ist das möglich?
Ironwulf - Di 12.12.06 03:51
sicher, du lädst die dateinamen in eine stringlist dann lädst du in einem timer nochmal alle datein in eine andere stringlist und schaust ob ne neue dazu gekomm is, wenn ja dann tust du halt das mit der datei was du vorhast und lädst die stringlist für den ordner neu
Tilman - Di 12.12.06 18:29
Ironwulf hat folgendes geschrieben: |
sicher, du lädst die dateinamen in eine stringlist dann lädst du in einem timer nochmal alle datein in eine andere stringlist und schaust ob ne neue dazu gekomm is, wenn ja dann tust du halt das mit der datei was du vorhast und lädst die stringlist für den ordner neu |
Soweit, so gut, aber wie bekomme ich die Liste aller Dateien in einem Ordner?
Tilman - Di 12.12.06 18:44
Hmm, würde es gern ohne Komponent machen. Gibt es nicht ne funktion die mir eine Liste zurückgibt?
Ironwulf - Di 12.12.06 18:45
Tilman hat folgendes geschrieben: |
Soweit, so gut, aber wie bekomme ich die Liste aller Dateien in einem Ordner? |
mal die suche bemühen, hier gibs paar feine proceduren die nitma 20 zeilen klang sinn die das sehr gut können
Tilman - Di 12.12.06 18:49
Ironwulf hat folgendes geschrieben: |
mal die suche bemühen, hier gibs paar feine proceduren die nitma 20 zeilen klang sinn die das sehr gut können |
Mensch vielen Dank, du hilfst mir unheimlich. Noch mehr allerdings wenn du mir noch die Suchwörter sagst bzw. wie die Prozedur heißt, oder hab ich da was übersehen in deinem Post?
Ironwulf - Di 12.12.06 18:56
;D wenn man nit alles selber macht funktioniert hier gar nix mehr XD
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| Procedure FindFiles (aPath, aFindMask: String; aWithSub: Boolean; aResult: tStrings); Var FindRec: tSearchRec; Begin If aPath[Length (aPath)] <> '\' Then aPath := aPath + '\';
If FindFirst (aPath + aFindMask, faAnyFile, FindRec) = 0 Then Repeat If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then begin If aResult = Unterverzeichnisse Then aResult.Add(FindRec.Name) else aResult.Add(apath + FindRec.Name); end;
Until FindNext (FindRec) <> 0;
If Not aWithSub Then Exit;
If FindFirst (aPath + '*.*', faAnyFile, FindRec) = 0 Then Repeat If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then If Boolean (FindRec.Attr and faDirectory) Then FindFiles(aPath + FindRec.Name, aFindMask, aWithSub, aResult); Until FindNext (FindRec) <> 0;
FindClose (FindRec); end; |
EDIT:
und so ruft man das ganze zum bsp. auf
Delphi-Quelltext
1:
| FindFiles('C:', '*', False, sl); |
azubi_20 - Di 12.12.06 18:57
Vorschlag für Suche hier im Forum :
DATEI REKURSIV
Tilman - Di 12.12.06 19:02
Danke an euch beide. Wo ichs finde hätte schon gereicht, aber danke für den Quelltext ;-)
// Edit:
Alles klar, habe jetzt die Funktion von FindFirst und FindNext verstanden, werde damit arbeiten.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!