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
Zitat
Fehler 3 error C2664: 'vsprintf': Konvertierung des Parameters 1 von 'TCHAR [1024]' in 'char *' nicht möglich c:\dokumente und einstellungen\$ilentsnooc\eigene dateien\ms visual c++\c++\c++ für spieleprogrammierer\kapitel 2\logfile\logfile\clogfile.cpp 113
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
//... //String aus den Argumenten erstellen va_start (pArgList, Text); vsprintf (buffer, Text, pArgList); va_end (pArgList); //Erzeugten String schreiben Textout (buffer); //... |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
//... // String aus den Argumenten erstellen va_start (pArgList, Text); vsprintf (buffer, Text, pArgList); va_end (pArgList); // Erzeugten String schreiben Textout (buffer); //... |
C-/C++-Quelltext |
|
1 2 3 4 5 |
//... //Logfile leeren und Kopf schreiben m_Logfile = fopen_s(&m_Logfile, LogName, "w"); Textout("<html><head><title>Logfile</title></head>"); //... |
Zitat
Fehler 1 error C2440: '=': 'errno_t' kann nicht in 'FILE *' konvertiert werden c:\dokumente und einstellungen\$ilentsnooc\eigene dateien\ms visual c++\c++\c++ für spieleprogrammierer\kapitel 2\logfile\logfile\clogfile.cpp 22
Anonymous
unregistriert
Zitat von »"X-treme"«
Da du einen Zeiger auf den FILE*-Zeiger übergibst und dieser von der Funktion gefüllt wird, kannst du dir das "m_Logfile = " sparen.
C-/C++-Quelltext |
|
1 |
fopen_s(&m_Logfile, LogName, "w"); |
Zitat von »"grek40"«
Ich vermute, dass in den Projekteinstellungen bei dir UNICODE und auf der CD ANSI Zeichen eingestellt sind. Kann aber auch andere Gründe haben
Anonymous
unregistriert
Zitat von »"$nooc"«
Zitat
Fehler 1 error C2440: '=': 'errno_t' kann nicht in 'FILE *' konvertiert werden c:\dokumente und einstellungen\$ilentsnooc\eigene dateien\ms visual c++\c++\c++ für spieleprogrammierer\kapitel 2\logfile\logfile\clogfile.cpp 22
Zitat von »"$nooc"«
Zitat
Fehler 3 error C2664: 'vsprintf': Konvertierung des Parameters 1 von 'TCHAR [1024]' in 'char *' nicht möglich c:\dokumente und einstellungen\$ilentsnooc\eigene dateien\ms visual c++\c++\c++ für spieleprogrammierer\kapitel 2\logfile\logfile\clogfile.cpp 113
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 |
#ifndef __CLOGFILE #define __CLOGFILE //includes #include <windows.h> #include <stdio.h> #include "singleton.hpp" //defines #define MAX_BUFFER 1024 //Maximale Größe für den Buffer #define L_FAIL false //Funktion erfolgreich #define L_OK true //Funktion ist fehlgeschlagen #define g_pLogfile CLogfile::Get() //Makro zur einfachen verwendung //Farben für den Text enum FONTCOLORS { BLACK, RED, GREEN, BLUE, PURPLE }; //Klassendeklaration class CLogfile : public TSingleton<CLogfile> { public: //Memberfunktionen (Deklarationen bzw. Prototypen) CLogfile (); ~CLogfile (); void CreateLogfile (const char *LogName); void WriteTopic (const char *Topic, int Size); void Textout (const wchar_t *Text); void Textout (const char *Text); void Textout (int Color, const wchar_t *Text); void Textout (int Color, bool List, const wchar_t *Text); void fTextout (const wchar_t *Text, ...); void fTextout (const char *Text, ...); void fTextout (int Color, const wchar_t *Text, ...); void fTextout (int Color, bool List, const wchar_t *Text, ...); void FunctionResult (const wchar_t *Name, bool Result); //Membervariablen 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 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
//includes #include "logfile.hpp" //Konstruktor CLogfile::CLogfile() { } //Destruktor CLogfile::~CLogfile() { //Logfile-End schreiben und Datei schließen Textout ("<br><br>End of logfile</font></body></html>"); fclose(m_Logfile); } //Create Logfile //... erstellen der Logfile void CLogfile::CreateLogfile (const char *LogName) { //Logfile leeren und Kopf schreiben fopen_s(&m_Logfile,LogName, "w"); Textout("<html><head><title>Logfile</title></head>"); Textout("<body><font face='courier new'>"); WriteTopic("Logfile", 3); //Aktuelle Build-Konfiguration ausgeben #ifdef _DEBUG Textout("BUILD: DEBUG<br>"); #else Textout("BUILD: RELEASE<br>"); #endif //Link für E-Mail Adresse schreiben Textout("<a href='mailto:snooc@gmx.at?subject=Logfile'>"); Textout("E-Mail</a><br><br>"); //Logfile schließen und mit append wieder öffnen fclose (m_Logfile); fopen_s(&m_Logfile, LogName, "a"); } //WriteTopic void CLogfile::WriteTopic (const char *Topic, int Size) { //Überschrift schreiben und flushen Textout("<table cellspacing='0' cellpadding='0' width='100%%' "); Textout("bgcolor='#DFDFE5'>\n<tr>\n<td><font face='arial' "); fTextout("size='+%i'>\n", Size); Textout(Topic); Textout("</font>\n</td>\n<tr>\n</table>\n<br>"); fflush(m_Logfile); } //''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' //Textout void CLogfile::Textout (const wchar_t *Text) { fwprintf(m_Logfile, Text); fflush(m_Logfile); } void CLogfile::Textout (const char *Text) { fprintf(m_Logfile, Text); fflush(m_Logfile); } void CLogfile::Textout (int Color, const wchar_t *Text) { Textout (Color, false, Text); } void CLogfile::Textout (int Color, bool List, const wchar_t *Text) { //Listen-Tag schreiben if (List == true) {Textout("<li>");} //Farbtag schreiben switch (Color) { case BLACK: Textout("<font color=black>"); break; case RED: Textout("<font color=red>"); break; case GREEN: Textout("<font color=green>"); break; case BLUE: Textout("<font color=blue>"); break; case PURPLE: Textout("<font color=purple>"); break; }; //Text schreiben Textout(Text); Textout("</font>"); if (List == false) Textout ("<br>"); else Textout("</li>"); } //''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' //fTextout 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::fTextout (int Color, const wchar_t *Text, ...) { wchar_t buffer[MAX_BUFFER]; //char-Buffer va_list pArgList; //Liste der übergebenen Argumete //String aus den Argumenten erstellen va_start (pArgList, Text); wvsprintf (buffer, Text, pArgList); va_end (pArgList); //Erzeugten String schreiben Textout (Color, buffer); } void CLogfile::fTextout (int Color, bool List, const wchar_t *Text, ...) { wchar_t buffer[MAX_BUFFER]; //char-Buffer va_list pArgList; //Liste der übergebenen Argumete //String aus den Argumenten erstellen va_start (pArgList, Text); wvsprintf (buffer, Text, pArgList); va_end (pArgList); //Erzeugten String schreiben Textout (Color, List, buffer); } //''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' //FunctionResult void CLogfile::FunctionResult (const wchar_t *Name, bool Result) { if (L_OK == Result) { Textout("<table width='100%%' cellSpacing='1' cellPadding='5'"); Textout(" border='0' bgcolor='#C0C0C0'><tr><td bgcolor="); fTextout("'#FFFFFF' width='35%%'>%s</TD>", Name); Textout("<td bgcolor='#FFFFFF' width='30%%'><font color ="); Textout("'green'>OK</FONT></TD><td bgcolor='#FFFFFF' "); Textout("width='35%%'>-/-</TD></tr></table>"); } else { Textout("<table width='100%%' cellSpacing='1' cellPadding='5'"); Textout(" border='0' bgcolor='#C0C0C0'><tr><td bgcolor="); fTextout("'#FFFFFF' width='35%%'>%s</TD>", Name); Textout("<td bgcolor='#FFFFFF' width='30%%'><font color ="); Textout("'red'>ERROR</FONT></TD><td bgcolor='#FFFFFF' "); Textout("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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
// C++ für Spieleprogrammierer // Listing 8.11 // Anwendung der Logfile-Klasse // #include <iostream> #include "Logfile.hpp" using namespace std; // Hauptprogramm // int main () { // Variablen // float Kontrolle = 123.456f; // Variable zum Testen // Neues Logfile erstellen g_pLogfile->CreateLogfile ("Logfile.html"); // Überschrift erzeugen g_pLogfile->WriteTopic ("Unformatierter Text", 2); // Unformatierten Text ausgeben g_pLogfile->Textout ("Normaler, schwarzer Text<br>"); g_pLogfile->Textout (RED, "Farbiger Text"); g_pLogfile->Textout (BLUE, "Farbiger Text in Liste (1)"); g_pLogfile->Textout (BLUE, "Farbiger Text in Liste (2)"); g_pLogfile->Textout (BLUE, "Farbiger Text in Liste (3)"); // Überschrift erzeugen g_pLogfile->WriteTopic ("Formatierter Text", 2); // Formatierten Text ausgeben g_pLogfile->fTextout ("Kontrollvariable: %f<br>", Kontrolle); g_pLogfile->fTextout (RED, "Kontrollvariable: %f", Kontrolle); g_pLogfile->fTextout (GREEN, true, "Liste Kontrolle: %f", Kontrolle); g_pLogfile->fTextout (GREEN, true, "Liste Kontrolle: %f", Kontrolle*2.0f); g_pLogfile->fTextout (GREEN, true, "Liste Kontrolle: %f", Kontrolle*4.0f); // Eine erfolgreiche und eine fehlgeschlagene Funktion g_pLogfile->FunctionResult ("Funktion_Eins", L_OK); g_pLogfile->FunctionResult ("Funktion_Zwei", L_FAIL); // Logfile schließen g_pLogfile->Del (); return 0; } |
C-/C++-Quelltext |
|
1 |
void fTextout (int Color, const char *Text, ...); |
C-/C++-Quelltext |
|
1 |
g__pLogfile->Textout (BLUE, "Farbiger Text in Liste (1)"); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 |
void CLogfile::WriteTopic (const char *Topic, int Size) { //Überschrift schreiben und flushen Textout("<table cellspacing='0' cellpadding='0' width='100%%' "); Textout("bgcolor='#DFDFE5'>\n<tr>\n<td><font face='arial' "); fTextout("size='+%i'>\n", Size); /*Hier bringt er den Fehler: 1>LogFile_Code.obj : error LNK2019: unresolved external symbol "public: void __cdecl CLogfile::fTextout(char const *,...)" (?fTextout@CLogfile@@QAAXPBDZZ) referenced in function "public: void __thiscall CLogfile::WriteTopic(char const *,int)" (?WriteTopic@CLogfile@@QAEXPBDH@Z)*/ Textout(Topic); Textout("</font>\n</td>\n<tr>\n</table>\n<br>"); fflush(m_Logfile); } |
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 |
void CLogfile::FunctionResult (const wchar_t *Name, bool Result) { if (L_OK == Result) { Textout("<table width='100%%' cellSpacing='1' cellPadding='5'"); Textout(" border='0' bgcolor='#C0C0C0'><tr><td bgcolor="); fTextout("'#FFFFFF' width='35%%'>%s</TD>", Name); /*Hier bringt er den Fehler: 1>LogFile_Code.obj : error LNK2019: unresolved external symbol "public: void __cdecl CLogfile::fTextout(char const *,...)" (?fTextout@CLogfile@@QAAXPBDZZ) referenced in function "public: void __thiscall CLogfile::FunctionResult(wchar_t const *,bool)" (?FunctionResult@CLogfile@@QAEXPB_W_N@Z)*/ Textout("<td bgcolor='#FFFFFF' width='30%%'><font color ="); Textout("'green'>OK</FONT></TD><td bgcolor='#FFFFFF' "); Textout("width='35%%'>-/-</TD></tr></table>"); } else { Textout("<table width='100%%' cellSpacing='1' cellPadding='5'"); Textout(" border='0' bgcolor='#C0C0C0'><tr><td bgcolor="); fTextout("'#FFFFFF' width='35%%'>%s</TD>", Name); Textout("<td bgcolor='#FFFFFF' width='30%%'><font color ="); Textout("'red'>ERROR</FONT></TD><td bgcolor='#FFFFFF' "); Textout("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 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 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
//includes #include "logfile.hpp" //Konstruktor CLogfile::CLogfile() { } //Destruktor CLogfile::~CLogfile() { //Logfile-End schreiben und Datei schließen Textout ("<br><br>End of logfile</font></body></html>"); fclose(m_Logfile); } //Create Logfile //... erstellen der Logfile void CLogfile::CreateLogfile (const char *LogName) { //Logfile leeren und Kopf schreiben fopen_s(&m_Logfile,LogName, "w"); Textout("<html><head><title>Logfile</title></head>"); Textout("<body><font face='courier new'>"); WriteTopic("Logfile", 3); //Aktuelle Build-Konfiguration ausgeben #ifdef _DEBUG Textout("BUILD: DEBUG<br>"); #else Textout("BUILD: RELEASE<br>"); #endif //Link für E-Mail Adresse schreiben Textout("<a href='mailto:snooc@gmx.at?subject=Logfile'>"); Textout("E-Mail</a><br><br>"); //Logfile schließen und mit append wieder öffnen fclose (m_Logfile); fopen_s(&m_Logfile, LogName, "a"); } //WriteTopic void CLogfile::WriteTopic (const char *Topic, int Size) { //Überschrift schreiben und flushen Textout(L"<table cellspacing='0' cellpadding='0' width='100%%' "); Textout(L"bgcolor='#DFDFE5'>\n<tr>\n<td><font face='arial' "); fTextout(L"size='+%i'>\n", Size); Textout(Topic); Textout(L"</font>\n</td>\n<tr>\n</table>\n<br>"); fflush(m_Logfile); } //''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' //Textout void CLogfile::Textout (const wchar_t *Text) { fwprintf(m_Logfile, Text); fflush(m_Logfile); } void CLogfile::Textout (const char *Text) { fprintf(m_Logfile, Text); fflush(m_Logfile); } void CLogfile::Textout (int Color, const wchar_t *Text) { Textout (Color, false, Text); } void CLogfile::Textout (int Color, bool List, const wchar_t *Text) { //Listen-Tag schreiben if (List == true) {Textout("<li>");} //Farbtag schreiben switch (Color) { case BLACK: Textout("<font color=black>"); break; case RED: Textout("<font color=red>"); break; case GREEN: Textout("<font color=green>"); break; case BLUE: Textout("<font color=blue>"); break; case PURPLE: Textout("<font color=purple>"); break; }; //Text schreiben Textout(Text); Textout("</font>"); if (List == false) Textout ("<br>"); else Textout("</li>"); } //''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' //fTextout 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); vswprintf (buffer, Text, pArgList); va_end (pArgList); //Erzeugten String schreiben Textout (buffer); } void CLogfile::fTextout (int Color, const wchar_t *Text, ...) { wchar_t buffer[MAX_BUFFER]; //char-Buffer va_list pArgList; //Liste der übergebenen Argumete //String aus den Argumenten erstellen va_start (pArgList, Text); vswprintf (buffer, Text, pArgList); va_end (pArgList); //Erzeugten String schreiben Textout (Color, buffer); } void CLogfile::fTextout (int Color, bool List, const wchar_t *Text, ...) { wchar_t buffer[MAX_BUFFER]; //char-Buffer va_list pArgList; //Liste der übergebenen Argumete //String aus den Argumenten erstellen va_start (pArgList, Text); vswprintf (buffer, Text, pArgList); va_end (pArgList); //Erzeugten String schreiben Textout (Color, List, buffer); } //''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' //FunctionResult void CLogfile::FunctionResult (const wchar_t *Name, bool Result) { if (L_OK == Result) { Textout("<table width='100%%' cellSpacing='1' cellPadding='5'"); Textout(" border='0' bgcolor='#C0C0C0'><tr><td bgcolor="); fTextout(L"'#FFFFFF' width='35%%'>%s</TD>", Name); Textout("<td bgcolor='#FFFFFF' width='30%%'><font color ="); Textout("'green'>OK</FONT></TD><td bgcolor='#FFFFFF' "); Textout("width='35%%'>-/-</TD></tr></table>"); } else { Textout("<table width='100%%' cellSpacing='1' cellPadding='5'"); Textout(" border='0' bgcolor='#C0C0C0'><tr><td bgcolor="); fTextout(L"'#FFFFFF' width='35%%'>%s</TD>", Name); Textout("<td bgcolor='#FFFFFF' width='30%%'><font color ="); Textout("'red'>ERROR</FONT></TD><td bgcolor='#FFFFFF' "); Textout("width='35%%'>-/-</TD></tr></table>"); } } |
C-/C++-Quelltext |
|
1 |
g_pLogfile->fTextout (L"Kontrollvariable: %f<br>", Kontrolle); |
Werbeanzeige