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

Schnitter

Treue Seele

  • »Schnitter« ist der Autor dieses Themas

Beiträge: 141

Wohnort: Remshalden

Beruf: Schüler

  • Private Nachricht senden

1

01.05.2007, 16:13

Logfile-Probleme

Ich habe die Logfile-Klasse - nach (fast, naja, eher fast am Arsch...) erfolgreichem Abtippen des SDL_Games - in das Spiel integriert.

Erst dachte ich, ich lasse die fTextout()-Funktionen einfach mal weg. Farben brauch ich auch nich, etc.

Dann war ich an dem Punkt angelangt, an dem ich integer-Werte ins Logfile schreiben musste. erst hab ich versucht, den Interger in einen char per itoa() zu konvertieren, hat aber nicht funktioniert.
Dann hab ich mir die fTextout()-Funktionen nochmal angeschaut und gesehen, dass ich damit Integer-Werte ausgeben kann.

Ich bekomme aber ein Problem, hab die Funktion nur aus dem Listing von der CD kopiert(war zu faul^^):

Erstmal mein Code:

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)


Dann die Fehlermeldungen:

Zitat


c:\dokumente und einstellungen\schnitter\eigene dateien\visual studio 2005\projects\sdl_game\sdl_game\logfile.cpp(138) : error C2664: 'vsprintf': Konvertierung des Parameters 1 von 'TCHAR [1024]' in 'char *' nicht möglich
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
c:\dokumente und einstellungen\schnitter\eigene dateien\visual studio 2005\projects\sdl_game\sdl_game\logfile.cpp(142) : error C2664: 'void CLogfile::textout(const char *)': Konvertierung des Parameters 1 von 'TCHAR [1024]' in 'const char *' nicht möglich
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.


Ich konnte das ganze bisher nicht lösen, zumindest nicht ausreichend.

Hoffe, hier weiß jeamdn was ;)


MfG

Dofter

Treue Seele

Beiträge: 159

Wohnort: im wunderbaren EBERMANNSTADT

Beruf: Schüler^^

  • Private Nachricht senden

2

01.05.2007, 16:35

Schreib mal statt TCHAR nur char. Bei mir ist zwar TCHAR als char definiert, aber vllt ist das bei dir anders. Probiers einfach mal aus.
"Wo kämen wir hin, wenn alle sagten, wo kämen wir hin, und keiner ginge,
um zu sehen, wohin wir kämen, wenn wir gingen"

Schnitter

Treue Seele

  • »Schnitter« ist der Autor dieses Themas

Beiträge: 141

Wohnort: Remshalden

Beruf: Schüler

  • Private Nachricht senden

3

01.05.2007, 16:38

Geht tatsächlich ;)

Wär ich nie drauf gekommen.
Danke ;)

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

4

01.05.2007, 18:26

wenn bei dir (vermutlich) TCHAR als w_chart definiert ist musst du halt die Unicode Variante nehmen:

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); 
    vwsprintf (buffer, text, pArgList); 
    va_end (pArgList); 

    // Erzeugten String schreiben 

    textout (buffer); 

} // fTextout (schwarz) 

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

5

01.05.2007, 18:36

Das Problem ist der fehlgeschlagene Versuch einen kompatiblen Code zu Ansi und Unicode zu schreiben. Machs lieber gleich richtig:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifdef UNICODE
    #define foobar vswprintf
#else
    #define foobar vsprintf 
#endif

void cw_print( const TCHAR* text, ... )
{
    TCHAR buffer[ MAX_BUFFER ];
    va_list pArgList;

    va_start( pArgList, text );
    foobar( buffer, text, pArgList );
    va_end( pArgList );

    textout( buffer );
}
@D13_Dreinig

Werbeanzeige