Kleines Problem von einlesen von Dateien
-
Hallo
habe nen kleines Prob mit dem einlesen von einer Datei und zwar möchte ich dei Datei zeilenweise auslesen. Ein Datensatz kannman anhand der nummer rausfinden und die nachfolgenden zeilen sind dann die drei Attribute.
So sieht mein Code bisher aus:
treffer = 0; CStdioFile datei( "daten.dat", CFile::modeRead ); while(datei.ReadString(zeile)){ if(zeile == "1*"){ treffer = 1; nummer = zeile; //break; } if(treffer = 1){ treffer = 2; beschreibung = zeile; //break; } if(treffer = 2){ treffer = 3; preis = zeile; //break; } if(treffer = 3){ m_artikelanzeige.AddString(nummer +" "+beschreibung+" "+preis); } }
Problem ist jetzt das ich aus der while schleife net raus komme also das erst eine weitere zeile eingelesen werden muss befor es weiter geht sonst bekomme ich immer das gleiche angezeigt.
Mit break; komme ich net raus da geht gar nix mehr:(MFG
Jens
-
Erstmal solltest du in den if-Abfragen ein "==" verwenden und als nächstes eventuell ein else davor (sonst wirst du von einem if() direkt zum nächsten weitergereicht und erhältst in allen Feldern deines Datensatzes den selben Wert ("1*").
Und außerdem ist mir nicht klar, was die erste if()-Abfrage vergleichen soll: Werden deine Datensätze wirklich je von den Zeichen "1*\n" eingeleitet?
-
1*
Beschreibung
Preisso sieht meine datei!
Also quasi sobald 1* kommt gehört die anderen beiden auch noch zusammen so das ich
die unterscheiden kann. Es geht einfach nur darum mehrere Datensätzt zusammenzufügen so das man sie identifizieren kann.drei Zeilen sind immer ein Datenstz und die nächsten dann wieder also die fangen dann mit 2* an und die nächsten beiden zeilen gehören dann wieder zu 2*
-
versuch's mal etwa so:
while(datei.ReadString(zeile)) { switch(treffer) { case 0: if(zeile[zeile.GetLength()]=='*') //Zeile endet mit "*" { nummer=zeile.Left(zeile.GetLength-1)); //das "*" am Ende abgeschnitten treffer=1; //nächste Zeile erwartet Beschreibung break; } case 1: beschreibung=zeile; treffer=2; //nächste Zeile erwartet Preis break; case 2: preis=zeile; m_anzeige.AddString(nummer+":"+Beschreibung+"="+Preis); //eventuelle Weiterverarbeitung der Daten treffer=0; //nächste Zeile sucht nach neuem Datensatz break; } }