Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: WinAPI ::  StreamWriter-Klasse     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 19:02:53 30.01.2012   Titel:   StreamWriter-Klasse            Zitieren

Guten Abend.
Ich habe mir überlegt, die StreamWriter-Klasse aus C# und VB.Net in C++ "nachzuprogrammieren", mit den Mitteln und Kenntnissen, die mir zur Verfügung stehen. Wenn ich das Projekt compiliere, wird auch die Konsole geöffnet, jedoch kommt dann eine Meldung von VC++ 2010 EE, dass es einen Schreibfehler an Addresse 0x000 usw. gab. Hier erstmal der Code:

C/C++ Code:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <Windows.h>
#include
<iostream>

struct StreamWriter
{
private:  
   char name[200];
   ::FILE *file;

public:
   void Name (::TCHAR fname[200])
   {
      name[200] = fname[200];
      strcat (name, ".txt");
      file = fopen (name, "w");
   }

   void WriteLine (::TCHAR wl[500])
   {
      char WriteLine[500] = {wl[500]};
      strcat (wl, "\n");
      fputs (wl, file);
   }

   void Write (char w[500])
   {
      char WriteLine[500] = {w[500]};
      fputs (w, file);
   }

   void Close ()
   {
      fclose (file);
   }
};

int main ()
{
   StreamWriter sw;
   sw.Name ("Name");
   sw.WriteLine ("Zeile1");
   sw.Write ("Zeile2");
   sw.Close ();

   system ("PAUSE");
   return 0;
}
C/C++ Code:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <Windows.h>
#include
<iostream>

struct StreamWriter
{
private:
char name[200];
::FILE *file;

public:
void Name (::TCHAR fname[200])
{
name[200] = fname[200];
strcat (name, ".txt");
file = fopen (name, "w");
}

void WriteLine (::TCHAR wl[500])
{
char WriteLine[500] = {wl[500]};
strcat (wl, "\n");
fputs (wl, file);
}

void Write (char w[500])
{
char WriteLine[500] = {w[500]};
fputs (w, file);
}

void Close ()
{
fclose (file);
}
};

int main ()
{
StreamWriter sw;
sw.Name ("Name");
sw.WriteLine ("Zeile1");
sw.Write ("Zeile2");
sw.Close ();

system ("PAUSE");
return 0;
}
C/C++ Code:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <Windows.h>
#include
<iostream>

struct StreamWriter
{
private:  
   char name[200];
   ::FILE *file;

public:
   void Name (::TCHAR fname[200])
   {
      name[200] = fname[200];
      strcat (name, ".txt");
      file = fopen (name, "w");
   }

   void WriteLine (::TCHAR wl[500])
   {
      char WriteLine[500] = {wl[500]};
      strcat (wl, "\n");
      fputs (wl, file);
   }

   void Write (char w[500])
   {
      char WriteLine[500] = {w[500]};
      fputs (w, file);
   }

   void Close ()
   {
      fclose (file);
   }
};

int main ()
{
   StreamWriter sw;
   sw.Name ("Name");
   sw.WriteLine ("Zeile1");
   sw.Write ("Zeile2");
   sw.Close ();

   system ("PAUSE");
   return 0;
}


Wie kann man das Problem beheben?
Liegt es evtl. an den verwendeten Dateitypen?

Vielen Dank schonmal im Voraus. . .
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 3858
Beitrag dot Mitglied 19:06:53 30.01.2012   Titel:              Zitieren

Schonmal mit Debuggen versucht?

_________________
one point of view will never reveal the entire scene.


Zuletzt bearbeitet von dot am 19:07:06 30.01.2012, insgesamt 1-mal bearbeitet
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 19:16:52 30.01.2012   Titel:              Zitieren

dot schrieb:
Schonmal mit Debuggen versucht?


Macht das denn nicht der Compiler beim erstellen sowieso?
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 3858
Beitrag dot Mitglied 19:23:07 30.01.2012   Titel:              Zitieren

lol, ich glaub du hast noch nicht ganz verstanden was Debuggen ist. Empfehle schwer dass du dich mal damit beschäftigst ;)

_________________
one point of view will never reveal the entire scene.


Zuletzt bearbeitet von dot am 19:23:38 30.01.2012, insgesamt 1-mal bearbeitet
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 19:25:17 30.01.2012   Titel:              Zitieren

Was ist denn debuggen anderes als die Fehlermeldungen vom Compiler zu verstehen und zu verbessern?
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 3858
Beitrag dot Mitglied 19:29:47 30.01.2012   Titel:              Zitieren

Compilerfehler ausbessern hat mit Debugging nichts zu tun.

_________________
one point of view will never reveal the entire scene.


