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

id62

Frischling

  • »id62« ist der Autor dieses Themas

Beiträge: 4

Wohnort: try to find me

  • Private Nachricht senden

1

02.01.2006, 14:20

Kapitel 8.6 unvollständig.Teil 3 (2te Auflage)

Hallo,

ich weiß nicht ob ich zu blöd bin das zu verstehen, aber der Teil 3 wird ja vom Autor so gut wie garnicht erklärt.

Wie soll denn das ein Anfänger ohne Erklärung verstehen:


Kommt TCHAR von Template?
Was ist va_list? --> wo aus dem Listing kommt das her?
pArgList, ist das eine Standartvariable, vordefiniert durch C++ ... finde die auch nirgends ...



C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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)
MfG,

id62

Mein Motto 2006:
ALLES - WIRD - BESSER --> den WIR sind DEUTSCHLAND

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

2

02.01.2006, 14:23

Also zumindest pArgList wird ja da definiert als va_list pArgList, also ist pArgList eine Variable vom Typen va_list. Warum da ein p für Pointer steht ist mir gerade auch nicht so ganz klar. Den Rest schau ich mir im Buch mal an wenn ich zuhause bin.

Anonymous

unregistriert

3

02.01.2006, 14:28

id62
TCHAR kommt von TypeCHARacter. Ist ein typedef das je nach Compilereinstellung auf Unicode oder ASCII spezifiziert wird.

Im eigentlichen ist es das:

C-/C++-Quelltext

1
2
3
4
5
#if defined(UNICODE)
typedef wchar_t TCHAR;
#else
typedef char TCHAR;
#endif


Eine va_list ist eine sog. Valuement Argument List. Sie wird für die Extraktion aus Deinen variablen Parametern (diese ...-Dinger) benötigt.

mit vsprintf werden die Daten dann in einen "normalen" String umgewandelt.

Was ich jedoch grade extrem erschreckend finde ist nicht das C an den Klassen, die Großschreibung, oder das f bei einem Funktionsnamen (K.A. wofür das steht), sondern das TCHAR mit char benutzt wird!

Würde man ein neues Projekt unter einem Unicodecompiler wie z.B. Microsoft Visual C++ 2005 Express Edition, anlegen und den Code so aptippen, wäre ein Neuling total am verzweifeln wegen dem Konflikt wchar_t auf char!

Ich glaub das war wohl eher ein Flüchtigkeitsfehler des Autors.

Spik)evil(
va_list ist nichts anderes als:

C-/C++-Quelltext

1
typedef char* va_list;

Da wird es knallen bei Unicode, kräftigst

id62

Frischling

  • »id62« ist der Autor dieses Themas

Beiträge: 4

Wohnort: try to find me

  • Private Nachricht senden

4

02.01.2006, 14:38

vielen Dank ... direkt mal ausdrucken und als neue Seite einkleben.


Aber mal ehrlich, so nen langes Listing, jede Zeile durchzugehen und genau dann den dritten Teil wo viel neues hinzukommt: einfach so auszulassen finde ich schon eine Zumutung ... na ja ... . Vielleciht dachte er ja, da haben meine Leser auch mal was zum knobeln ^^
MfG,

id62

Mein Motto 2006:
ALLES - WIRD - BESSER --> den WIR sind DEUTSCHLAND

Anonymous

unregistriert

5

02.01.2006, 19:49

Wichtig

Anonymous

unregistriert

6

02.01.2006, 19:50

Abrexxes
Bissel genauer, ich vermisse den Aufbau von Subjekt, Prädikat und Objekt ;)

Anonymous

unregistriert

7

03.01.2006, 12:25

Zitat

Würde man ein neues Projekt unter einem Unicodecompiler wie z.B. Microsoft Visual C++ 2005 Express Edition, anlegen und den Code so aptippen, wäre ein Neuling total am verzweifeln wegen dem Konflikt wchar_t auf char!


Hallo habe genau das gemacht und bin wie gesagt am verzweifeln.
Wie kann man dieses Problem beheben?

Anonymous

unregistriert

8

31.01.2006, 20:31

Hallo,
habe mir das Buch vor einer Woche gekauft und bin hellauf begeistert. Bisher hat auch alles hingehauen, aber nun bin ich auch bei dem hier beschriebenen Problem mit char hängengeblieben. Ich nutze die Visual C++ 2005 Express Edition. Wie ist es denn nun möglich das Problem wchar_t auf char zu lösen?

Vielen Dank!

DarkFitzi

Alter Hase

Beiträge: 608

Wohnort: Eisenberg, Thüringen

Beruf: Schüler, 10te Klasse

  • Private Nachricht senden

9

02.02.2006, 18:54

winburner
Projekteinstellungen->Allgemein->Zeichensatz->ändern auf MultibyteZeichensatz verwenden
Ich würde die Welt gern verbessern, doch Gott gibt mir den Sourcecode nicht! :-(

Anonymous

unregistriert

10

22.02.2006, 15:32

habe selbiges problem, jedoch würde mich interessieren wie ich vsprintf bzw. ähnlichem, den besprochenen Unicode ergo "wchar_t" beibringe, anstatt auf multibyte zu wechseln

Werbeanzeige