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

1

27.06.2007, 19:42

Bin mit Kapitel 8 (insbesondere Logfile-Klasse) überfordert

Um keinen Argwohn zu wecken! Ich habe jedes Kapitel mehrmals durchgelesen, falls dies notwendig war, was es auch hinundwieder bedurfte, dennoch habe ich alles bis zum jetzigen Zeitpunkt verstanden.
Betreffend den vorangegangenen Kapiteln muss ich aber meine hochachtung aussprechen, da diese einfach perfekt für Anfänger (so wie mich) beschrieben waren. Umso größer war die Enttäuschung als ich in Kapitel 8 insbesondere Logfile-Klasse angelangt bin. Ständig werden neue Begriffe genannt, mit denen ich einfach nichts anfangen kann. Hab natürlich auch fleißig Wikipedia besucht, doch da sollte ja nicht der Sinn des Buches liegen, vorallem da Wikipedia einfach nicht so schöne, wenn überhaupt Beispiele nennt wie zum Beispiel "Variablen als Schubladen"<- einfach nur Klasse :o .
Naja eventuell was ich natürlich hoffe betrifft dies nur die "Fortgeschrittenen Themen also Kapitel 8" doch nun zu meinen Fragen:

1.Was ist ein Makro?-> War siehe oben schon auf Wikipedia, aber ich kann mir unter dieser Erklärung die ich dort vorgefunden habe nichts vorstellen.

2.Was ist ein tag bzw. ein HTML-tag?

3.Formatierter Text? <- Dabei handelt es sich doch nur um Text der durch besondere Merkmale (z.b Farbe, Schrift, etc..) hervorgehoben wird?!

4.Was ist ein Buffer?

5.Warum aufeinmal HTML? und muss ich die Sprache schon können um weiter im Buch vorranschreiten zu können?

6. Was ist eine Batch-Datei?

Vorerst sollten alle Fragen gestellt sein, deren Antwort ich nicht kenne.
Ich hoffe ihr könnt mir behilflich sein.
"Wenn es keine Milch gäbe, würde ich auf Kaffee verzichten."

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

2

27.06.2007, 19:57

kapitel 8 ist bei mir "das zweite spiel"

1. ein makro ist eine präprozessor direktive, d.h. eine anweisung, die noch vor dem kompilieren durch den dahinterstehenden text ersetzt wird
zB #define PI 3.141
alle PIs die in deinem quelltext stehen werden also durch die eigentlich zahl ersetzt. man benutzt makros in der regel um sich ein bisschen schreibarbeit zu sparen

2. ein html tag ist einfach nur eine beschreibung, die vom interpreter ( in dem fall der browser ) übersetzt wird
zB <br /> um einen zeilenumbruch zu machen

3. ja

4. in dem fall einfach nur ein array in das zwischenzeitlich der text geschrieben wird

5. nein.... html wird ausschliesslich zur verschönerung der log datei benutzt und du musst dich eigentlich nicht damit beschäftigen

6. wo steht das denn?
"Don't trust your eyes: They are a hell of a lot smarter than you are"

3

27.06.2007, 20:06

Erstmal Danke für die Antworten.
Wie meinst du das mit "das zweite Spiel"?

ZU 6: Bei der Dateien verwaltung heißt es zum error-code " Für uns ist das eigentlich unwichtig, da dieser errorcode nur dann zum Tragen kommt, wenn er auch geprüft wird. ... Würde man disen Wert nun prüfen (etwa aus einer Batch-Datei heraus), so..."

Zu 1: Ein präprozessorbefehl/direktive wird ja noch vor dem eigentlichen Compilieren des Programms ausgefüht und es entsteht eine temporäre Quelltextdatei, doch was hat das jetzt mit der Textersetzung #define zu tun? soll das heißen das egal ob bei #define oder #include einfach nur eine Textersetzung durchgeführt wird? Wenn ich das nun richtig verstanden habe ist ein, egal welcher Präprozessorbefehl ein Makro also z.b #define und #include?
"Wenn es keine Milch gäbe, würde ich auf Kaffee verzichten."

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

4

27.06.2007, 20:09

re1. ich denke, es ist von einer windows batch datei die rede... eine ausführbare .bat datei, die nur ein paar konsolenbefehle ausführt.

