Ładny brzuch

Mam pewien problem. Mam klase osoba, dzieki ktorej operuje na pliku. Funkcja osoba::odczytaj(int nr), jak nie trudno sie domyslic, odczytuje z pliku wiersz o okreslonym numerze i zapisuje go w tablicy zmiennych typu string (moze zrobie zeby go bezposrednio zwracala, ale na razie jest jak jest ;)). Funkcja string* osoba::importuj() zwraca ta tablice, a funkcja osoba::policzlinie() zwraca ilosc linie w pliku. No i mam taki kawalek kodu: vector<string*> vs; osoba o; for(int i=0; i<o.policzlinie(); i++){ o.odczytaj(i+1); vs.push_back(o.importuj()); for(int j=0; j<8; j++)  //dlatego 8, bo kazda taka tablica ma 8 zmiennych.  StringGrid1->Cells[j+1][i+1]=vs[i][j].c_str(); }
W ten sposob wszystko dziala, t.j. odczytuje wszystkie linie i 'wrzuca' mi to do StringGrid. Jednak, jesli chce najpierw odczytac dane z pliku do vectora, a dopiero potem go pokazac (a pomiedzy tymi czynnosciami np. posortowac) to wyswietla mi sie wszedzie ostatni rekord. Tzn. cala tablica zapisana na ostatniej pozycji :(. Sadze, ze blad jest gdziec w pierwszej czesci tego kodu, czyli for(int i=0; i<o.policzlinie(); i++), tylko dokladnie nie wiem gdzie. Dziwi mnie to ze jest to wlasnie ostatnia pozycja. Ogolnie po skonczeniu odczytywania ostania tablica stringow jest zapisywana na wszystkich pozycjach wektora. Pozwole sobie jeszcze przedstawic kod, w ktorym rozbilem te funkcje: //gdzies tam deklaracje zmiennych void Czytaj(){ for(int i=0; i<o.policzlinie(); i++){ o.odczytaj(i+1); vs.push_back(o.importuj()); }} void Pokaz(){ for(unsigned int i=0; i<vs.size(); i++){ for(int j=0; j<8; j++)  StringGrid1->Cells[j+1][i+1]=vs[i][j].c_str(); }}
Wlasnie przy takim rozbiciu wystepuje moj blad. Jesli ktos dopatrzy tu sie jakiejs pomylki, bledu czy ogolnie wie jak mi pomoc, to bardzo bym prosil :)



Jeeli plik podczas dziaania klasy jest cigle otwarty ( co swoj drog - jest mao praktyczne ) to zapewne zapomniae przewin karetki na pocztek pliku :)


to zapewne zapomniae przewin karetki na pocztek pliku
NIestety - slabo to rozumiem ;)...
A swoja droga dodalem do funkcji osoba::odczytaj() na jej koncu instrukcje zamykajaca plik. Niestety nic to nie dalo. Czy mozesz jakos napisac to jasniej?

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •