![]() |
Re: ordner datum ermittel
Ohne abschließendes '\' suchen, dann geht's auch.
|
Re: ordner datum ermittel
wieso auch? :zwinker:
|
Re: ordner datum ermittel
Ok stimmt so gehts
aber bekomme ich jetzt nicht das datum zurück vom VertretungsplanOrdner
Delphi-Quellcode:
Ich würde gerne alle Ordner auslessen im Verzeichniss unter dem vertretungsplanordner und sie dann verschieben lassen wenn sie kleiner sind als das aktuelle datum ungefähr so
procedure TForm7.Button11Click(Sender: TObject);
begin datord:= GetDirDate((ExtractFilePath(ParamStr(0)))+'Vertretungspläne'); end;
Delphi-Quellcode:
if (datord) <= (date) Then
begin . . . |
Re: ordner datum ermittel
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:
So kannst du die Ordnernamen über einen String-Sort chronologisch sortieren. Hole dir die Unterordner einfach in eine StringList:
function GetFolderName(dt: TDateTime): string;
begin Result := Format('KW%.4d%.2d', [YearOf(dt), WeekOfTheYear(dt)]); end;
Delphi-Quellcode:
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.
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; Alles nur getippt und nicht getestet. Freundliche Grüße |
Re: ordner datum ermittel
Ja genau das habe ich vor ich lasse mir die Ordner in einem ShellTreeView anzeigen, und alle die älter sind als die Aktuelle KW werden verschoben.
Zitat:
Ich Habe halt gedacht es wäre einfacher darüber weil ich ja die Ordner vergleichen wollte und hätte somit anstatt einen String mit einem Integer einen Integer mit integer verglichen? Aberr w enn es so geht soll es mir auch recht sein muss mich halt nur jetzt etwas reinarbeiten um das ganze auch zu verstehn. Zitat:
Wie gesagt werde mir das von dir mal genau anschauen |
Re: ordner datum ermittel
Also wenn ich erhlich bin verstehe ich den code nicht ganz :(
|
Re: ordner datum ermittel
Hab noch mal eine genauere Version erstellt.
Delphi-Quellcode:
type TZeit = (zCreation, zLastAccess, zLastWrite); //Erstellt, letzter Zugriff, letzte Änderung
function GetDirDate(const s: string;Zeit: TZeit = zCreation): TDateTime; var Data: TWin32FindData; sTime: TSystemTime; h: THandle; begin Result := 0; ZeroMemory(@Data,SizeOf(Data)); h := FindFirstFile(PChar(s),Data); if h <> INVALID_HANDLE_VALUE then begin if (Data.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) > 0 then begin case Zeit of zCreation : FileTimeToSystemTime(Data.ftCreationTime,sTime); zLastAccess: FileTimeToSystemTime(Data.ftLastAccessTime,sTime); zLastWrite : FileTimeToSystemTime(Data.ftLastWriteTime,sTime); end; Result := SystemTimeToDateTime(sTime); end; end; Windows.FindClose(h); end; |
Re: ordner datum ermittel
Hi
Jetzt bin ich total verwirt welcher code macht was, welcher ist besser und wie gehe ich mit dem um, um ein brauchbares ergebnis zu erziehlen sorry das ich so bescheuert frage kannmir nicht einer den Code erklären?? |
Re: ordner datum ermittel
Hallo Sascha,
du schreibst, dass du meinen Code nicht ganz verstehst. Was genau bereitet dir Schwierigkeiten? Hast du dich denn inzwischen entschieden, ob du die Zeitangaben aus dem Ordnernamen zurückgewinnen oder doch lieber auf den Zeitstempel des Dateisystem zurückgreifen möchtest? Grüße nach Bad Offenbach |
Re: ordner datum ermittel
Also Praktischer wäre natürlich denn zeitstempel dem ich den Ordner selber gebe wie du ja bereits erwähnt hast(wenn es einfacher ist).
naja ich weis nicht genau wie ich das anwenden soll. Es nutzt mir auch teilweise nichts wenn ich was kopiere und es dann nichteinmal versteh das meiste wissen was ich über delphi habe, habe ich hier im forum gelernt. kann man das nicht einfacher gestallten das man alle Ordner in dem Shelltreeview die einen kleinere KW alls das aktuelle datum einfach verschiebt oder muss das so "aufwendig" sein |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 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 by Thomas Breitkreuz