re2. ja, einfach nur eine textersetzung
zb wird mit #include <windows.h> einfach nur der inhalt von windows.h in deinen quelltext "reinkopiert"
"Don't trust your eyes: They are a hell of a lot smarter than you are"

5

27.06.2007, 20:20

Der gesamte Inhalt, somit alle vorhandenen Funktionen, Variablen also komplett alles?
Ich dachte man könne nur wie bei: #define Altertext Neuertext
den zum ersetzenden Text gefolgt vom neuen Text, Wert usw. ersetzen und nicht den gesamten Inhalt von z.b einer Funktion.

Wie ist es den bei #ifdef, #else und #endif diese sind wie man kann unschwer erkennen kann von if, else -Bedingugen abgeleitet, nur was bewirken sie den genau? <-Kommen auch in der Logfile-Klasse vor.

Außerdem ist mir nocht aufgefallen das er bei den Funktionen g_P benutzt!
Deren bin ich mir auch nicht im klaren.

Wie du wahrscheinlich bemerkt hast, bin ich mir über die Logfile-Klasse nicht wirklich bewusst, soll heißen ich bin ganz schön verwirrt und kapier grad garnichts.

Was meintest du mit: "kapitel 8 ist bei mir das zweite Spiel"?
Da ich anhand deines Wissens vermute, das du dieses Kapitel verstanden hast, meintest du sicherlich etwas anderes mit "kapitel 8 ist bei mir das zweite Spiel"
"Wenn es keine Milch gäbe, würde ich auf Kaffee verzichten."

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

6

27.06.2007, 20:25

öhm...
ich habe die foren verwechselt :) in davids buch ist kapital 8 "das zweite spiel"... das buch was du hast, hab ich nicht gelesen, sry :)

#ifdef etc benutzt man zur sog. bedingten kompilierung

zum beispiel kannst du dann sagen
#ifdef _WIN32 // wenn windows läuft
// mach das und das
#else
// mach was anderes
#endif

je nachdem, welche symbole definiert sind entsteht ein anderes programm...
"Don't trust your eyes: They are a hell of a lot smarter than you are"

7

27.06.2007, 20:33

Klasse danke.
Also ist praktisch #ifdef soetwas wie der große Bruder von if-Bedingung.
Soll heißen if-Bedingung kümmert sich eher um kleine Dinge wie textausgabe, und #ifdef um große Dinge wie Funktionen und solche Sachen.

Ich hoffe du verstehst so ungefähr was ich meine, da ich es sehr konfuse beschrieben habe.

was ich noch wissen wollte ist, was es mit dem g_pLogfile aufsichhat, also das g_p?!
"Wenn es keine Milch gäbe, würde ich auf Kaffee verzichten."

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

8

27.06.2007, 20:37

Also ich finde, du kannst dieses Kapitel weglassen. Ich hatte das gleiche Problem, wie du. Habe dann ein wenig entmutig hald weitergemacht, aber dann schnell gemerkt, dass er selber im Buch keine Verwendung der Logfile macht. Ich finde es einfach wichtig, dass du weisst, was eine Logfile ist, was sie so ungefähr macht und für was das gut sein soll und schliesslich, dass du in grösseren Projekten unbedingt ein gutes System (Logfile) benutzen solltest. Für Debug- Arbeit.


g_p bedeutet, dass ein globaler (g = global) Zeiger (p = pointer) benutzt wird.

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

9

27.06.2007, 20:38

das voranstehende g_p nennt sich ungarische notation und ist einfach nur eine allgemeine schreibweise zur besseren lesbarkeit
g_ = globale variable
p = pointer, also zeiger

#if und if sind zwei verschiedene dinge!

if ist eine logische bedingung, die du für alle abfragen in deinem programm brauchst

#if ist eine präprozessor direktive!
heisst:
#if SYMBOL
DANN SCHREIBE DEN TEXT IN DAS PROGRAMM
#else
SONST DIESEN HIER
#endif

#if wirst du eher selten brauchen
"Don't trust your eyes: They are a hell of a lot smarter than you are"

10

27.06.2007, 20:40