Zuletzt bearbeitet von dot am 19:30:44 30.01.2012, insgesamt 1-mal bearbeitet
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 19:48:12 30.01.2012   Titel:              Zitieren

Ja, schön und gut, aber weil ich das jetzt weiß, geht mein Programm ja trotzdem noch nicht. Kannst du mir erklären wo der Fehler liegen könnte und das evtl. mal bei dir ausprobieren?
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 3858
Beitrag dot Mitglied 19:50:31 30.01.2012   Titel:              Zitieren

3P!CF41L schrieb:
Ja, schön und gut, aber weil ich das jetzt weiß, geht mein Programm ja trotzdem noch nicht.

Aber weil du das jetzt weißt, weißt du wie du dem Problem auf die Spur kommen kannst...

_________________
one point of view will never reveal the entire scene.
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 20:31:00 30.01.2012   Titel:              Zitieren

Also ich habe mir jetzt das OllyDebug-Programm runtergeladen und ausgeführt. Dann mit dem Tool mein Programm gestartet und jetzt bin ich erst recht verwirrt! Er zeigt mir jetzt scheinbar unendlich viele :D RAM Adressen an, aber was fange ich jetzt damit an?
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 3858
Beitrag dot Mitglied 20:33:02 30.01.2012   Titel:              Zitieren

Visual Studio hat einen eingebauten Debugger. Lern den zu benutzen.

_________________
one point of view will never reveal the entire scene.


Zuletzt bearbeitet von dot am 20:33:26 30.01.2012, insgesamt 1-mal bearbeitet
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 20:35:43 30.01.2012   Titel:              Zitieren

