Programmausführung hochzählen
-
Hallo,
ich will eine cpp-Win32-Anwendung bei jedem Programmstart um "1" hochzählen lassen! Am Ende eines Tages muss die "Zählung" wieder auf NULL gesetzt werden, so dass es am nächsten Tag wieder von vorne beginnen kann! Ich muss also jeden Tag in der Ausgabe sehen können, wie oft es an diesem Tag schon geöffnet wurde!
Gibt es da eine Funktion dafür oder hat irgendjemand eine Idee??(Ich wusste nicht, ob ich in "WinAPI" oder in "C++" schreiben sollte! Verzeiht mir, wenns das falsche Forum ist!
)
the_b
-
schreib doch ne kleine info.dat mit dem aktuellen tagesdatum und eine zahl dahinter,die die anzahl der programmstarts darstellt.
pseudocode:
lese_datei_aus(datum,zahl); if(datum==heute){ schreibe_zahl_in_datei(zahl+1); } else { schreibe_datum_in_datei(heute); schreibe_zahl_in_datei (1); zahl=1; } schreibe_zahl_auf_bildschirm(zahl); //und weiter gehts
-
Hallo,
ich melde mich hier nochmal, da im im Moment nicht weiter weiß! Hier mein Quelltext:#include <fstream> #include <iostream> #include <stdio.h> #include <time.h> #include <sys/timeb.h> #include <conio.h> using namespace std; int main() { int zahl=0; char date[128], datum[128]; time_t ltime; struct tm *today; _tzset(); time(<ime); today=localtime(<ime); strftime(date,128,"%d%m%y",today); _tzset(); time(<ime); today=localtime(<ime); strftime(datum,128,"%d%m%y",today); ifstream CounterIn("Counter.dat"); CounterIn>>date; CounterIn>>zahl; CounterIn.close(); if(date==datum) { zahl++; ofstream CounterOut("Counter.dat"); CounterOut<<date; CounterOut<<zahl; CounterOut.close(); } else { zahl=1; ofstream CounterOut("Counter.dat"); CounterOut<<datum; CounterOut<<zahl; CounterOut.close(); } ifstream Counter("Counter.dat"); Counter>>date; Counter>>zahl; Counter.close(); cout<<zahl; getch(); return 0; }
Weiß jemand, wie man das besser und vor allem richtig machen könnte?? Stimmt irgendwas an meinen Bedingungen nicht?? Mein Zähler zählt auf jeden Fall nicht hoch....
(habe diesen Code auch in einem anderen Forum gepostet, weiß aber nicht, ob ich dort eine Antwort bekomme! Das nur am Rande, falls es jemandem bekannt vorkommt....
)
the_b
-
Nun, ich hab deinen Code nur mal schnell überflogen, aber ein Fehler liegt auf jedenfall hier:
if(date==datum)
Mal abgesehen davon, dass die Namen unglücklich gewählt wurden, sind für den Compiler date und datum in erster Linie zwei Adressen, erst in zweiter Instanz char Arrays, die sich hinter den Adressen verbergen. Du vergleichst hier also zwei Adressen und nicht den Inhalt der Arrays. Da beide Instanzen aber nicht auf ein und derselben Adresse liegen, kommst du in den Zweig mit zahl++ usw. nie rein. Um char Arrays (respektive C-Strings) zu vergleichen gibt es für C die Funktion strcmp. In C++ allerdings nimmt man für Strings std::string, damit kann man zum Vergleichen dann auch die entsprechenden Operatoren verwenden.