Du bist nicht angemeldet.

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

11

25.06.2006, 17:36

Ich hab folgendes Problem:

Wenn ich mir ein float Wert ausgeben lassen möchte, kommt irgendwie immer nur der platzhalter in der Ausgabe an, aber nicht die Variable die ich ausgeben wollte.

C-/C++-Quelltext

1
2
3
4
5
    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);


Meine Deklaration von fTextout

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
void CLogFile::fTextout(const TCHAR *Text, ...)
{
    TCHAR buffer[MAX_BUFFER];
    va_list pArgList;

    va_start (pArgList, Text);

    wvsprintf(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);
    wvsprintf(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);
    wvsprintf(buffer, Text, pArgList);
    va_end(pArgList);

    Textout(Color, List, buffer);
}


Jemand einen Tipp

12

27.06.2006, 23:00

Ich zitiere mal mich selbst. :D

Zitat


Zusätzlich musste ich wvsprintf durch vswprintf ersetzen, da sonst die variablen nicht richtig ins Logfile geschrieben wurden. Ich poste einfach nochmal den (hoffentlich) richtigen Code:


PS: Ich bin mir natürlich nicht sicher, ob das stimmt, aber bei mir hats geholfen. Einen Versuch ist es wert denke ich. :D
PPS: Warum ist dieser Thread in "Sonstiges"?

13

23.07.2006, 13:34

Guten Morgen *gähn*

Ich sitze auch gerade am Buch "C++ für Spieleprogrammierer" und hatte ebenfalls das eingangs beschriebene Problem beim kompilieren der Logfile-Klasse mit dem Beispiel.

Es konnte nicht TCHAR[1024] in const char * konvertiert werden.

Lösung des Problems:
In den Projekteigenschaften habe ich den verwendeten Zeichensatz von Unicode auf Multibyte-Zeichensatz umgestellt. Außerdem musste ich das Microsoft Platform SDK installieren, weil mir sonst Headerdateien wie die windows.h fehlten.

Falls das mit der Platform SDK am Anfang des Buches erwähnt wurde, dann ist mir das wohl gerade entfallen.

Jetzt werden zwar noch ein paar Warnungen ausgeschmissen (fopen wurde als veraltet deklariert), aber es wird kompiliert, ich kann das Programm ausführen und mich an einer schönen Logfile erfreuen. ;-)

Viele Grüße,
Chris

Sheddex

unregistriert

14

23.07.2006, 13:58

Macht's so wie ich: Verzweifelt dran, überspringt das Kapitel und denkt immer "Das fehlt mir jetzt garantiert... aber wenn ich's anguck versteh ich's wieder nicht....".

Und irgendwann versteht man's auf einmal (spätestens in David's Buch, da dort die Logfile irgendwie... einfach gahalten ist).

Anonymous

unregistriert

15

23.07.2006, 13:59

Ich hätte es ja direkt auf Unicode portiert und Ruhe gehabt.

T-VIRUS

Alter Hase

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

16

23.07.2006, 15:15

Ich hab mir selbst einige Log-Funktionen gebaszelt :p die Funktionieren zwar nicht 1 A aber egal ;D

Hier die Codes:

Log.h

Quellcode

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
#ifndef CLog_H
#define CLog_H

// Standard-Includes
#include <fstream>

void LogStart();
void LogEnd();

//HTML Anfangstags Schreiben/schließen:
void StartHTML();
void EndHTML();

//Eine Überschrift machen:
void MakeHeadline(char* HeadlineText);

void MakeLine();

//Absätze machen:
//UNDONE: Kann man auch per MakeEntry();
//void OpenParagraph();
//void CloseParagraph();

//Eintrag ohne <br> in die html datei:
void LogEntryWithoutBreak(char* Entry);

//Eintrag mit <br> in die html datei:
void LogEntry(char* Entry);

//Eintrag mit <br> in die html datei:
void LogGoodEntry(char* GoodEntry);

//Eintrag mit <br> in die html datei:
void LogBadEntry(char* BadEntry);

void MakeBreak();

//Test html datei erstellen:
void CreateTestHtml();

void LogLink();

void LogSignatur();
 
#endif //CLog_H


