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

41

26.01.2010, 18:07

Also mit Debugger hab ich noch nie benützt , da ich im Buch auch noch nicht so weit war...

Aber er sagt das :

Zitat

Unbehandelte Ausnahme bei 0x6c387ce3 in HTML_Help.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x00000000.


Und du sagtest ja vorhin , dass ein Char nur einen Buchstaben haben kann ... Liegts viell. daran ?

idontknow

unregistriert

42

26.01.2010, 18:23

Überprüf mal ob deine Datei auch korrekt geöffnet wurde!

43

26.01.2010, 18:36

Quellcode sieht da jetzt so aus:


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void CHTML_Helper::WriteTitle(char* m_Buffer)
{
    ofstream fout(m_Dateiname, ios::app);
    fout.close();
    cout << "HTML-Titelfunktion erfolgreich geladen!" << endl;
    cout << "Bitte geben sie den Titel ein , den ihre Homepage haben soll: " << endl;
    cin >> m_Buffer;
    fout.open("m_Dateiname", ios::app);
    fout << "<title>";
    fout << m_Buffer;
    fout << "</title>";
    fout.close();
    cout << "Titel wurde erfolgreich hinzugefügt!" << endl;
    cout << "Sie werden nun automatisch zum Erstellungsvorgang für den \"Body\"-Code weitergeleitet!" << endl;
}


Debug immernoch:
Unbehandelte Ausnahme bei 0x6c387ce3 in HTML_Help.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x00000000.

Und unten links im Kasten:

Quellcode

1
2
+       m_Buffer    0x00000000 <Schlechtes Ptr> char *
+       this    0x0028f704 {m_Buffer=0x00000000 <Schlechtes Ptr> m_Dateiname=0x0028f708 "homepage2.html" }  CHTML_Helper * const

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

44

26.01.2010, 18:57

fout.open("m_Dateiname", ios::app);
sicher dass die anführungszeichen da richitg sind?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

45

26.01.2010, 19:01

Ich Idiot. >.<
Sollte mir mal mehr Zeit lassen. :(

*EDIT*
Fehlermeldung kommt allerdings immernoch!
HTML_Helper.exe has stopped working.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

46

26.01.2010, 19:07

du greifst auf nen nullzeiger zu. such im programm nach dem möglichen übeltäter. benutz am besten den debuger dazu
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

47

26.01.2010, 19:07

Zitat

+ m_Buffer 0x00000000 <Schlechtes Ptr> char *

Wenn m_Buffer auf Nichts Zeigt, dann bekommst du selbstverständlich eine Zugriffsverletzung.

Sprich,

Zitat

cin >> m_Buffer;

In der Zeile sollte dein Fehler liegen ;)

48

26.01.2010, 19:14

Also ich habe m_Buffer ist nun wieder kein Zeiger sondern ein ganz normales Char-Array ...
Nun funktioniert es auch , nur irgendwie schreibt er nicht alles in die Datei...
Er schreibt rein:

Zitat

<html>>l</title>


Und laut Programm sollte er das tun:

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
25
26
CHTML_Helper::CHTML_Helper() //Konstruktor

{
    cout << "Bitte geben sie den gewuenschten Dateinamen (Mit .html-Endung) ein (Max. 30 Zeichen): " << endl;
    cin >> m_Dateiname;
    
    ofstream fout(m_Dateiname);
    fout << "<html>";
    cout << "Datei wurde erstellt , und befindet sich im Installationsverzeichnis!" << endl;
    cout << "Sie werden nun zum Erstellungsvorgang des Titel-Bereichs weitergeleitet..." << endl;
    WriteTitle(m_Buffer[255]);
}

void CHTML_Helper::WriteTitle(char m_Buffer)
{
    ofstream fout(m_Dateiname, ios::app);
    fout.close();
    cout << "HTML-Titelfunktion erfolgreich geladen!" << endl;
    cout << "Bitte geben sie den Titel ein , den ihre Homepage haben soll: " << endl;
    cin >> m_Buffer;
    fout.open(m_Dateiname, ios::app);
    fout << "<title>";
    fout << m_Buffer;
    fout << "</title>";
    fout.close();
    cout << "Titel wurde erfolgreich hinzugefügt!" << endl;
    cout << "Sie werden nun automatisch zum Erstellungsvorgang für den \"Body\"-Code weitergeleitet!" << endl;


Liegt es viell. daran , dass es ein Char ist und nur 1 Zeichen setzen kann ? Aber wieso gehts dann bei den anderen Sachen ?
Und wie kann ich noch in eine Datei einen String speichern ... Habe vorhin was von std::string gelesen ... Was bringt es und wie benutzt man es ? :)

Wäre sehr hilfreich von euch. :)

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

49

26.01.2010, 19:20

Zum Thema string:
http://www.cplusplus.com/reference/string/string/

Und zum Thema schreiben:
Du benutzt einfach ein char-Array, das du in einer Schleife in die Datei schreibst. ;)

50

26.01.2010, 19:22

std::string kapselt alles.

Benutzung, was meinste genau ?

std::string test ("Hallo");

oder
std::string test = "Hallo";

um daraus einen Char* zu bekommen
test.c_str ();


void CHTML_Helper::WriteTitle(char m_Buffer)
Die Funktion übernimmt halt nur einen Buchstaben, nicht viele ;)

void CHTML_Helper::WriteTitle (std::string& m_Buffer) wäre da wahrscheinlich besser.

Werbeanzeige