Drodzy koledzy z 4p, nastał wielki kryzys gdyz od kilku godzin sie mecze i debuguje i nie moge sobie poradzic z zapisem i odczytem binarnym, pomimo ze wszystko dobrze szlo do dzisiaj, pomozcie prosze.
wiec mam strukture ktora sobie przechowuje date w 3 intach : int dzien, int miesiac, int rok.
wiec mam takie 2 obiekty w klasie ktora porownujac dokonuje zapisu, akutalizacji albo dodania nowego rekordu.
i tak jak sobie zapisuje skladniki mojej klasy Obiekt_glowny binarnie, to wszystko pieknie, ale jak chce zapisac ze skladnika tej klasy pierwszyCzas.dzien etc. to jak odczytam to juz nie jest pieknie.
Co robie źle?
Zapisuje tak:
ofstream Wyjscie(NazwaWyniku.c_str(), ios_base::binary);
char* temp;
int itemp(0);
temp = new char[sizeof(int)];
itemp = PierwszyCzas.Dzien; temp = (char*)(itemp);
Wyjscie.write(temp, sizeof(int)); cout << ((int)(*temp));
itemp = PierwszyCzas.Miesiac; temp = (char*)(itemp);
Wyjscie.write(temp, sizeof(int)); cout << ((int)(*temp));
itemp = PierwszyCzas.Rok; temp = (char*)(itemp);
Wyjscie.write(temp, sizeof(int)); cout << ((int)(*temp));
//tu wyzej dodalem itempa bo myslalem ze pomoze... nizej bez itempa
temp = (char*)(&OstatniCzas.Dzien); Wyjscie.write(temp, sizeof(int)); cout << ((int)(*temp));
temp = (char*)(&OstatniCzas.Miesiac); Wyjscie.write(temp, sizeof(int)); cout << ((int)(*temp));
temp = (char*)(&OstatniCzas.Rok); Wyjscie.write(temp, sizeof(int)); cout << ((int)(*temp));
Odczytuje tak:
char* temp;
ifstream Wejscie(NazwaWyniku.c_str(), ios_base::binary);
if(Wejscie.good()){
temp = new char[sizeof(int)];
if(PierwszyCzas.Dzien == 0){
Wejscie.read(temp, sizeof(int)); PierwszyCzas.Dzien = (int)(*temp);
Wejscie.read(temp, sizeof(int)); PierwszyCzas.Miesiac = (int)(*temp);
Wejscie.read(temp, sizeof(int)); PierwszyCzas.Rok = (int)(*temp);
....reszta odczytu/
przykladowo dla dzisiejszej pechowej daty
1962012 - odczyt z tempa to : 196-36
dodam ze reszte skladnikow klasy dobrze mi czyta tylko w tej wewnetrznej strukturze z czasem cos sie chrzani.
pozdrawiam
ChS