Witam,
Czy mógłby ktoś naświetlić jak zapisać i odczytać tablicę struktur do pliku binarnego?
Aktualnie zapisuje tylko jedną linijkę i to w trakcie działania programu, po zrestartowaniu nie ma czego odczytać...
struct wygrany
{
AnsiString imie;
AnsiString czas;
int punkty;
AnsiString data;
};
wygrany top10[10];
Odczyt przy starcie programu:
fstream plik1;
plik1.open( "plik.dat", std::ios::binary | std::ios::in );
if (plik1 != NULL)
for (int i = 0; i < 10; i++)
{
plik1.read((char*)&top10[i].imie,sizeof(top10[i].imie));
plik1.read((char*)&top10[i].czas,sizeof(top10[i].czas));
plik1.read((char*)&top10[i].punkty,sizeof(top10[i].punkty));
plik1.read((char*)&top10[i].data,sizeof(top10[i].data));
}
plik1.close();
Zapis
int min=top10[0].punkty;
int nrmin=0;
for (int i = 9; i >=0 ; i--)
if(min > top10[i].punkty || top10[i].punkty==NULL)
{
min = top10[i].punkty;
nrmin = i;
}
top10[nrmin].imie=Edit1->Text;
top10[nrmin].czas=Label7->Caption;
top10[nrmin].punkty=Label3->Caption.ToInt();
top10[nrmin].data=Label5->Caption;
fstream plik;
plik.open( "plik.dat", std::ios::binary | std::ios::out );
plik.write((char*)&top10[nrmin].imie,sizeof(top10[nrmin].imie));
plik.write((char*)&top10[nrmin].czas,sizeof(top10[nrmin].czas));
plik.write((char*)&top10[nrmin].punkty,sizeof(top10[nrmin].punkty));
plik.write((char*)&top10[nrmin].data,sizeof(top10[nrmin].data));
plik.close();