So, nun zu einen anderen Problem.
Die Logfile-Klasse lässt sich nicht kompilieren, ich erhalte immer diese Fehlermeldungen.
Was tun?

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
[quote]Buildprotokoll[]
        

------- Buildvorgang wurde gestartet: Projekt: Listing 8.15, Konfiguration: Debug|Win32 -------

Befehlszeilen
        

Der Optimierungscompiler wird in dieser Version von Visual C++ nicht unterstützt.
Die temporäre Datei "c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Debug\RSP000001.rsp" wird erstellt. Inhalt:
[
/D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Gm /EHsc /RTC1 /MLd /Fo"Debug/" /Fd"Debug/vc70.pdb" /W3 /c /Wp64 /ZI /TP
".\Anwendung der Logfile-Klasse.cpp"
]Erstellen der Befehlszeile "cl.exe @"c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Debug\RSP000001.rsp" /nologo"

Ausgabefenster
        

Kompilieren...
Anwendung der Logfile-Klasse.cpp
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28) : error C2504: 'CSingleton': Basisklasse undefiniert
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28) : error C2143: Syntaxfehler: Es fehlt ',' vor '<'
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(19) : error C2039: 'Get': Ist kein Element von 'CLogfile'
        c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28): Siehe Deklaration von 'CLogfile'
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(19) : error C2227: Der linke Teil von '->CreateLogfile' muss auf Klasse/Struktur/Union zeigen
        Typ ist ''unknown-type''
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(19) : error C3861: 'Get': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(22) : error C2039: 'Get': Ist kein Element von 'CLogfile'
        c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28): Siehe Deklaration von 'CLogfile'
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(22) : error C2227: Der linke Teil von '->WriteTopic' muss auf Klasse/Struktur/Union zeigen
        Typ ist ''unknown-type''
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(22) : error C3861: 'Get': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(25) : error C2039: 'Get': Ist kein Element von 'CLogfile'
        c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28): Siehe Deklaration von 'CLogfile'
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(25) : error C2227: Der linke Teil von '->Textout' muss auf Klasse/Struktur/Union zeigen
        Typ ist ''unknown-type''
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(25) : error C3861: 'Get': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(26) : error C2039: 'Get': Ist kein Element von 'CLogfile'
        c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28): Siehe Deklaration von 'CLogfile'
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(26) : error C2227: Der linke Teil von '->Textout' muss auf Klasse/Struktur/Union zeigen
        Typ ist ''unknown-type''
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(26) : error C3861: 'Get': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(27) : error C2039: 'Get': Ist kein Element von 'CLogfile'
        c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28): Siehe Deklaration von 'CLogfile'
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(27) : error C2227: Der linke Teil von '->Textout' muss auf Klasse/Struktur/Union zeigen
        Typ ist ''unknown-type''
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(27) : error C3861: 'Get': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(28) : error C2039: 'Get': Ist kein Element von 'CLogfile'
        c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28): Siehe Deklaration von 'CLogfile'
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(28) : error C2227: Der linke Teil von '->Textout' muss auf Klasse/Struktur/Union zeigen
        Typ ist ''unknown-type''
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(28) : error C3861: 'Get': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(29) : error C2039: 'Get': Ist kein Element von 'CLogfile'
        c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28): Siehe Deklaration von 'CLogfile'
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(29) : error C2227: Der linke Teil von '->Textout' muss auf Klasse/Struktur/Union zeigen
        Typ ist ''unknown-type''
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(29) : error C3861: 'Get': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(32) : error C2039: 'Get': Ist kein Element von 'CLogfile'
        c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28): Siehe Deklaration von 'CLogfile'
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(32) : error C2227: Der linke Teil von '->WriteTopic' muss auf Klasse/Struktur/Union zeigen
        Typ ist ''unknown-type''
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(32) : error C3861: 'Get': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(35) : error C2039: 'Get': Ist kein Element von 'CLogfile'
        c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28): Siehe Deklaration von 'CLogfile'
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(35) : error C2227: Der linke Teil von '->fTextout' muss auf Klasse/Struktur/Union zeigen
        Typ ist ''unknown-type''
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(35) : error C3861: 'Get': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(36) : error C2039: 'Get': Ist kein Element von 'CLogfile'
        c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28): Siehe Deklaration von 'CLogfile'
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(36) : error C2227: Der linke Teil von '->fTextout' muss auf Klasse/Struktur/Union zeigen
        Typ ist ''unknown-type''
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(36) : error C3861: 'Get': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(37) : error C2039: 'Get': Ist kein Element von 'CLogfile'
        c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28): Siehe Deklaration von 'CLogfile'
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(37) : error C2227: Der linke Teil von '->fTextout' muss auf Klasse/Struktur/Union zeigen
        Typ ist ''unknown-type''
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(37) : error C3861: 'Get': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(39) : error C2039: 'Get': Ist kein Element von 'CLogfile'
        c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28): Siehe Deklaration von 'CLogfile'
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(39) : error C2227: Der linke Teil von '->fTextout' muss auf Klasse/Struktur/Union zeigen
        Typ ist ''unknown-type''
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(39) : error C3861: 'Get': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(41) : error C2039: 'Get': Ist kein Element von 'CLogfile'
        c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28): Siehe Deklaration von 'CLogfile'
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(41) : error C2227: Der linke Teil von '->fTextout' muss auf Klasse/Struktur/Union zeigen
        Typ ist ''unknown-type''
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(41) : error C3861: 'Get': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(45) : error C2039: 'Get': Ist kein Element von 'CLogfile'
        c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28): Siehe Deklaration von 'CLogfile'
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(45) : error C2227: Der linke Teil von '->FunctionResult' muss auf Klasse/Struktur/Union zeigen
        Typ ist ''unknown-type''
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(45) : error C3861: 'Get': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(46) : error C2039: 'Get': Ist kein Element von 'CLogfile'
        c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28): Siehe Deklaration von 'CLogfile'
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(46) : error C2227: Der linke Teil von '->FunctionResult' muss auf Klasse/Struktur/Union zeigen
        Typ ist ''unknown-type''
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(46) : error C3861: 'Get': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(49) : error C2039: 'Get': Ist kein Element von 'CLogfile'
        c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Logfile.hpp(28): Siehe Deklaration von 'CLogfile'
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(49) : error C2227: Der linke Teil von '->Del' muss auf Klasse/Struktur/Union zeigen
        Typ ist ''unknown-type''
