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

Nagamono

Frischling

  • »Nagamono« ist der Autor dieses Themas

Beiträge: 32

Wohnort: Düsseldorf

Beruf: Schüler

  • Private Nachricht senden

1

17.12.2010, 11:44

Frage zu Listing 8.12

Hallo,

Ich habe mich gestern durch das Listing 8.12 durchgearbeitet.
Auf Seite 251 in der Erklärung steht, dass man für die Funktion CreateLogfile eine Überprüfung auf den zurückgelieferten Zeiger
einbringen sollte.

Hier die Funktion:

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
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:tino.mueller@hotmail.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


Jetzt zu meiner Frage :D
Ist diese Überprüfung so zu gestallten die Fehlerabfrage auf Seite 242 Listing 8.9?
Da ist das wie folgt:

C-/C++-Quelltext

1
2
3
4
5
6
ifstream Input ("Highscore.shc", ios::binary);
    if (Input == NULL)
    {
        cout << "Datei konnte nich geoeffnet werden." << endl;
    }
...


Ich bedanke mich schonmal im Voraus :)

Lg Tino

2

17.12.2010, 14:15

Schau dir doch dafür einfach die entsprechende Funktion ( fopen() ) bzw. ihren Rückgabewert an. Dann siehst du ja, was du zu erwarten hast und wenn der tatsächliche Rückgabewert aber nicht dem erwarteten entspricht, dann ist irgendwas schief gelaufen.

Konkret: fopen in der C++ Reference

Zitat

Return Value
If the file has been succesfully opened the function will return a pointer to a FILE object that is used to identify the stream on all further operations involving it. Otherwise, a null pointer is returned.
Also kannst du tatsächlich nach dem Öffnen bzw. Anlegen der Datei prüfen ob der Rückgabewert der Funktion - der ja eigentlich ein FILE-Handle sein sollte - NULL ist und dann ist ein Fehler aufgetreten. So wie du es schon selbst gepostet hast.

Gruß
SaRu_

Nagamono

Frischling

  • »Nagamono« ist der Autor dieses Themas

Beiträge: 32

Wohnort: Düsseldorf

Beruf: Schüler

  • Private Nachricht senden

3

17.12.2010, 14:53

Das ist mal ne tolle Erklärung :D
DANKE!
Jetzt hab ich auch die Funktion verstanden :)
Vielen Danke

Werbeanzeige