Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo Leute.

Mein Visual C++ 6.0 wurde auf Visual C++ .NET umgestellt und da ergeben sich einige Probleme.

Die Dateiarbeit habe ich bisher mit fstream.h (ifstream zum lesen, ofstream zum schreiben) gemacht, jetzt muss ich das mit CFile tun.

Mit "cf.Open(CDDrive+"ncc.html", CFile::modeRead, NULL))" versuche ich eine Datei auf dem CD-ROM-LW zu öffnen, das funktioniert aber nicht.

Muss ich den Pfad in einer Variablen schreiben?

In einer while-Schleife möchte ich das Ende der Datei abfragen. Mit fstream.h ging das so:

ifstream lesen;

lesen.open(Datei);

while(!lesen.eof())

{...}

Original geschrieben von Narf!

Die Dateiarbeit habe ich bisher mit fstream.h (ifstream zum lesen, ofstream zum schreiben) gemacht, jetzt muss ich das mit CFile tun.

Ich wüsste nicht, wieso. Es reicht wahrscheinlich völlig aus, wenn du

#include <fstream>

(also ohne .h) benutzt. Die Headerdateien mit .h sind einfach nur veraltet und werden von VC7.1 nicht mehr unterstützt.

  • Autor

Habe das mit dem using namespace gemacht, läuft prima bis auf eine winzige Kleinigkeit ;) :

CString CDDrive="F:\\";

ifstream lesen;

Ich versuche mit lesen.open(CDDrive+"Dateiname", ios::out); eine Datei zu öffnen.

if(!lesen)

{...}

Es wird jedesmal in die if-Anweisung gesprungen, obwohl die Datei vorhanden ist.

  • Autor

Ich habe es in ios::in geändert und es funktioniert.

Nun noch die andere Seite:

ofstream schreiben;

schreiben.open(LW+"\\Datei", ios::ate);

//Datei öffnen und neue Daten am Ende anhängen.

Die Datei wird geöffnet, jedoch der Inhalt gelöscht und mit dem neuen Inhalt überschrieben.

Original geschrieben von Narf!

schreiben.open(LW+"\\Datei", ios::ate);

//Datei öffnen und neue Daten am Ende anhängen.

Die Datei wird geöffnet, jedoch der Inhalt gelöscht und mit dem neuen Inhalt überschrieben.

Hmm, wie wäre es mit ios::app! ;)

ios::ate geht nur ans Ende!

  • Autor

Hat geklappt. Und, wie sollte es anders sein, habe ich ein neues Problem:

lesen.open(MainPth+"\\Datei", ios::in); //Öffnen einer Datei mit Pfadangeben

while(!lesen.eof())

{

lesen.getline(lese, 20); //lesen der Pfadangabe

if(lese[0]!='\0')

{

a=0;

mp3.open(lese, ios::in); //öffnen der Pfadangabe

while(!mp3.eof())

{

mp3.getline(lesemp3, 300); //lesen aus der Datei in der Pfadangabe

if(lesemp3[0]!='\0')

...

}

mp3.close();

...

Beim ersten Durchlauf funktioniert alles prima. Beim zweiten und allen weiteren Durchläufen passiert das:

Die Pfadangabe wird gelesen, die Datei wird geöffnet, aber bei der Abfrage nach dem Dateiende wird es als wahr gewertet und zu mp3.close() gesprungen, obwohl die Datei gerade erst geöffnet wurde und sich auch etwas in der Datei befindet.

  • Autor

Ja, die erste solange Pfadangaben in der Datei existieren und die zweite solange, wie sich Zeilen in der zweiten Datei befinden.

Nach jedem Schleifendurchlauf wird die zweite mit mp3.close() geschlossen und dann wieder geöffnet, nachdem in der ersten wieder eine neue Zeile gelesen wird, da sich dort die Pfadangabe befindet, mit der ich die zweite öffne.

Schließen und anschließendes Wiederöffnen setzt das eof-Flag nicht zurück.

Am einfachsten umgehst du das, indem du immer wieder eine neue ifstream-Instanz erzeugst. Du kannst die Parameter von open auch gleich im Konstruktor angeben:

ifstream lesen(MainPth+"\\Datei", ios::in);

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.