c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Anwendung der Logfile-Klasse.cpp(49) : error C3861: 'Get': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden

Ergebnisse
        

Das Build-Protokoll wurde unter "file://c:\Users\Christian\Documents\Visual Studio Projects\Listing 8.15\Debug\BuildLog.htm" gespeichert.
Listing 8.15 - 50 Fehler, 0 Warnung(en)[/quote]



[b]Nun der Quelltext dazu:


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
#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 war 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 CSingleton<CLogfile>
{
    // Memberfunktionen

public:

         CLogfile ();
         ~CLogfile ();
    void CreateLogfile (const char *LogName);
    void WriteTopic    (const char *Topic, int Size);
    void Textout       (const char *Text);
    void Textout       (int Color, const char *Text);
    void Textout       (int Color, bool List, const char *Text);
    void fTextout      (const char *Text, ...);
    void fTextout      (int Color, const char *Text, ...);
    void fTextout      (int Color, bool List, const char *Text, ...);
    void FunctionResult(const char *Name, bool Result);

    // Membervariablen

private:

    FILE *m_Logfile;

}; // Klasse-CLogfile


#endif


Und nun der Quelltext zur Implementierung Logfile-Klasse:

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
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
#include "Logfile.hpp"

// Konstruktor

//

// Aufgabe: Bisher noch keine

//

CLogfile::CLogfile ()
{

} // Konstruktor


// Destruktor

//

// Aufgabe: Gibt Ende-Meldung aus und schließt das Logfile

//

CLogfile::~CLogfile ()
{
    // Logfile-Ende schreiben und Datei schließen

    Textout ("<br><br>End of logfile</font></body></html>");
    fclose (m_Logfile);

} // Destruktor


// CreateLogfile

//

// Aufgabe: Logfile erstellen und Kopf schreiben

//

