JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Echt mieses Problem mit Textdateien
Gehe zu Seite Zurück  1, 2, 3  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 10.03.2004, 15:07    Titel: Antworten mit Zitat

Hazel hat Folgendes geschrieben:
Dateiname.resize(Dateiname.size() - 1) ist besser, weil dabei die Länge des Strings korrekt bleibt. Vermeidet weitere "mysteriöse" Bugs.

Gut zu wissen Wink

BTW: Was für mysteriöse Bugs enstehen da? Wegen dem Öffnen mit Dateiname+Leerzeichen?
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 10.03.2004, 15:09    Titel: Antworten mit Zitat

Nahar hat Folgendes geschrieben:
@ Lordof: Bin jetzt nach dem von vorher vorsichtig, aber löscht du mit deiner Variante nciht das \0 Zeichen statt dem \n?


Nein, weil er STL Strings benutzt. Die brauchen so einen schmarrn nicht.;)
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 10.03.2004, 15:45    Titel: Antworten mit Zitat

Das mit dem getline() hört sich gut an, ich hab das mal in die MSDN Library eingegeben, konnte aber aus den Texten nicht schlau werden. Wie müsste der Quellcode denn mit dieser Funktion aussehen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 10.03.2004, 15:58    Titel: Antworten mit Zitat

Ist ganz einfach:

Code:

// Datei öffnen

ifstream datei.open("DATEINAME");
string zeile;

// Zeile auslesen
getline(datei, zeile);

// Blabla... mach damit was du willst

// Datei wieder schließen
datei.close();


Damit solltest du in der Lage sein deinen Code zu ändern.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 10.03.2004, 16:13    Titel: Antworten mit Zitat

Ich habe jetzt statt:
Code:

              Datei=fopen(MainDatei, "r");
   if(NULL==Datei)
   {
      cout << "\nDas Projekt existiert noch nicht!";
   }
   else //Wenn er die Projektdatei geladen hat
   {

      cout << "\nDas Projekt wurde geöffnet!\n";
      
      while(!feof(Datei))
      {
         //Die nächste Datei aus der Projektdatei öffnen
         fgets(Puffer, 255, Datei);
                                 }
               }


Code:

        string zeile;
        ifstream datei.open(MainDatei);
        cout << "\nDas Projekt wurde geöffnet!\n";
        getline(datei, zeile);


Aber: Wie weiß ich ob die Datei zu Ende ist?
Außerdem lässt es sich nicht kompilieren:
Code:

ifstream datei.open(MainDatei);


erzeugt einen Fehler.

Muss man "datei" nicht als irgendeine Variable deklariern?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 41
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 10.03.2004, 16:20    Titel: Antworten mit Zitat

Ja muss es, aber wir wollen dich ja auch ein wenig zum mitdenken animieren Wink
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 10.03.2004, 16:20    Titel: Antworten mit Zitat

Sorry war ein Tippfehler. Es muss heißen:

Code:

ifstream datei("DATEINAME");


Wenn du prüfen musst, ob eine Datei zuende ist machst du das so:

Code:

if(datei.eof())
  cout << "Zuende" << endl;


(eof heißt End Of File)
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 10.03.2004, 16:32    Titel: Antworten mit Zitat

ok
ein ganz großes Dankeschön an alle die mir geholfen haben.
Aber jetzt noch die MAsterfrage:
Was für eine Variable ist den nun "datei"
Es ist eine normale FILE Struktur?
Code:

FILE * datei;


oder was anderes?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
=]Mid[=]Night[=
Super JLI'ler



Anmeldedatum: 20.11.2002
Beiträge: 380
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 10.03.2004, 16:39    Titel: Antworten mit Zitat

ich wuerde sagen, datei ist ein ifstream-objekt, habe aber so gut wie kein plan von stl
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 10.03.2004, 16:50    Titel: Antworten mit Zitat

Du solltest unbedingt nochmal C/C++ Syntax lernen... Der Bezeichner vor der Variable ist der Typ... das ist wichtig und sollte dir unbedingt bekannt sein.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 10.03.2004, 16:57    Titel: Antworten mit Zitat

OK seh ich ein.
Also:
Von welchen Typ ist "datei"?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 10.03.2004, 16:59    Titel: Antworten mit Zitat

Code:

ifstream datei("DATEINAME");


Ich denke du siehst es ein? Dann sag doch mal was vor 'datei' steht... genau, und das ist der Typ.. Rolling Eyes
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
=]Mid[=]Night[=
Super JLI'ler



Anmeldedatum: 20.11.2002
Beiträge: 380
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 10.03.2004, 17:00    Titel: Antworten mit Zitat

sag ich doch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
HotAcid
Super JLI'ler


Alter: 43
Anmeldedatum: 04.08.2002
Beiträge: 372
Wohnort: Berlin
Medaillen: Keine

BeitragVerfasst am: 10.03.2004, 17:06    Titel: Antworten mit Zitat

Code:

FILE * datei;


"datei" ist vom Typ FILE*, also Pointer auf FILE.

Code:

ifstream datei(Dateiname);


"datei" ist hier vom Typ ifstream.

Wie bereits erwähnt: der Typ ist immer das, was vor dem Bezeichner (dem namen) steht.

cu Felix
_________________
StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht.


Zuletzt bearbeitet von HotAcid am 10.03.2004, 17:08, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 10.03.2004, 17:07    Titel: Antworten mit Zitat

Code:
ifstream datei(MainDatei);


erzeugt folgenden Fehler:
F:\C++\Meine Webseite\Quellcode.cpp(31) : error C2079: 'datei' verwendet undefiniertes class 'basic_ifstream<char,struct std::char_traits<char> >'
F:\C++\Meine Webseite\Quellcode.cpp(31) : error C2440: 'initializing' : 'char [18]' kann nicht in 'int' konvertiert werden

Code:
while(datei.eof())

erzeugt folgende Fehler:
F:\C++\Meine Webseite\Quellcode.cpp(35) : error C2228: Der linke Teil von '.eof' muss eine Klasse/Struktur/Union sein
F:\C++\Meine Webseite\Quellcode.cpp(35) : fatal error C1903: Weiterverarbeitung nach vorhergehendem Fehler nicht moeglich; Kompilierung wird abgebrochen.

ich gehe jetzt mal davon aus das datei sowas ähnliches wie FILE * Datei ist, also eine Variable mit die Informationen zur Datei enthält(Dateiname, aktuelle Position...). Stimmt das Überhaupt?
Und dann wird mit:
Code:
ifstream datei(MainDatei);

die MainDatei (char MainDatei[18], enthält den Dateiname) gar nicht geöffnet?
Tut mir ja leid, das ich dumm Frage, aber ich habs irgendiwe noch nicht so ganz verstanden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2, 3  Weiter
Seite 2 von 3

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum