Protokolleintrag ohne void????
-
Hi,
ich habe ein Programm geschrieben und soll jetzt nachträglich noch eine Protokolldatei erzeugen lassen. Ich habe jetzt das Problem das einige Aktionen die das Prog ausführt Global funktionieren sollen
z.B.:void CTestprogramm::Protokoll() { dateiname = fopen("C:\\Testprotokoll.txt", "a"); time_t rawtime; struct tm * timeinfo; fprintf(dateiname, "Programmstart am : "); fprintf(dateiname, asctime(timeinfo)); fclose(dateiname); }
so funktioniert es ja nur wie bekomme ich das ausserhalb dieser
void CTestprogramm::Protokoll()
zum laufen???
Der Sinn dahinter es soll jedesmal wenn das Programm gestartet wirddateiname = fopen("C:\\Testprotokoll.txt", "a"); time_t rawtime; struct tm * timeinfo; fprintf(dateiname, "Programmstart am : "); fprintf(dateiname, asctime(timeinfo)); fclose(dateiname);
ein Protokolleintrag erfolgen ohne das eine Void aufgerufen wird!!
Ich hoffe die frage ist halbwegs verständlichDanke für jede Anregung!!!!
-
Ohne böse sein zu wollen, weisst du überhaupt wofür void steht? Oder was du da überhaupt programmierst?
void steht für den Rückgabewert einer Funktion, nämlich keinen. Und du willst kein void aufrufen, sondern eine Methode einer Klasse.
Entweder legst du eine Instanz der Klasse CTestprogramm an und führst Protokoll() aus, oder du machst die Funktion direkt global, wenn du sie ja als solche benötigst.Prinzipiell wäre es sinnvol sich eine Klasse zu bauen die das mitloggen in eine Datei für dich übernimmt.
-
So richtig verständlich ist es nicht. Zur Zeit ist es also eine Methode in deiner Klasse. Wenn du diese aufrufst, dann wird richtig protokolliert. An irgend einer Stelle musst du diese Methode schon aurufen, sonst passiert ja nix.
Wo ist jetzt da dein eigentliches Problem?
-
Das Programm soll ohne das eine Funktion/Methode aufgerufen wird die Protokolldatei öffnen und Programmstart reinschreiben
Also beim Programmstart ohne das irgendwelche Aktionen vom Benutzer erfolgen
Momentan wird nur Protokolliert wenn ich meinen Button anklicke oder das Programm schliesse
-
an deiner stelle, würde ich vond er gui weggehen, und erstmal ordentlich die grundausdrücke lernen.
funktionen können immer aufgerufen werden, da muss der user nichts machen.
-
MarcusL. schrieb:
Das Programm soll ohne das eine Funktion/Methode aufgerufen wird die Protokolldatei öffnen und Programmstart reinschreiben
Also beim Programmstart ohne das irgendwelche Aktionen vom Benutzer erfolgen...Ich glaube otze hat recht - und du solltest dich erstmal mit den Grundlagen befassen. Wer sagt denn, dass eine Funktion nur von einem User aufgerufen werden kann???
int main(void) { Protokolliere(); return 0; }
In dem obigen Beispiel wird 'Protokolliere()' aufgerufen, OHNE dass ein Benutzer was klickt oder eingibt.
-
z.b.:
BYTE cDaten[256] = ""; DWORD size=500; dateiname = fopen("C:\\Test", "a"); void test::blabla(); { GetPrivateProfileString("Einwahldaten", "Telefonnummer", "NULL", test, size, (const char*)cDaten); fprintf(dateiname, "Testdatei wurde geöffnet und ausgelesen\n"); fprintf(dateiname, test); } fclose(dateiname);
so läuft es aber nicht!!!!
-
MarcusL. schrieb:
so läuft es aber nicht!!!!
Beschäftige dich mit den Grundlagen, dann verstehst du auch, wieso.
-
Dito und lass das mit OOP vielleicht noch ´ne Weile.
-
MarcusL. schrieb:
void test::blabla();
Tja, warum nur geht das so nicht? Ersteinmal solltest du das Semikolon hinter dem Methodennamen wegnehmen!!!
Und test::blabla bedeutet, dass blabla() eine Methode der Klasse test ist. Das ist aber in deinem Beispiel vollkommen sinnlos.
Versuch es doch mal so:void protokoll() { // dein protokoll-zeug } int main(void) { protokoll(); return 0; }
Und siehe da, wenn du das Prog startest, wird er dir dein Protokoll schreiben ...
Aber ich muss mich den anderen anschließen. Lern erstmal normale Programmierung, bevor du dich mit OOP und GUI rumschlägst. Da kommt man einfach zu schnell durcheinander, wenn man gleich alles vermischt.