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
|
Verfasst am: 10.03.2004, 15:07 Titel: |
|
|
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
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 |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 10.03.2004, 15:09 Titel: |
|
|
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 |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 10.03.2004, 15:45 Titel: |
|
|
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 |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 10.03.2004, 15:58 Titel: |
|
|
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 |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 10.03.2004, 16:13 Titel: |
|
|
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 |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 10.03.2004, 16:20 Titel: |
|
|
Ja muss es, aber wir wollen dich ja auch ein wenig zum mitdenken animieren  _________________ "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 |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 10.03.2004, 16:20 Titel: |
|
|
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 |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 10.03.2004, 16:32 Titel: |
|
|
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?
oder was anderes? |
|
Nach oben |
|
 |
=]Mid[=]Night[= Super JLI'ler

Anmeldedatum: 20.11.2002 Beiträge: 380 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 10.03.2004, 16:39 Titel: |
|
|
ich wuerde sagen, datei ist ein ifstream-objekt, habe aber so gut wie kein plan von stl |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 10.03.2004, 16:50 Titel: |
|
|
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 |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 10.03.2004, 16:57 Titel: |
|
|
OK seh ich ein.
Also:
Von welchen Typ ist "datei"? |
|
Nach oben |
|
 |
Hazel JLI MVP


Alter: 40 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 10.03.2004, 16:59 Titel: |
|
|
Code: |
ifstream datei("DATEINAME");
|
Ich denke du siehst es ein? Dann sag doch mal was vor 'datei' steht... genau, und das ist der Typ..  _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
 |
=]Mid[=]Night[= Super JLI'ler

Anmeldedatum: 20.11.2002 Beiträge: 380 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 10.03.2004, 17:00 Titel: |
|
|
sag ich doch |
|
Nach oben |
|
 |
HotAcid Super JLI'ler

Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 10.03.2004, 17:06 Titel: |
|
|
"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 |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 10.03.2004, 17:07 Titel: |
|
|
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
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 |
|
 |
|