FileAge, FindFirst - Datum substrahieren.
-
Hi, habe schon einige Zeit an auf der Suche nach folgendem Problem verbracht, ohne wesentlichen Erfolg.
Es sollen Dateien gelöscht werden, die ca. 60 Tage alt sind.
Mit FileAge bekomme ich 826175194,
und dieses mit FileDateToDateTime kriege ich 38260 raus,
anschliessend durch FormatDateTime kriege ich ein lesbares Datum (Erstellungsdatum) raus,
nun müsste ich zu diesem 2 Monate addieren, > Date() vergleichen und löschen.Vielleicht könnte mir jemand dabei helfen. Habe schon einiges ausprobiert wie,
//GetFileTime();
//StrToDateTime();
//und anderebenutze den C++ Builder 5, d.h die DaysBetween(); ist noch nicht implementiert.
if (FindFirst(Unterverzeichnis + "*.pdf", faAnyFile, sr) == 0) { do { //Dateien, die über 8 Wochen alt sind, löschen! int zeit0 = FileAge(Unterverzeichnis + sr.Name); int zeit = FileDateToDateTime(zeit0); // String date = StrToDateTime(zeit); LB_datum->Items->Add(FormatDateTime("dd.mm.yyyy ",zeit)); LB_datum->Items->Add(FormatDateTime("mmmm d, yyyy ",zeit0)); LB_datum->Items->Add(Date()); LB_dateienU->Items->Add(sr.Name); } while (FindNext(sr) == 0); FindClose(sr); }else{...
-
Hi,
vielleicht hilft Dir folgendes:
void __fastcall Tdm_inforAPS::FP_Log_bereinigen(void) { AnsiString SearchFiles = ExtractFilePath(Application->ExeName) + "\\FP*.log"; AnsiString SearchFilesDir = ExtractFilePath(Application->ExeName) + "\\"; int count = 0; int delcount = 0; int errcount = 0; TDateTime MaxAge = TDateTime::CurrentDate(); MaxAge.Val -= 8; // Protokolldateien 8 Tage aufbewahren... TSearchRec sr; int iAttributes = 0; iAttributes |= faAnyFile; if (FindFirst(SearchFiles, iAttributes, sr) == 0) { do { count++; if (FileDateToDateTime(sr.Time) < MaxAge) { delcount++; try { DeleteFile(SearchFilesDir + sr.Name); } catch(...) { delcount--; errcount++; } } } while (FindNext(sr) == 0); } FindClose(sr); Form_MainViewer->StartLog->Lines->Add(" FP3: " + AnsiString(count) + " Logdateien vorhanden, davon gelöscht: " + AnsiString(delcount) + "."); if (errcount) Form_MainViewer->StartLog->Lines->Add(" Nicht löschbare Dateien: " + AnsiString(errcount) + "."); }Hab' ich so direkt aus einem Projekt kopiert, hatte keine Zeit das hierfür anzupassen...
-
Hat doch tatsächlich funktioniert! 
Vielen, vielen Dank für die schnelle hilfe!
-
vige1000 schrieb:
Hat doch tatsächlich funktioniert!
Daran hat meinerseits nicht der geringste Zweifel bestanden...

Grüße Joe_M.