Witam, mam kolejny (niestety) problem z Builderem i nie mam pojęcia co robię źle. Bo zapisuje dobrze, a jednocześnie źle. Bo przy odczycie mam mieć np 0,02 a zapisuje mi 0.02 i tutaj jest właśnie problem. Daję fragment kodu:
Zapisu
fstream plik;
plik.open("baza/bezpiecznik.txt", ios::out);
for(unsigned int i=0; i<B.size(); i++)
{
VKomponent= &B[i];
plik<<VKomponent->return1()<<endl;
plik<<VKomponent->return2()<<endl;
plik<<VKomponent->return5().c_str()<<endl;
}
plik.close();
Klasy Bezpiecznik .h
#ifndef BEZPIECZNIK_H_INCLUDED
#define BEZPIECZNIK_H_INCLUDED
#include "Komponent.h"
#include <vcl.h>
class Bezpiecznik :public Komponent
{
public:
//potrzebne
Bezpiecznik(double=250,double=20,AnsiString="szybki");
virtual double return1();
virtual double return2();
virtual AnsiString return5();
virtual double return3()
{
return 0;
}
virtual double return4()
{
return 0;
}
virtual AnsiString return6()
{
return "";
}
private:
double napiecie;//maksymalne napiecie
double prad;//maksymalny prad
AnsiString typ;//typ bezpiecznika(szybki itp)
};
#endif // BEZPIECZNIK_H_INCLUDED
i klasa Bezpiecznik .cpp
#include "bezpiecznik.h"
Bezpiecznik::Bezpiecznik(double nap, double amper,AnsiString type)
{
napiecie=nap;
prad=amper;
typ=type;
}
double Bezpiecznik::return1()
{
return napiecie;
}
double Bezpiecznik::return2()
{
return prad;
}
AnsiString Bezpiecznik::return5()
{
return typ;
}
i fragment kodu odpowiedzialnego za odczyt:
fstream plik;//deklaracja zmiennej plikowej
string linia;
AnsiString zmienna[5];
plik.open("baza/bezpiecznik.txt", ios::in);
if(plik.is_open())
{
//string linia;
int nr_linia=1;
while(getline(plik,linia))
{
switch(nr_linia)
{
case 1:
zmienna[0]=linia.c_str();
break;
case 2:
zmienna[1]=linia.c_str();
break;
case 3:
zmienna[2]=linia.c_str();
}
nr_linia++;
if(nr_linia==4)
{
nr_linia=1;
B.push_back(Bezpiecznik(zmienna[0].ToDouble(),zmienna[1].ToDouble(),zmienna[2]));
}
}//while
}//if
//koniec bezpiecznika
plik.close();
plik.clear();