Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
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 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#ifndef TSINGLETON #define TSINGLETON template<class T> class TSingleton { protected: static T *m_pSingleton; public: virtual ~TSingleton() { } inline static T* Get() { if (!m_pSingleton) m_pSingleton = new T; return (m_pSingleton); } static void Del() { if(m_pSingleton) { delete m_pSingleton; m_pSingleton = NULL; } } }; template <class T> T* TSingleton<T>::m_pSingleton = 0; #endif |
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 25 26 27 28 29 30 31 32 33 |
#ifndef __LOGFILE #define __LOGFILE #include <windows.h> #include <stdio.h> #include "Singleton.h" #define MAX_BUFFER 1024 #define L_FAIL false #define L_OK true #define g_pLogfile CLogFile::Get() enum FONTCOLORS{BLACK, RED, GREEN, BLUE, PURPLE}; class CLogFile : public TSingleton<CLogFile> { public: CLogFile (void); ~CLogFile (void); void CreateLogfile (const char * LogName); void WriteTopic (const TCHAR *Topic, int Size); void Textout (const TCHAR* Text); void Textout (int Color, const TCHAR *Text); void Textout (int Color, bool List, const TCHAR* Text); void fTextout (const TCHAR* Text, ...); void fTextout (int Color, const TCHAR* Text, ...); void fTextout (int Color, bool List, const TCHAR* Text, ...); void FunctionResult (const TCHAR * Name, bool Result); private: FILE *m_Logfile; }; #endif |
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 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
#include "StdAfx.h" #include "LogFile.h" CLogFile::CLogFile(void) { } CLogFile::~CLogFile(void) { Textout (TEXT("<br><br>End of logfile</font></body></html>")); fclose(m_Logfile); } void CLogFile::CreateLogfile(const char* LogName) { fopen_s(&m_Logfile, LogName, "w"); Textout(TEXT("<html><head><title>LogFile</title></head>")); Textout(TEXT("<body><font face = 'courier new'>")); WriteTopic(TEXT("Logfile"), 3); #ifdef _DEBUG Textout(TEXT("BUILD: DEBUG<br>")); #else TextOut(TEXT("BUILD: RELEASE<br>")); #endif Textout(TEXT("<a href = 'mailto:support@meineURL.de?subject=Logfile'>")); Textout(TEXT("Send E-Mail to me</a><br><br>")); fclose(m_Logfile); fopen_s(&m_Logfile, LogName, "a"); //m_Logfile = fopen_s(LogName, "a"); } void CLogFile::WriteTopic(const TCHAR *Topic, int Size) { Textout(TEXT("<table cellspacing='0' cellpadding='0' width='100%%'")); Textout(TEXT("bgcolor ='#DFDFE5'>\n <tr>\n <td>\n<font face='arial'")); fTextout(TEXT("size='+%i'>\n"), Size); Textout(Topic); Textout(TEXT("</font>\n</td>\n</tr>\n</table>\n<br>")); fflush(m_Logfile); } void CLogFile::Textout(const TCHAR *Text) { fwprintf(m_Logfile, Text); fflush(m_Logfile); } void CLogFile::Textout (int Color, const TCHAR *Text) { Textout (Color, false, Text); } void CLogFile::Textout(int Color, bool List, const TCHAR *Text) { if (List == true) Textout(TEXT("<li>")); switch(Color) { case BLACK: Textout(TEXT("<font color=black>")); break; case RED: Textout(TEXT("<font color=red>")); break; case GREEN: Textout(TEXT("<font color=green>")); break; case BLUE: Textout(TEXT("<font color=blue>")); break; case PURPLE: Textout(TEXT("<font color=purple>")); break; }; Textout(Text); Textout(TEXT("</font>")); if (List == false) Textout(TEXT("</br>")); else Textout(TEXT("</li>")); } void CLogFile::fTextout(const TCHAR *Text, ...) { TCHAR buffer[MAX_BUFFER]; va_list pArgList; va_start (pArgList, Text); swprintf(buffer, Text, pArgList); va_end(pArgList); Textout(buffer); } void CLogFile::fTextout(int Color, const TCHAR *Text, ...) { TCHAR buffer[MAX_BUFFER]; va_list pArgList; va_start (pArgList, Text); swprintf(buffer, Text, pArgList); va_end(pArgList); Textout(Color, buffer); } void CLogFile::fTextout(int Color, bool List, const TCHAR *Text, ...) { TCHAR buffer[MAX_BUFFER]; va_list pArgList; va_start (pArgList, Text); swprintf(buffer, Text, pArgList); va_end(pArgList); Textout(Color, List, buffer); } void CLogFile::FunctionResult(const TCHAR *Name, bool Result) { if(L_OK == Result) { Textout(TEXT("<table width='100%%' cellSpacing='1' cellPadding'5'")); Textout(TEXT("border = '0' bgcolor='#C0C0C0'><tr><td bgcolor=")); fTextout(TEXT("'#FFFFFF' width='35%%'>%s</TD>"), Name); Textout(TEXT("<td bgcolor='#FFFFFF' width ='30%%'><font color=")); Textout(TEXT("'green'>OK</FONT></TD><td bgcolor='#FFFFFF'")); Textout(TEXT("width='35%%'>-/-</TD></tr></table>")); } else { Textout(TEXT("<table width='100%%' cellSpacing='1' cellPadding='5'")); Textout(TEXT("border='0' bgcolor='#C0C0C0'><tr><td bgcolor=")); fTextout(TEXT("'#FFFFFF' width='35%%'> %s</TD>"), Name); Textout(TEXT("<td bgcolor='#FFFFFF' width ='30%%'><font color=")); Textout(TEXT("'red'>ERROR</FONT></TD><td bgcolor='#FFFFFF'")); Textout(TEXT("width='35%%'>-/-</TD></tr></table>")); } } |
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 25 26 27 28 29 30 31 32 33 34 35 36 37 |
// Kalista.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung. // #include "stdafx.h" #include "Logfile.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { float Kontrolle = 123.456f; g_pLogfile->CreateLogfile("Logfile.html"); g_pLogfile->WriteTopic(TEXT("Unformatierter Text"), 2); g_pLogfile->Textout(TEXT("Normaler, schwarzer Text<br>")); g_pLogfile->Textout(RED, TEXT("Farbiger Text")); g_pLogfile->Textout(BLUE, TEXT( "Farbiger Text in Liste 1")); g_pLogfile->Textout(BLUE, TEXT( "Farbiger Text in Liste 2")); g_pLogfile->Textout(BLUE, TEXT("Farbiger Text in Liste 3")); g_pLogfile->WriteTopic(TEXT("Formatierter Text"), 2); g_pLogfile->fTextout(TEXT("Kontrollvariable: %f <br>"), Kontrolle); g_pLogfile->fTextout(RED, TEXT("Kontrollvariable: %f"), Kontrolle); g_pLogfile->fTextout(GREEN, true, TEXT("Liste Kontrolle: %f"), Kontrolle); g_pLogfile->fTextout(GREEN, true, TEXT("Liste Kontrolle: %f"), Kontrolle * 2.0f); g_pLogfile->fTextout(GREEN, true, TEXT("Liste Kontrolle: %f"), Kontrolle * 4.0f); g_pLogfile->FunctionResult(TEXT("Funktion_Eins"), L_OK); g_pLogfile->FunctionResult(TEXT("Funktion_Zwei"), L_FAIL); g_pLogfile->Del(); return 0; } |
Phili
unregistriert
Zitat von »"Phili"«
Debugger. Niemand liest sich das durch.
C-/C++-Quelltext |
|
1 2 |
float Kontrolle = 123.456f; g_pLogfile->fTextout(TEXT("Kontrollvariable: %f <br>"), Kontrolle); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
void CLogFile::fTextout(const TCHAR *Text, ...) { TCHAR buffer[MAX_BUFFER]; va_list pArgList; va_start (pArgList, Text); swprintf(buffer, Text, pArgList); va_end(pArgList); Textout(buffer); } |
C-/C++-Quelltext |
|
1 2 3 4 5 |
void CLogFile::Textout(const TCHAR *Text) { fwprintf(m_Logfile, Text); fflush(m_Logfile); } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
void CLogFile::fTextout(const TCHAR *Text, float first, ...) { TCHAR buffer[MAX_BUFFER]; va_list pArgList; va_start (pArgList, first); swprintf(buffer, Text, pArgList); va_end(pArgList); Textout(buffer); } |
Zitat von »"Nox"«
Tja also wenn immer 0.000 rauskommt, du aber "float Kontrolle = 123.456f;" übergibst, kann es ja nur an der Methode liegen. Ich muss aber ehrlich sagen, dass ich mit dieser Art von Funktionen wenig zu tun hatte. Welche Werte sind den in der Liste pArgList vorhanden? Kann es sein dass die Funktion so heißen müsste:
C-/C++-Quelltext
1 2 3 4 5 6 7 8 9 10 void CLogFile::fTextout(const TCHAR *Text, float first, ...) { TCHAR buffer[MAX_BUFFER]; va_list pArgList; va_start (pArgList, first); swprintf(buffer, Text, pArgList); va_end(pArgList); Textout(buffer); }
Zitat von »"Nox"«
du missverstehst da was. Du musst soweit ich weiß eine Startvar angeben, ansonsten geht das nicht! Also ein float musst übergeben. Dannach können noch beliebig viele folgen...
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
void CLogfile::fTextout (const wchar_t *Text, ...) { wchar_t buffer[MAX_BUFFER]; //char-Buffer va_list pArgList; //Liste der übergebenen Argumente //vsprintf( //String aus den Argumenten erstellen va_start (pArgList, Text); wvsprintf (buffer, Text, pArgList); va_end (pArgList); //Erzeugten String schreiben Textout (buffer); } void CLogfile::Textout (const wchar_t *Text) { fwprintf(m_Logfile, Text); fflush(m_Logfile); } |
Zitat von »"Nox"«
Hast denn schonmal geschaut, ob die Werte in den übergebenen Var korrekt sind?
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 |
+ Text 0x004178ec "size='+%i'> " const wchar_t * + buffer 0x0012f4a8 "428;쳌쳌쳌쳌&wchar_t [1024] - pArgList 0xcccccccc <Schlechtes Ptr> char * CXX0030: Fehler: Ausdruck kann nicht ausgewertet werden + this 0x00358be8 {m_Logfile=0x10310c30 } CLogFile * const |
Werbeanzeige