Moin moin,
ich hab mich mal an dem probiert, was der Titel ankündigt.
Was meint ihr zum Lösungsweg?
Bin es folgendermaßen angegangen:
tbDateTime.h
|
C-/C++-Quelltext
|
1
2
3
|
#pragma once
char* tbGetDateTime(char* pcDateTime);
|
tbDateTime.cpp
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#include <TriBase.h>
#include <time.h>
#include <iostream>
char* tbGetDateTime(char* pcDateTime)
{
char cBuffer[22];
struct tm ptm;
time_t seconds = time(0);
errno_t err;
err = localtime_s(&ptm, &seconds);
sprintf_s(cBuffer, 22, "04i-02i-02i 02i:02i:02i",
(int)ptm.tm_year+1900,
(int)ptm.tm_mon+1,
(int)ptm.tm_mday,
(int)ptm.tm_hour,
(int)ptm.tm_min,
(int)ptm.tm_sec);
strcpy_s(pcDateTime, 22, cBuffer);
return pcDateTime;
}
|
dann hab ich die Funktion wie folgt in das Makro für den Info-Logeintrag eingebaut:
TriBase.h
|
C-/C++-Quelltext
|
1
|
#define TB_INFO(x){tbWriteToLog("<tr><td><font size=\"2\"><b><font color=\"#008000\">%s INFO:</font></b> %s</font></td><td><font size=\"2\"> (<i>%s</i>, Zeile <i>%d</i>, Funktion <i>%s</i>)</font></td></tr>", tbGetDateTime(new char), (x), tbRemoveDir(__FILE__), __LINE__, __TB_FUNCTION__);}
|
Das Resultat sieht dann wie folgt aus:
2010-07-31 11:21:26 INFO: TriBase-Engine wird initialisiert... (tribase.cpp, Zeile 86, Funktion tbInit)
2010-07-31 11:21:26 INFO: Initialisierung komplett! (tribase.cpp, Zeile 104, Funktion tbInit)
2010-07-31 11:21:55 INFO: TriBase-Engine wird heruntergefahren... (tribase.cpp, Zeile 113, Funktion tbExit)
2010-07-31 11:21:56 INFO: Alle Speicherbereiche freigegeben! (tbmemory.cpp, Zeile 116, Funktion tbMemExit)
2010-07-31 11:21:56 INFO: Herunterfahren abgeschlossen! (tribase.cpp, Zeile 149, Funktion tbExit)
Sooooo, was meint ihr, geht die Funktion so in Ordnung oder hab ich da murks gecoded?
Produziere ich dadurch, dass ich der tbDateTime-Funktion einfach mit new char Speicherplatz übergebe ein Speicherleck?
Gruß