Datei automatisch anlegen tages übergang

Winner

Erfahrenes Mitglied
Hallo zusammen! Ich habe ein Problem.

Ich habe eine MFC Anwendung vsc++ 6.0. Dort möchte ich Daten aufzeichen und in eine Datei schreiben! Das klappt auch das er mir stündlich die Dateien anlegt!

Aber wie mache ich es jetzt bei einem Monats bzw. Jahreswechsel.

Die Dateien werden Stündlich in einen Ordner geschrieben, der das aktuelle Datum enthält. Der Ordner wird immer kurz vor 23:59 angelegt.

Wie geht das nun, das ich das Datum von dem nächsten Tag bestimmen kann!

Mein satz im moment
Code:
SYSTEMTIME dtSystemTime;
   CString strDay, strMonth, strYear;
   CString strDirNameDay;
   char cStundenIndikator;

   ::GetLocalTime( &dtSystemTime);

   unsigned int uiSecond = dtSystemTime.wSecond;
   unsigned int uiMinute = dtSystemTime.wMinute;
   unsigned int uiHour = dtSystemTime.wHour;
   unsigned int uiDay = dtSystemTime.wDay;
   unsigned int uiMonth = dtSystemTime.wMonth;
   unsigned int uiYear = dtSystemTime.wYear;
   
   //Tag und Monat kleiner als 10, dann muss ich da eine Null beifügen

   
   if((uiHour == 0 || uiHour == 1 || uiHour == 2 || 
       uiHour == 3 || uiHour == 4 || uiHour == 5 || 
       uiHour == 6 || uiHour == 7 || uiHour == 8 || 
       uiHour == 9 || uiHour == 10 || uiHour == 11 ||
       uiHour == 12 || uiHour == 13 || uiHour == 14 ||
       uiHour == 15 || uiHour == 16 || uiHour == 17 || 
       uiHour == 18 || uiHour == 19 || uiHour == 20 ||
       uiHour == 21 || uiHour == 22 || uiHour == 23 || 
       uiHour == 24) && uiMinute == 27 /*&& uiSecond >45*/){
        
       
       /*if(uiHour == 23){
            uiDay = uiDay + 1;
            
       }*/

       //wie mache ich den Tages bzw. Monatswechsel u Jahreswechsel
       
       
       if(uiDay <10){   
            strDay.Format("%i", uiDay);
            strDay = "0" + strDay;
        }
        else
            strDay.Format("%i", uiDay);

        if(uiMonth <10){
            strMonth.Format("%i",uiMonth);
            strMonth = "0" + strMonth;
        }
        else
            strMonth.Format("%i",uiMonth);


        strYear.Format("%i", uiYear);

        strDirNameDay = strYear + strMonth + strDay;


    //AfxMessageBox(strDirNameDay);
    //CString strDirName = "X:\\Daniel\\TEST Cpp\\Super"; //also dieser Ordner muss schon bestehen

        strDir = strDir + "\\" + strDirNameDay;


        switch(uiHour){
        
            case 0: 
                cStundenIndikator = 'a';
                break;
            case 1: 
                cStundenIndikator = 'b';
                break;
            case 2: 
                cStundenIndikator = 'c';
                break;
            case 3: 
                cStundenIndikator = 'd';
                break;
            case 4: 
                cStundenIndikator = 'e';
                break;
            case 5: 
                cStundenIndikator = 'f';
                break;
            case 6: 
                cStundenIndikator = 'g';
                break;
            case 7: 
                cStundenIndikator = 'h';
                break;
            case 8: 
                cStundenIndikator = 'i';
                break;
            case 9: 
                cStundenIndikator = 'j';
                break;
            case 10: 
                cStundenIndikator = 'k';
                break;
            case 11: 
                cStundenIndikator = 'l';
                break;
            case 12: 
                cStundenIndikator = 'm';
                break;
            case 13: 
                cStundenIndikator = 'n';
                break;
            case 14: 
                cStundenIndikator = 'o';
                break;
            case 15: 
                cStundenIndikator = 'p';
                break;
            case 16: 
                cStundenIndikator = 'q';
                break;
            case 17: 
                cStundenIndikator = 'r';
                break;
            case 18: 
                cStundenIndikator = 's';
                break;
            case 19: 
                cStundenIndikator = 't';
                break;
            case 20: 
                cStundenIndikator = 'u';
                break;
            case 21: 
                cStundenIndikator = 'v';
                break;
            case 22: 
                cStundenIndikator = 'w';
                break;
            case 23: 
                cStundenIndikator = 'x';
                break;

        }
   
              
   CString strFileName;
   
   strFileName.Format("%c",cStundenIndikator);
   strFileName = "\\rtcm_monitor_" + strFileName + ".txt";
   strDir = strDir + strFileName;

   FILE *fNew;

   fNew = fopen(strDir, "r");

   if(fNew==0)   
    CreateFile(strDir,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,SECURITY_ANONYMOUS);

   fclose(fNew);

Kann mir einer helfen wie man das Datum vom nächsten Tag heraus bekommt. Einfach +1 geht ja nicht da manche Monate ja 30 und ander 31 haben (außer Feb).

Bitte um Hilfe winner
 
Also ich weiss nicht...

kann sein dass ich mich irre, aber ich denke, die einfachste Lösung ist noch immer selber durchrechnen...
Könnte natürlich auch eine funktion geben...
werd mal schauen
sag dir wieder bescheid
gruß
 
Ja danke! Also ich habe im Netz schon was gefunden. Da muss man sich auch alles selber machen. Dachte das gäbe es wie in vb und java!

Deswegen mit c++ mache ich gerade ein halbes Jahr rum!

Den link dazu poste ich morgen mal, versprochen, also nichts mehr rätseln: Naja gäbs ne andere Lösung wäre schön, aber so naja
 
Hmmmm....normalerweise bin ich mit fertigem Code nicht so großzügig...
Hätte eine Klasse gemacht was da alles in der Richtung kann
Wenn du die verwenden willst, schreib die email adresse (privat)
ich kanns dir aber frühestens dienstag abend schicke, komm da erst um 18 uhr heim
Avber nicht weitergeben :)
Sheel
 
Hab mal deinen rat gefolgt.

Also habe mir eine Klasse erstellt, die für mich die wichtigen Funktionen enthält.

Mehr brauch ich nicht.

Aber wäre mal ineresant deine Klasse zu sehne. Würde mich drüber freuen!


Gruß + bestendank
 
Nichts so :)
Ich posaun es nicht in die weite welt hinaus...
ich schicks dir gern
aber gib irgendein zeug an wo ichs schicken kann
gruß
 
was irgendein zeug! Ich poste hier bestimmt nicht meine mail addresse! Aber ich brauch es im momnet auch garnicht, nicdht das ich es nicht gern mal sehen würde, aber ab do bin ich eh erst mal niocht da! Des wegen Gruß
 
Zurück