Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#14

Re: ordner datum ermittel

  Alt 6. Jun 2007, 07:18
Guten Morgen Sascha,

vielleicht liege ich ja falsch, aber aus dem, was ich von dir hier und an anderer Stelle gelesen habe, weiß ich, dass du in einem Ordner "Vertretungspläne" Unterordner anlegst, deren Namen aus einem Präfix "KW", der Kalenderwoche und der Jahreszahl gebildet werden.

Eine kleine Änderung der Bildungsregel für die Ordnernamen wäre hilfreich: Verbaue zuerst die Jahreszahl und dann die Kalenderwoche und achte auf führende Nullen:

Delphi-Quellcode:
function GetFolderName(dt: TDateTime): string;
begin
  Result := Format('KW%.4d%.2d', [YearOf(dt), WeekOfTheYear(dt)]);
end;
So kannst du die Ordnernamen über einen String-Sort chronologisch sortieren. Hole dir die Unterordner einfach in eine StringList:

Delphi-Quellcode:
procedure GetSubFolders(folder: string; s: TStrings);
var
  sr: TSearchRec;
begin
  folder := IncludeTrailingPathDelimiter(folder);
  if FindFirst(folder + '*.*', faDirectory, sr) = 0 then
  try
    repeat
      if (sr.Name = '.') or (sr.Name = '..') then
        Continue
      else
      if (sr.Attr and faDirectory) = faDirectory then
        s.Add(sr.Name);
    until FindNext(sr) <> 0;
  finally
    FindClose(sr);
  end;
end;

// ...

const
  BASE_FOLDER = 'C:\Daten\Vertretungspläne';
var
  fn: TFileName;
  folders: TStringList;
begin
  folders := TStringList.Create;
  GetSubFolders(BASE_FOLDER, folders);
  folders.Sort;
  // ...
end;
Jetzt kannst du einfach durch die Liste iterieren und alles, was zu alt ist, verschieben. Wozu brauchst du das Datum der Ordner aus dem Dateisystem, wenn es bereits im Ordnernamen enthalten ist? Wenn aber doch, dann bedenke, dass es dort ein CreationDate und ein LastWriteDate gibt.

Alles nur getippt und nicht getestet.

Freundliche Grüße
  Mit Zitat antworten Zitat