void CLogfile::CreateLogfile (const char *LogName)
{
    // Logfile leeren und Kopf schreiben

    m_Logfile = fopen (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:support@meineURL.de?subject=Logfile'>");
    Textout ("Send E-Mail to me</a><br><br>");

    // Logfile schließen und mit append wieder öffnen

    fclose (m_Logfile);
    m_Logfile = fopen (LogName, "a");

} // CreateLogfile


// WriteTopic

//

// Aufgabe: Überschrift erzeugen

//

void Logfile::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>\n<font face='arial' ");
    fTextout ("size='f+%i'>\n", Size);
    Textout (Topic);
    Textout ("</font>\n</td>\n</tr>\n</table>\n<br>");
    fflush (m_Logfile);

} // WriteTopic


// Textout

//

// Aufgabe: Text ins Logfile schreiben (schwarz)

//

void CLogfile::Textout (const char *Text)
{
    // Text schreiben und flushen

    fprintf (m_Logfile, Text);
    fflush (m_Logfile);

} // Textout (schwarz)


// Textout

//

// Aufgabe: Text ins Logfile schreiben (farbig)

//

void CLogfile::Textout (int Color, const char *Text)
{
    Textout (Color, false, Text);

} // Textout (farbig)


// Textout

//

// Aufgabe: Text ins Logfile schreiben (farbig, Liste)

//

void CLogfile::Textout (int Color, bool List, const char *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>");

} // Textout (farbig, liste)


// fTextout

//

// Aufgabe: formatierten Text ins Logfile schreiben (schwarz)

//

void CLogfile::fTextout (const char *Text, ...)
{
    TCHAR buffer[MAX_BUFFER];  // char-Buffer

    va_list pArgList;          // Liste der übergebenen Argumente


    // String aus den Argumenten erstellen

    va_start (pArgList, Text);
    vsprintf (buffer, Text, pArgList);
    va_end (pArgList);

    // Erzeugten String schreiben

    Textout (buffer);

} // fTextout (schwarz)


// fTextout

//

// Aufgabe: formatierten Text ins Logfile schreiben (farbig)

//

void CLogfile::fTextout (int Color, const char *Text, ...)
{
    TCHAR buffer[MAX_BUFFER];  // char-Buffer

    va_list pArgList;          // Liste der übergebenen Argumente


    // String aus den Argumenten erstellen

    va_start (pArgList, Text);
    vsprintf (buffer, Text, pArgList;
    va_end (pArgList);

    // Erzeugten String schreiben

    Textout (Color, buffer);

} // fTextout (farbig)


// fTextout

//

// Aufgabe: formatierten Text ins Logfile schreiben (farbig, Liste)

//

void CLogfile::fTextout (int Color, bool List, const char *Text, ...)
{
    TCHAR buffer [MAX_Buffer];    // char-Buffer

    va_list pArgList;             // Liste der übergebenen Argumente


    // String aus den Argumenten erstellen

    va_start (pArgList, Text);
    vsprintf (buffer, Text, pArgList);
    va_end (pArgList);

    // Erzeugten String schreiben

    Textout (Color, List, buffer);

} // fTextout (farbig, Liste)


// FunctionResult

//

// Aufgabe: OK oder ERROR für Funktionsaufruf ausgeben

//

void CLogfile::FunctionResult (const char *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>");
    }

} // FunctionResult


Zum Schluss die Header-Datei der Logfile-Klasse:

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
#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 war 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 CSingleton<CLogfile>
{
    // Memberfunktionen

public:

         CLogfile ();
         ~CLogfile ();
    void CreateLogfile (const char *LogName);
    void WriteTopic    (const char *Topic, int Size);
    void Textout       (const char *Text);
    void Textout       (int Color, const char *Text);
    void Textout       (int Color, bool List, const char *Text);
    void fTextout      (const char *Text, ...);
    void fTextout      (int Color, const char *Text, ...);
    void fTextout      (int Color, bool List, const char *Text, ...);
    void FunctionResult(const char *Name, bool Result);

    // Membervariablen

private:

    FILE *m_Logfile;

}; // Klasse-CLogfile


#endif
Is zwar "etwas" Text, aber ich hoffe ihr könnt mir weiterhelfen
"Wenn es keine Milch gäbe, würde ich auf Kaffee verzichten."

Werbeanzeige