[ Milan Aksic @ 17.02.2002. 15:47 ] @
Ovaj se kod korektno izvrsava na BC++, upise objekat i kasnije ga vrati iz fajla, upravo ono sto bi i trebalo da radi, ali u Dev-C++ ne radi, odnosno radi, ali ne ubacuje objekat u fajl vec ga samo otvori i fajl ostaje prazan:
Code:

#include <stdlib.h>
#include <fstream.h>

class Test
{
   public:
      Test(int weight, long days):itsWeight(weight), itsNumbersDaysAlive(days){}
      ~Test(){}
      
      int GetWeight() const { return itsWeight; }
      void SetWeight(int weight) { itsWeight = weight; }
      
      long GetDaysAlive() const { return itsNumbersDaysAlive; }
      void SetDaysAlive(long days) { itsNumbersDaysAlive = days; }
   private:
      int itsWeight;
      long itsNumbersDaysAlive;
};

int main()
{
   char fileName[80];
   
   cout << "Please enter the file name: ";
   cin >> fileName;
   
   ofstream fout(fileName, ios::binary);
   if (!fout)
   {
      cout << "Unable to open " << fileName << " for writing.\n";
      return(1);
   }
   
   Test T1(50, 100);
                                     
   fout.write((char *) &T1, sizeof T1);
   
   fout.close();
   
   ifstream fin(fileName, ios::binary);
   if (!fin)
   {
      cout << "Unable to open " << fileName << " fo reading.\n";
      return(1);
   }
   
   Test T2(1, 1);
   
   cout << "T2 weight: " << T2.GetWeight() << endl;
   cout << "T2 days: " << T2.GetDaysAlive() << endl;
   
   fin.read((char *) &T2, sizeof T2);
   
   cout << "T2 weight: " << T2.GetWeight() << endl;
   cout << "T2 days: " << T2.GetDaysAlive() << endl;
   
   fin.close();
   
   system("pause");
   return 0;
}

U cemu je problem?
[ leka @ 25.02.2002. 14:31 ] @
Passanger, izvini sto ti ovako kasno odgovaram na pitanje - nisam ga video ako mi verujes - ne znam u cemu je problem, ja sam zapravo samo main() izmenio.
Elem, "ispravan" source sam ti "zalepio" ovde, a evo rezultata koji sam dobio kada sam kompajlirao i izvrsio program:
Code:

Please enter the file name: trt
T2 weight: 1
T2 days: 1
T2 weight: 1
T2 days: 1
Press any key to continue . . .


[Ovu poruku je menjao leka dana 25.02.2002 u 03:36 PM GMT]

[Ovu poruku je menjao leka dana 25.02.2002 u 03:39 PM GMT]
[ alex @ 25.02.2002. 14:59 ] @
Citat:
leka:
problem je sto GNU ne dozvoljava main() verovo ili ne, to je Microsoft izmisljotina...


Izvini na upadu, Leko, ali - kakva je ovo izjava??
[ leka @ 25.02.2002. 15:40 ] @
Alex, skroz si u pravu lupetam... Mislio sam da je stvar do MinGW-a koji dolazi uz DevC++, ali nije... Svejedno, lupio sam zestoko! :)

[Ovu poruku je menjao Ivan Dimkovic dana 25.02.2002 u 05:38 PM GMT]
[ Milan Aksic @ 25.02.2002. 16:00 ] @
Citat:
leka:
Passanger, izvini sto ti ovako kasno odgovaram na pitanje - nisam ga video ako mi verujes - ne znam u cemu je problem, ja sam zapravo samo main() izmenio.
Elem, "ispravan" source sam ti "zalepio" ovde, a evo rezultata koji sam dobio kada sam kompajlirao i izvrsio program:
Code:

Please enter the file name: trt
T2 weight: 1
T2 days: 1
T2 weight: 1
T2 days: 1
Press any key to continue . . .


[Ovu poruku je menjao leka dana 25.02.2002 u 03:36 PM GMT]

[Ovu poruku je menjao leka dana 25.02.2002 u 03:39 PM GMT]


Izvini Leko, bojim se da te nisam razumeo ?

hm... nema sourca koji si mi zalepio :)

U vezi outputa, to isto i ja dobijam, jednostavno ne upise klasu u fajl iz kojeg se kasnije uzimaju podaci!

Samo da napomenem, da ovaj source radi ispravno, preveden u Borland C++.
[ Ivan Dimkovic @ 25.02.2002. 16:39 ] @
[quote]leka:
Alex, skroz si u pravu lupetam... Mislio sam da je stvar do MinGW-a koji dolazi uz DevC++, ali nije... Svejedno, lupio sam zestoko! :)


:) Ali si uspeo da pljucnes svog krvnog neprijatelja - Microsoft :) Xexe.. stari dobri Leka :)

*just joking*
[ leka @ 25.02.2002. 16:51 ] @
Izgleda da se problem moze resiti jednim lepim memcpy() ... Videcu ako imadnem vremena da se poigram sa tim...
[ leka @ 25.02.2002. 18:12 ] @
Proverio sam - MinGW radi okej... GCC je to :) Problem je zapravo u jednoj liniji koju Borland C++ GUTA, a GCC ne guta... Normala, Borland je naucio da Windows programeri prave greske ko ludi, tako da su morali verovatno da dodaju jos nekoliko hiljada ispitivanja i da poprave sto se moze...
[ Dragi Tata @ 25.02.2002. 18:22 ] @
Citat:
leka:
Proverio sam - MinGW radi okej... GCC je to :) Problem je zapravo u jednoj liniji


Nego, Leko, izvini što skrećem sa teme, ali "skinuo" sam MinGW pre nekoliko meseci i ispostavilo se da mu fali podrška za wide-char u C++u (nema wostream uopšte). Pogledao sam i na gcc-u koji ide uz Mandrake 7.2 i video isti problem. Znaš li ti nešto o tome? Treba li da skinem neki dodatni zip, ili šta?
[ Milan Aksic @ 25.02.2002. 19:45 ] @
Citat:
leka:
Proverio sam - MinGW radi okej... GCC je to :) Problem je zapravo u jednoj liniji koju Borland C++ GUTA, a GCC ne guta... Normala, Borland je naucio da Windows programeri prave greske ko ludi, tako da su morali verovatno da dodaju jos nekoliko hiljada ispitivanja i da poprave sto se moze...

:) Ok Leko samo reci koja linija, gde, sta kako :) ?

I (najvaznije) da li/kako moze da se ispravi ?
[ Milan Aksic @ 28.02.2002. 03:13 ] @
Postavio sam isto pitanje na Dev-C++ forumu ni oni ne znaju o cemu je recu, nasli su samo za shodno da mi preporuce da ne koristim strimove :p