Datum/Uhrzeit in Dateiname



  • Hallo zusammen!

    Ich möchte mein Programm eine Textdatei anlegen lassen, um dort Daten hineinzuschreiben (klappt bereits mit CFile::Open). Nun soll der Dateiname neben einem konstanten Teil auch das Datum und die Uhrzeit enthalten, zu der die Datei erzeugt wurde.
    Das Problem ist aber, dass der erste Parameter, der bei CFile::Open übergeben wird, lpszFileName, ein Zeiger auf eine Stringkonstante ist, der sich nur definieren lässt, indem man den Dateinamen so wie er sein soll hinschreibt. Also:

    CFile f;
    char* pFileName = "dateiname.txt";
    f.Open( pFileName, CFile::modeCreate | CFile::modeWrite, NULL );

    Weiss jemand, wie es möglich ist, mit TIME() oder sonstwie Datum und Uhrzeit in den Dateinamen hinein zu bekommen?

    Schon mal Danke & viele Grüße!



  • Es muß nicht unbedingt ein konstanter Char-Pointer sein 😉 Du kannst auch ein Char-Array anlegen mit sprintf() passend füllen (oder, wenn du sowieso mit MFC arbeitest, nimm noch besser einen CString und dessen Format()-Methode).



  • Hmm, eigentlich sind doch Datum und Uhrzeit bei so ziemlich allen Dateisystemen als Metadaten der Datei gespeichert, wieso sich also die Arbeit erschweren, sie auch noch in den Dateinamen zu packen? Ein einfacher Index würde doch auch reichen?!



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • ansonsten vielleicht als string casten 😕



  • @.filmor: Wenn ich einen "einfachen" Index verwende, muss ich überprüfen, welche Indices vorher bereits verwendet wurden, da ja bereits bei einem früheren Aufruf des Programmes Dateien in dem betreffenden Ordner angelegt worden sein könnten und somit der Dateiname möglicherweise bereits vergeben ist. Das wird dann alles in allem viel komplizierter als wenn ich die Datei mit Datum und Uhrzeit kennzeichne.
    Ausserdem hätte ich dann ja trotzdem das Problem, wie ich den Wert in den Dateinamen rein bekommen so dass es von CFile::Open akeptiert wird.



  • Normale Zeichenkettenaddition kennst du aber, oder? 🙂
    Dann müsste dich das hier weiterbringen:

    COleDateTime::GetCurrentTime().Format(_T("%Y%m%d"))
    

    (Das nimmt das Datum. Guck in die MSDN und du siehst, wie du an die Uhrzeit kommst.)



  • Es funktioniert! Danke!!


Anmelden zum Antworten