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

Marius

Treue Seele

  • »Marius« ist der Autor dieses Themas

Beiträge: 91

Wohnort: Küssaberg-Rheinheim

Beruf: Schüler

  • Private Nachricht senden

1

19.08.2003, 21:19

Logfiles

Hi!

Ich hab mich auch dazu entschlossen meine eigene Engine zu schreiben. Doch da gibt's Probleme. Beim Aufruf, was in die Log-Datei was zu schreiben kommt das da:

Zitat

Eine Ausnahme (erste Chance) bei 0x10013dac (BlueCore.dll) in BlueCoreConsoleTest.exe: 0xC0000005: Zugriffsverletzung-Leseposition 0x00000068.
Unbehandelte Ausnahme bei 0x10013dac (BlueCore.dll) in BlueCoreConsoleTest.exe: 0xC0000005: Zugriffsverletzung-Leseposition 0x00000068.
in der Datei output.c

Die Datei bcLogFile.cpp sieht so aus:

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



FILE* LogFile = NULL;

BLUECORE_API bcResult bcWriteToLog(char TextToWrite)
{
    if(LogFile == NULL) return BC_ERROR;
    fprintf(LogFile, "%s", TextToWrite);
    return BC_OK;
}

BLUECORE_API bcResult bcInitLog()
{
    LogFile = fopen("BlueCore_Engine LogFile.html", "wc");
    if(LogFile == NULL) return BC_ERROR;
    
    //fprintf(LogFile, "%s", "<html><head><title>BlueCore_Engine LogFile</title></head><basefont face=\"Eurostile Extended\" size=\"4\">¤BlueCore_Engine¤<br>"); 

    return BC_OK;
}

BLUECORE_API bcResult bcExitLog()
{
    fflush(LogFile);
    fclose(LogFile);
    return BC_OK;
}


Die Datei bcLogFile.h sieht so aus:

Quellcode

1
2
3
4
5
extern FILE* LogFile;

BLUECORE_API bcResult bcWriteToLog(char TextToWrite);
BLUECORE_API bcResult bcInitLog();
BLUECORE_API bcResult bcExitLog();


Und der Aufruf sieht so aus:

Quellcode

1
2
3
4
5
bcInitLog();

    bcWriteToLog('h');

    bcExitLog();


Wie kann man ausserdem festlegen, dass nicht nur ein char sondern auch ein char-Array übergeben werden kann??

2

19.08.2003, 21:30

Quellcode

1
LogFile = fopen("BlueCore_Engine LogFile.html", "wc");


Was soll denn wc für ein Parameter sein?
Ich kenn nur:
"r" : nur lesen
"w": neue Datei anlegen und schreiben
"a": in vorhandene Datei schreiben(anhängen)
"r+": lesen und schreiben
"w+": neue datei erzeugen, lesen und schreiben
"a+": in vorhanden Datei schreiben (anhängen) und lesen

Ein array kannst du übergeben, indem du die Übergabeparameter als Zeiger machst, z.B. so:

Quellcode

1
2
3
4
5
6
BLUECORE_API bcResult bcWriteToLog([b]char*[/b] TextToWrite) 
{ 
   if(LogFile == NULL) return BC_ERROR; 
   fprintf(LogFile, "%s", TextToWrite); 
   return BC_OK; 
}
In a world without fences and walls - who needs windows and gates ?

http://www.Paid4Mailer.de/?refid=8422

Marius

Treue Seele

  • »Marius« ist der Autor dieses Themas

Beiträge: 91

Wohnort: Küssaberg-Rheinheim

Beruf: Schüler

  • Private Nachricht senden

3

19.08.2003, 21:31

wc hat David aber auch verwendet

Marius

Treue Seele

  • »Marius« ist der Autor dieses Themas

Beiträge: 91

Wohnort: Küssaberg-Rheinheim

Beruf: Schüler

  • Private Nachricht senden

4

19.08.2003, 21:38

So, jetzt hab ich wc durch w ersetzt und als Übergabeparameter hab ich jetzt einen Zeiger hingesetzt. Nur, wie übergebe ich jetzt diesen zeiger? :rolleyes:

5

19.08.2003, 21:42

Einfach ein Array übergeben:

Quellcode

1
2
3
4
char Text[256];
sprintf(Text,"Dies ist ein Test-Text");

bcWriteToLog(Text);


PS. Offiziell gibt es für fopen nur die parameter, die ich oben aufgeführt hab. (http://msdn.microsoft.com/library/defaul…2c_._wfopen.asp)
In a world without fences and walls - who needs windows and gates ?

http://www.Paid4Mailer.de/?refid=8422

Marius

Treue Seele

  • »Marius« ist der Autor dieses Themas

Beiträge: 91

Wohnort: Küssaberg-Rheinheim

Beruf: Schüler

  • Private Nachricht senden

6

19.08.2003, 21:57

Danke! Problem gelöst. :)

Jens

Treue Seele

Beiträge: 117

Wohnort: Dresden

  • Private Nachricht senden

7

20.08.2003, 16:23

wc

mit c wollte er sicherlich, dass die Daten nicht im Systemcache gehalten und sofort geschrieben werden.
c
Enable the commit flag for the associated filename so that the contents of the file buffer are written directly to disk if either fflush or _flushall is called

(wenn ich das richtig kappiert habe)
oder? Was macht denn nun c wirklich, CommitFlag setzen? Das hieße ja, dass erst bei flash geschrieben wird. Aber... ismirwurscht ;-)

Werbeanzeige