Sorry aber das hilft mir auch nicht. Wie soll ich den denn benutzen? Außerdem habe ich das Gefühl, dass du ganz genau weißt was nicht stimmt :(
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 20:37:38 30.01.2012   Titel:              Zitieren

So, das sagt VC++ beim Compilieren:
Code:
"StreamWriter.exe": "G:\Projekte\C++\StreamWriter\Debug\StreamWriter.exe" geladen, Symbole wurden geladen.
"StreamWriter.exe": "C:\Windows\SysWOW64\ntdll.dll" geladen, Cannot find or open the PDB file
"StreamWriter.exe": "C:\Windows\SysWOW64\kernel32.dll" geladen, Cannot find or open the PDB file
"StreamWriter.exe": "C:\Windows\SysWOW64\KernelBase.dll" geladen, Cannot find or open the PDB file
"StreamWriter.exe": "C:\Windows\SysWOW64\msvcr100d.dll" geladen, Symbole wurden geladen.
Eine Ausnahme (erste Chance) bei 0x57b5d337 (msvcr100d.dll) in StreamWriter.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x013f5846.
Unbehandelte Ausnahme bei 0x57b5d337 (msvcr100d.dll) in StreamWriter.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x013f5846.
Code:
"StreamWriter.exe": "G:\Projekte\C++\StreamWriter\Debug\StreamWriter.exe" geladen, Symbole wurden geladen.
"StreamWriter.exe": "C:\Windows\SysWOW64\ntdll.dll" geladen, Cannot find or open the PDB file
"StreamWriter.exe": "C:\Windows\SysWOW64\kernel32.dll" geladen, Cannot find or open the PDB file
"StreamWriter.exe": "C:\Windows\SysWOW64\KernelBase.dll" geladen, Cannot find or open the PDB file
"StreamWriter.exe": "C:\Windows\SysWOW64\msvcr100d.dll" geladen, Symbole wurden geladen.
Eine Ausnahme (erste Chance) bei 0x57b5d337 (msvcr100d.dll) in StreamWriter.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x013f5846.
Unbehandelte Ausnahme bei 0x57b5d337 (msvcr100d.dll) in StreamWriter.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x013f5846.
Code:
"StreamWriter.exe": "G:\Projekte\C++\StreamWriter\Debug\StreamWriter.exe" geladen, Symbole wurden geladen.
"StreamWriter.exe": "C:\Windows\SysWOW64\ntdll.dll" geladen, Cannot find or open the PDB file
"StreamWriter.exe": "C:\Windows\SysWOW64\kernel32.dll" geladen, Cannot find or open the PDB file
"StreamWriter.exe": "C:\Windows\SysWOW64\KernelBase.dll" geladen, Cannot find or open the PDB file
"StreamWriter.exe": "C:\Windows\SysWOW64\msvcr100d.dll" geladen, Symbole wurden geladen.
Eine Ausnahme (erste Chance) bei 0x57b5d337 (msvcr100d.dll) in StreamWriter.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x013f5846.
Unbehandelte Ausnahme bei 0x57b5d337 (msvcr100d.dll) in StreamWriter.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x013f5846.


Und gleichzeitig ploppt ein Fenster auf, in dem genau das nochmal steht...
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 3858
Beitrag dot Mitglied 20:39:39 30.01.2012   Titel:              Zitieren

Und wenn es stehen bleibt findest du dich im Debugger und kannst alles mögliche tun. Lern den Debugger zu benutzen (Stichworte: Breakpoint, Watch Window).
Selbst wenn ich ganz genau wüsste was der Fehler ist (was ich nicht tue da ich mir den Code nicht wirklich angeschaut hab), würd ich dir nicht helfen wenn ich's dir verrate. Debuggen ist essentiell für jeden Programmierer, in etwa so wichtig wie atmen. Wenn ich dir ersparen würde das zu lernen, würd ich dir nicht helfen sondern schaden...

_________________
one point of view will never reveal the entire scene.


Zuletzt bearbeitet von dot am 20:41:38 30.01.2012, insgesamt 3-mal bearbeitet
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 20:43:37 30.01.2012   Titel:              Zitieren

Wie verfahre ich denn, wenn mein Programm stehen bleibt. Das Programm wird ja auch fehlerfrei compiliert, aber es kann nicht an die Position im Arbeitsspeicher schreiben. Kann man diesen Speicherplatz irgendwie resservieren?
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 3858
Beitrag dot Mitglied 20:47:04 30.01.2012   Titel:              Zitieren

Du siehst das falsch rum. Dein Programm ist fehlerhaft, erst darum versucht es an eine Stelle zu schreiben wo es nicht darf. Benutz den Gebugger um herauszufinden warum. Gibt sicher genug Tutorials wie man den Debugger benutzt...

_________________
one point of view will never reveal the entire scene.
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 20:50:36 30.01.2012   Titel:              Zitieren

Als ich gerade gegooglet habe, habe ich zumindest keins gefunden. :(
dot
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.05.2004
Beiträge: 3858
Beitrag dot Mitglied 20:54:31 30.01.2012   Titel:              Zitieren

http://www.google.at/search?q=visual+c%2B%2B+debugging+tutorial

_________________
one point of view will never reveal the entire scene.
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 20:55:48 30.01.2012   Titel:              Zitieren

OK...mit den richtigen Stichworten muss man dann noch googlen :D
Danke, dass du die so viel Zeit in mich "investiert" ;)
Robert1996
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.07.2011
Beiträge: 86
Beitrag Robert1996 Mitglied 17:04:02 31.01.2012   Titel:              Zitieren

Nach einer Weile hin und her probieren mit Arrays und Zeigern habe ich nun das Problem, das ich nichts mehr lesen kann aus dem RAM. Im entdefekt bleibt das Programm unbrauchbar :(
Belli
Mitglied

Benutzerprofil
Anmeldungsdatum: 29.08.2009
Beiträge: 1110
Beitrag Belli Mitglied 09:33:48 01.02.2012   Titel:   Re: StreamWriter-Klasse            Zitieren

3P!CF41L schrieb:




C/C++ Code:
 name[200] = fname[200];
C/C++ Code:
name[200] = fname[200];
C/C++ Code:
 name[200] = fname[200];


Was soll das werden? So kopiert man keine C-Strings. Und überhaupt, die Mischung von char und TCHAR sieht auch sehr ungesund aus ...

und ...
C/C++ Code:
   void Write (char w[500])
   {
      char WriteLine[500] = {w[500]};  //was machst Du hier und warum?
      fputs (w, file);
   }
C/C++ Code:
void Write (char w[500])
{
char WriteLine[500] = {w[500]}; //was machst Du hier und warum?
fputs (w, file);
}
C/C++ Code:
   void Write (char w[500])
   {
      char WriteLine[500] = {w[500]};  //was machst Du hier und warum?
      fputs (w, file);
   }


... Entschuldigung, aber ich habe den Eindruck, dass Dir ganz wichtige Grundlagen fehlen, fang erst mal mit was einfachem an ...


Zuletzt bearbeitet von Belli am 09:37:32 01.02.2012, insgesamt 1-mal bearbeitet
fail+
Unregistrierter




Beitrag fail+ Unregistrierter 01:00:00 02.02.2012   Titel:              Zitieren

Das ist ja eine Katast....
Lerne mal C Grundlagen!!
Denn scheinbar begreifst Du überhaupt nichts...
fail+
Unregistrierter




Beitrag fail+ Unregistrierter 01:03:05 02.02.2012   Titel:              Zitieren

Wir sind hier nicht in der Vb Kinderecke...
C/C++ Forum :: WinAPI ::  StreamWriter-Klasse   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.