Problem mit ifstream und BCB6
-
Hi,
habe Probleme mit dem BCB6 und der ifstream. Und zwar will ich in meinen Programm eine Comma-Seperated-Value(csv)-Datei laden. In dieser Datei stehen float werte. Jetzt will ich nach jedem eingelesenen Wert in der Datei um eine Stelle weiter springen, und das mit dem Befehl, fDatei.seekg(1,std::ios_base::cur). Was bedeuten soll, eine Stelle weiter von der aktuellen Position. Ich habe es auch shon mal bei einem Freund im BCB5 so gemacht, und da ging es. Nur da wir in der Firma den BCB6 benutzten, bin ich jetzt etwas aufgeschmissen. Denn nach jedem seekg aufruf, geht der Getpointer auf -1 und somit kann ich das file nicht mehr laden. Ich habe auch schon eine etwas umständliche Methode geschrieben, mit der es zu 80% funktioniert, nur bei einigen Files habe ich dann das Problem, das selbst mit einem offest den ic selbst berechnet der Getpointer auf -1 springt, und dafür habe ich bisher keine Lösung gefunden. Kann mir jemand vielleicht helfen?
Und hier der Code der nicht will wie er soll
bool __fastcall TInFile::LoadZCalib(const char *_Name ,TCalibrateCam* cali) { long int getPointer=0,offset=0,getPointer1=0; float temp; fDatei.open(_Name,ios_base::in); progressBar->Position=0; progressBar->StepBy(10); progressBar->Step=2; for (int i=0;i<_PixHoehe;i++) { fDatei>>temp; cali->setSteigung(i,j,temp); getPointer= fDatei.tellg(); fDatei.seekg(1,std::ios_base::cur); progressBar->StepIt(); } progressBar->StepBy(80); fDatei.close(); progressBar->Position=100; if (getPointer >0) return true; else return false; }
-
Schade das keiner Helfen kann!!!!
-
Wieso das so nicht klappt kann ich nicht erkennen, aber hast du schonmal die TFileStream Klasse von Borland versucht? Solange in dem Projekt nicht auf C++-Standard geachtet werden muss sollte die auch funktionieren.
ps.: Mir fällt grad was auf: Wo wird fDatei deklariert?
-
Beliah schrieb:
Wieso das so nicht klappt kann ich nicht erkennen, aber hast du schonmal die TFileStream Klasse von Borland versucht? Solange in dem Projekt nicht auf C++-Standard geachtet werden muss sollte die auch funktionieren.
ps.: Mir fällt grad was auf: Wo wird fDatei deklariert?
fDatei wird in der Klassen deklaratio deklariert als
ifstream fDatei;, als Eigenschaft der Klasse TInFile.
-
Versuch doch mal eine Lösung ohne Verwendung von seekg. Wozu brauchst du das überhaupt, um das Komma zu überlesen?
-
Also um ein einzelnes Zeichen zu überlesen, ist seekg() vermutlich Overkill. Die beste Lösung wäre eher "fDatei.get();" (hier kannst du eventuell noch den Rückgabewert abfangen und überprüfen, ob wirklich ein ',' drin war.