AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ordner überwachen

Ein Thema von Skullwing · begonnen am 29. Okt 2011 · letzter Beitrag vom 29. Okt 2011
Antwort Antwort
Skullwing

Registriert seit: 29. Okt 2011
12 Beiträge
 
#1

Ordner überwachen

  Alt 29. Okt 2011, 14:06
Also ich bin gerade dabei ein Programm zu schreiben, was einen Ordner oder mehrere überwachen soll.

Überwachen in dem Sinne, ob Dateien hinkommen, etc.

Leider hab ich jetzt das Problem, dass ich dazu zwar schon eine Möglichkeit gefunden habe, leider das Ganze aber nicht wirklich verstehe und deshalb würde ich jemanden hier bitten mir es zu erklären oder eine alternative (einfachere) Lösung anzubieten...

Ich bin dankbar für jeden Hilfe

Code:
function Like(const AString, APattern: String): Boolean;
var
  StringPtr, PatternPtr: PChar;
  StringRes, PatternRes: PChar;
begin
  Result:=false;
  StringPtr:=PChar(AString);
  PatternPtr:=PChar(APattern);
  StringRes:=nil;
  PatternRes:=nil;
  repeat
    repeat // ohne vorangegangenes "*"
      case PatternPtr^ of
        #0: begin
          Result:=StringPtr^=#0;
          if Result or (StringRes=nil) or (PatternRes=nil) then
            Exit;
          StringPtr:=StringRes;
          PatternPtr:=PatternRes;
          Break;
        end;
        '*': begin
          inc(PatternPtr);
          PatternRes:=PatternPtr;
          Break;
        end;
        '?': begin
          if StringPtr^=#0 then
            Exit;
          inc(StringPtr);
          inc(PatternPtr);
        end;
        else begin
          if StringPtr^=#0 then
            Exit;
          if StringPtr^<>PatternPtr^ then begin
            if (StringRes=nil) or (PatternRes=nil) then
              Exit;
            StringPtr:=StringRes;
            PatternPtr:=PatternRes;
            Break;
          end
          else begin
            inc(StringPtr);
            inc(PatternPtr);
          end;
        end;
      end;
    until false;
    repeat // mit vorangegangenem "*"
      case PatternPtr^ of
        #0: begin
          Result:=true;
          Exit;
        end;
        '*': begin
          inc(PatternPtr);
          PatternRes:=PatternPtr;
        end;
        '?': begin
          if StringPtr^=#0 then
            Exit;
          inc(StringPtr);
          inc(PatternPtr);
        end;
        else begin
          repeat
            if StringPtr^=#0 then
              Exit;
            if StringPtr^=PatternPtr^ then
              Break;
            inc(StringPtr);
          until false;
          inc(StringPtr);
          StringRes:=StringPtr;
          inc(PatternPtr);
          Break;
        end;
      end;
    until false;
  until false;
end;


procedure FindAllFiles(FileList: TStrings; RootFolder: string; Mask: string ='*'; Recurse: Boolean = True; AddFolderNames: Boolean = False; IgnoreMaskAtFolderNames: Boolean = True);
   procedure LFindAllFiles(AParentFolder: String);
   var LSearchRec: TSearchRec;
   begin
     if FindFirst(AParentFolder + '*', faAnyFile, LSearchRec) = 0 then
     begin
       repeat
         if (LSearchRec.Name <> '.') and (LSearchRec.Name <> '..') then
         begin
           if LSearchRec.Attr and faDirectory = faDirectory then
           begin
             if AddFolderNames and
                (IgnoreMaskAtFolderNames or Like(AnsiLowerCase(LSearchRec.Name), Mask)) then
               FileList.AddObject(AParentFolder + LSearchRec.Name, TObject(True));
             if Recurse then
               LFindAllFiles(AParentFolder + LSearchRec.Name + '\');
           end
           else if Like(AnsiLowerCase(LSearchRec.Name), Mask) then
             FileList.AddObject(AParentFolder + LSearchRec.Name, TObject(False));
         end;
       until FindNext(LSearchRec) <> 0;
       FindClose(LSearchRec);
     end;
   end;
begin
   Mask := AnsiLowerCase(Mask);
   LFindAllFiles(IncludeTrailingPathDelimiter(RootFolder));
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.230 Beiträge
 
Delphi 12 Athens
 
#2

AW: Ordner überwachen

  Alt 29. Okt 2011, 14:19
PS: Hier im Forum suchenOrdner überwachen

Was du da hast, ist ein Code, welcher den Inhalt eines Ordner auflistet.
Zum Überwachen müßtest du jetzt/später nochmal den Inhalt auflisten, mit der alten Liste vergleichen und würdest damit den Unterschied rausbekommen.

Auf diese Weise kann man einen alten Zustand mit dem Aktuellen vergleichen und auch ältere Änderungen rausbekommen.


Willst du aber wirklich überwachen, dann laß dich doch vom Windows über Änderungen informieren (siehe die anderen Themen).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Skullwing

Registriert seit: 29. Okt 2011
12 Beiträge
 
#3

AW: Ordner überwachen

  Alt 29. Okt 2011, 15:05
Was es macht weiß ich schon, die Frage ist noch wie ich es auflisten kann. Das verwirrt mich ...

Das Programm soll im späteren Verlauf noch anderes machen, deshalb ...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Ordner überwachen

  Alt 29. Okt 2011, 15:46
Bei der Überwachung bekommst du doch auch Informationen was sich geändert hat ( geänderte/neue Datei)
Markus Kinzler
  Mit Zitat antworten Zitat
Skullwing

Registriert seit: 29. Okt 2011
12 Beiträge
 
#5

AW: Ordner überwachen

  Alt 29. Okt 2011, 15:55
Meine Frage ist, wie ich es darstellen kann. Also z.b. was ich machen muss, damit er sie auflistet.
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#6

AW: Ordner überwachen

  Alt 29. Okt 2011, 16:32
Meine Frage ist, wie ich es darstellen kann. Also z.b. was ich machen muss, damit er sie auflistet.
Die Funktion wird mit dem Parameter FileList aufgelistet. Diese Liste must du nur anzeigen oder beispielsweise in eine Combobox oder ähnliches laden. Du kannst auch ein Grid nehmen, wo du die Zeilen einzeln eintragen kannst.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 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