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

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

1

21.12.2003, 12:50

WriteToLog -> Debug Error ???

Hi,
ich hab ein Prob mit

WriteToLogDirect(char* Format, ....)

der Quelltext:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
ENGINE_API e_Result WriteToLogDirect(char* pcFormat,
                                        ...) {
    char    acText[1024];   // Der zu schreibende String
    va_list VAList;         // Variable-Argumente-Liste


    // Parameterliste anfertigen und den String erstellen
    va_start(VAList, pcFormat);
    vsprintf(acText, pcFormat, VAList);
    va_end(VAList);

    MessageBox(NULL, acText, "M", MB_OK);

    // String ins Logbuch schreiben
    if(e_logfile != NULL)
    {
        fprintf(e_logfile, "%s", acText);
#ifdef _DEBUG
        fflush(e_logfile);
#endif
    }

    return E_OK;


(ist der gleiche wie der Davids, also ist seiner ;)

jetzt hab ich folgenes Problem:

WriteToLogDirect("%f", float(3.4f));

geht nicht! Debug Error 6002

Wieso um Gottes willen? ???

2

21.12.2003, 13:09

warum machst du einen cast?

Quellcode

1
WriteToLogDirect("%f", 3.4f);


wenn du was casten willst, dann mach das mit static_cast

am besten wäre, wenn du das ganze in C++ schreiben würdest, also ohne Variable Argumentlisten und FILE Handle
dazu brauchst du nur std::ofstream
als Parameter gibst du einfach einen std::string an
Do, ut des!
Ceterum censeo, carthaginem delendam esse

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

3

21.12.2003, 13:10

hä cast???

moment mal, ich denk auch mal das das der Fehler ist! Aber warum????

3.4f ist doch eindeutig ein float wert!

wenn ich float(3.4f) statt 3.4 schreibe gehts trotzdem nicht

4

21.12.2003, 13:15

ändere mal deinen Code so um:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int WriteToLogDirect(char* pcFormat,
                                ...) {
   char   acText[1024];   // Der zu schreibende String
   va_list   VAList;         // Variable-Argumente-Liste
   ofstream out("Log.txt");


   // Parameterliste anfertigen und den String erstellen
   va_start(VAList, pcFormat);
   vsprintf(acText, pcFormat, VAList);
   va_end(VAList);

   MessageBox(NULL, acText, "M", MB_OK);

   out << acText << endl;


   return 0;
                                }


am besten du verwendest durchgehen std::ofstream
Do, ut des!
Ceterum censeo, carthaginem delendam esse

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

5

21.12.2003, 13:18

an vsprintf leigt es bestimmt

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

6

21.12.2003, 16:23

Ne sorry, geht auch nicht! ich weiss um himmelswillen auch nicht warum. es muss aber an vsprintf(...) leigen!

Ich denke mal da stimmt etwas mit der variablen Parameterliste nicht

hier ist nochmal der jetzt veränderte Quellcode, geht allerdings immer noch nicht:

Header file:

Quellcode

1
ENGINE_API  e_Result        WriteToLogDirect(char* Format, ...);


(ENGINE_API ist define (__declspec(dllexport)))

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ENGINE_API e_Result WriteToLogDirect(char* pcFormat, ...)  {
   char   acText[1024];   // Der zu schreibende String 
   va_list   VAList;         // Variable-Argumente-Liste 
   ofstream out("Log.txt"); 


   // Parameterliste anfertigen und den String erstellen 
   va_start(VAList, pcFormat); 
   vsprintf(acText, pcFormat, VAList); 
   va_end(VAList); 

   MessageBox(NULL, acText, "M", MB_OK); 

   out << acText << endl; 


   return E_OK; 

7

21.12.2003, 17:20

hmm
welchen Compiler verwendest du denn?
Bei mir lässt sich das ohne Debug Error ausführen
Do, ut des!
Ceterum censeo, carthaginem delendam esse

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

8

21.12.2003, 18:27

Visuall C++ Autoren Edition

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

9

21.12.2003, 18:30

In welcher Zeile tritt der Fehler auf?

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

10

21.12.2003, 20:20

es liegt an vsprintf(....)

bin mir da 100% sicher! (durch testen). Ich denke mal, das der Parameter in der variablen Parameterliste nicht richtig umgewandelt wird, bei int, char*, char und so weiter funktionierts, nicht aber bei double, float Werten!

Kann doch aber eigentlich nicht am Coprozessor liegen, oder? Der müsste doch bei heutigen Rechnern 100% installiert sein!

ahso, die Fehlermeldung steht auch im MS-Vialual C++ "Handbuch", sucht einfach unter Registerkarte "Index": R6002

Werbeanzeige