Log.cpp(kann durch Log.c ersetzt werden ;D

Quellcode

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
#include "Log.h"
#include "HTML.h"

using namespace std;

ofstream Log("Errorlog.htm");

#include "dll.h"

//Log beginnen und htm datei formen:
void LogStart()
{
 StartHTML();
 MakeHeadline("--Log beginnt--");
 MakeLine();
}

void MakeLine()
{
 Log<<Line<<endl;
 MakeBreak();
}

//Log beenden und htm datei fertig schreiben:
void LogEnd()
{
 MakeLine();
 MakeHeadline("--Log beendet--");
 EndHTML();
}

void MakeHeadline(char* HeadlineText)
{
 Log<<HeadlineText<<endl;
 MakeBreak();
}


void StartHTML()
{
 LogEntryWithoutBreak(HTML_Start);
 LogEntryWithoutBreak(Body_Start);
}


void EndHTML()
{
 LogEntryWithoutBreak(Body_End);
 LogEntryWithoutBreak(HTML_End);
}

//Eintrag mit <br>
void LogEntry(char* Entry)
{
 Log<<Info<<Entry<<endl;
 MakeBreak();
}

//Eintrag mit <br>
void LogGoodEntry(char* GoodEntry)
{
 Log<<Sucess<<GoodEntry<<endl;
 MakeBreak();
}

//Eintrag mit <br>
void LogBadEntry(char* BadEntry)
{
 Log<<Error<<BadEntry<<endl;
 MakeBreak();
}

void MakeBreak()
{
 Log<<Break<<endl;
}


//Eintrag ohne <br>
void LogEntryWithoutBreak(char* Entry)
{
 Log<<Entry<<endl;
}


void LogLink()
{
 Log<<"<a href=www.t-virus.de.vu>Meine Seite</a>"<<Break<<endl;
}

void LogSignatur()
{
 Log<<Break<<endl;
}


void CreateTestHtml()
{
    //Leere HTML erstellen:
    LogStart();
    
    //Hier steht der gesamte Programm Code:
           
    //Eine Info schreiben:
    LogEntry("Ein Informations Eintrag!");
    
    //Einen Erfolg schreiben:
    LogGoodEntry("Etwas wurde erfolgreich ausgeführt!");
    
    //Einen Mißerfolg schreiben:
    LogBadEntry("Etwas ist fehlgeschlagen!");
    
    //Einen Link loggen:
    LogLink();
    
    //Eigene Signatur setzen:
    LogSignatur();
    
    //Log Datei und Programm beenden:
    LogEnd();
}


HTML.h (Enthält einige HTML defines :p)

Quellcode

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
#ifndef HTML_H
#define HTML_H

//HTML Syntaxe:
       
#define OpenTag         "<"
#define CloseTag        ">"
       
#define HTML_Start        "<html>"
#define HTML_End          "</html>"

#define Title_Start       "<title>"
#define Title_End         "</titel>"

//TODO: Body_Start kann geändert werden(Wenn ihr diese Datei gedownloaded habt ;)!
#define Body_Start       " <body vlink=#FF9900, alink=#FFFFFF, text=#000000, link=#FF9966>"
#define Body_End         " </body>"

#define Break            "<br>"

#define Paragraph_Start  "<p>"
#define Paragraph_End    "</p>"

#define Line             "<HR>"

#define Table_Start      "<table>"
#define Table_End        "</table>"

#define Info             "<b><font color=#808000>INFO:</font></b>"
#define Sucess           "<b><font color=#008000>ERFOLG:</font></b>"
#define Error            "<b><font color=#FF0000>FEHLER:</font></b>"

#define StartHREF        "<a href="
#define CloseHREF        "</a>


#endif //HTML_H


Ich werd mir aber noch die Mühe machen das alles zuverbessern ;)
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

Sheddex

unregistriert

17

23.07.2006, 15:24

Jetzt mal ernsthaft: Wozu bitte so viele #define ? Das ist sowas von sinnlos... vor allem hier, da es sogar übersichtlicher ist wenn man sie weglässt, da man dann direkt weiß was man vor sich hat...

Anonymous

unregistriert

18

23.07.2006, 15:27

Dieser code ist mehr als abartig.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

19

23.07.2006, 15:35

Also einen Sinn hat es, z.B. bei der farbigen Schrift, aber die Tag's brauchst du nun wirklich nicht angeben. Aber wenns dich glücklich macht :D

Ich würde wesentlich weniger Funktionen machen, dafür ne Klasse und spezielle Funktionen schreiben, die ein Großteil der Funktionalität deiner Funktionen besitzen und evtl. mit inline dann weiter überladen

Anonymous

unregistriert

20

23.07.2006, 17:45

Zitat von »"T-VIRUS"«

Ich hab mir selbst einige Log-Funktionen gebaszelt :p die Funktionieren zwar nicht 1 A aber egal ;D


Kein Wunder...

Werbeanzeige