Datum parsen (solved)
-
ich habe mehrere Dateien, mit dem Format <Name>_yyyy-mm-dd_<index>.txt
ich habe schon "yyyy-mm-dd" mit AnsiString::substr rausgeholt, jetzt müsste ich das Datum irgendwie in ein TDate umwandeln um es mit einem anderen vergleichen zu können und dann die Dateien zu löschen die ein älter als 5 tage sind.wenn ich einfach ein referenzdatum (FormatString("yyyy-mm-dd");) erzeuge lösch ich leider nur alle dateien die auf den tag genau 5 tage alt sind aber keine die älter sind, deswegen wollt ich hier mal frage ob es eine einfach lösung gibt wie ich yyyy-mm-dd zu einem TDate parsen kann.
..... vlleicht ist es wieder nur eine einzige Methode und ich seh den wald vor lauter bäumen nich
[EDIT] benutze jetzt StrToDate();
habe folgendes im ctor deklariert:DateSeparator = '-';
ShortDateFormat = "yyyy-mm-dd";ob des so geht =? bin mal gespannt bis in 10min
[EDIT] mh irgendwie will das doch nicht -_-" kommt immer nur dieses dämliche anfangsdatum raus!
[EDIT(korrektur)] es geht doch, hab nur den fall ignoriert das ich eine datei mit fehlerhaften datumstring einlese, jetzt klappt es einwandfrei ^^
-
DateSeparator = '-'; ShortDateFormat = "yyyy-mm-dd"; TDateTime Reference; if (FindFirst(Path+FLogFileName+AnsiString("*.txt"), faAnyFile, SearchRec) == 0) { AnsiString TimeStr = SearchRec.Name.SubString(0,SearchRec.Name.LastDelimiter("_")-1); //Dateiendung und index werden abgeschnitten TimeStr = TimeStr.SubString(TimeStr.LastDelimiter("_")+1, TimeStr.Length()-1); // Dateianfang bis zum Datum abschneiden Reference = StrToDateDef(TimeStr, Date.CurrentDate()); // String hat jetzt das format yyyy-mm-dd und kann geparst werden (wenn fehler dann aktuelles datum) if ( Reference < Date.CurrentDate()-FFileLifeTime) { //vergleichen DeleteFile(SearchRec.Name); //löschen } } while (FindNext(SearchRec) == 0) { //das ganze bis keine datei mehr gefunden wird AnsiString TimeStr = SearchRec.Name.SubString(0,SearchRec.Name.LastDelimiter("_")-1); TimeStr = TimeStr.SubString(TimeStr.LastDelimiter("_")+1, TimeStr.Length()-1); Reference = StrToDateDef(TimeStr, Date.CurrentDate()); if ( Reference < Date.CurrentDate()-FFileLifeTime) { DeleteFile(SearchRec.Name); } } FindClose(SearchRec); // Suchanfrage beendenfür die die es interessiert oder die danach später mal suchen