jede Woche neuen Ordner erstellen ?
-
Such dir die Methode zum Ordner erstellen bei MSDN, hole dir den Wochentag als String und erstelle den Ordner. Sehe da kein Problem.
-
Guten Morgen,
ok ich werde mal sehen, wie ich das hinkriege.
Ordner hab ich innerhalb des Programms schon einige erstellt, nur die Prüfung ob nun ein neuer Ordner erstellt werden soll, weil z.B. Montag ist, war mir nicht ganz klar.
Aber ich werd mich da mal ransetzen, vielleicht sind am Ende alte Logfiles doch überflüssig.
Ich danke euch erstmal für eure Hilfe

-
Die Prüfung kannst Du Dir eigentlich sparen. Wenn der Ordner schon existiert, dann setzt CreateDirectory den Fehlercode ERROR_ALREADY_EXISTS. CreateDirectory kann aber keine Ordner über mehrere Ebenen erstellen, in diesem Fall empfiehlt sich SHCreateDirectoryEx.
-
Ja, per SHCreateDirectoryEx erstelle ich auch meine Ordner.

Mir ist jetzt erstmal richtig in Sinn gekommen, dass es schon sinnvoller ist, zu prüfen, ob im Ordner z.b. mehr als 10 Files liegen und wenn ja, die alten Files dann zu löschen.
Bin aber noch am Überlegen und Suchen, hab noch kein Ansatz.
-
Ich muss hier nochmal nachhaken.
Habe keinen richtigen Ansatz wie ich bei jedem Start der Applikation prüfe, ob mehr als 10 Files im besagten Ordner liegen und dann die "alten" Files lösche.
Bin schon soweit, dass ich mir alle Filenamen im Ordner hole und die Anzahl aller Files. Alle Filenamen stehen in einer CList.
Problem ist: Der Filename sieht bei mir immer so aus, z.B. Logfile 26 01 2009 1.log
Beinhaltet also immer das aktuelle Datum.
Wie kann ich jetzt anhand diese Filenamens am besten die Löschung der Files durchführen ??Habt ihr da eine Idee ??
-
Logfile 2009 01 26.log
-
Jaaa, natürlich, ist die Lösung.
Also vom Vorgehen her passt das alles, nur kriege ich über GetLastError() 2 zurück, also ERROR_FILE_NOT_FOUND, obwohl es existiert.
if (!PathIsDirectoryEmpty(m_szLogPath)) { CFileFind finder; CList<CString> myList; int nCounter = 0; char szSearch[MAX_PATH]; // wenn Pfad = Working-Dir. der Anwendung if (p_bPathIsWorkingDir) { strcat_s(szSearch, MAX_PATH, "\\*.log"); } else { strcpy_s(szSearch, MAX_PATH, m_szLogPath); strcat_s(szSearch, MAX_PATH, \\*.log"); } BOOL bWorking = finder.FindFile(szSearch); while (bWorking) { bWorking = finder.FindNextFile(); myList.AddHead(finder.GetFileName()); nCounter++; } finder.Close(); // alte Logfiles löschen, aktuelle Logfiles stehen aufgrund des Filenames am Anfang der Liste if (nCounter > 10) { int j = nCounter - 10; for (int i = 0; i < j; i++) { AfxMessageBox(myList.RemoveTail()); if (!DeleteFile(myList.RemoveTail())) { DWORD error = GetLastError(); // error = ERROR_FILE_NOT_FOUND } } } }Ach ja: Habe Vista !
-
Wen Du allerdings FAT32 als Dateisystem hast, kannst Du nicht davon ausgehen, dass die Dateien sortiert aufgelistet werden.
-
Ok, ist vielleicht ein Nachteil, aber weiß jetzt auch nicht, ob das Programm überhaupt unter FAT32 eingesetzt werden soll.
-
Ok, funktioniert jetzt, man sollte natürlich DeleteFile auch einen Pfad und nicht nur den Filename geben.

Danke für eure Hilfe !!