rzecz jest następująca mam tablice tworzoną dynamicznie
- char **autor;
char **tytul;
char **album;
char **info;
char **nazwapliku;
char **nazwa;
int *priorytet;
char **kategoria;
char **podkategoria;
int *fade;
bool *zablokowane;
int *id;
int ile;
gdy próbuje zapisać same int i bool wszystko jest ok lecz przy zapisywaniu choćby jednego znaku char program się krzaczy
- Kod: Zaznacz cały
class utwory
{
private:
struct zapis
{
char autor[40];
char tytul[40];
char album[40];
char info[1000];
char nazwapliku[200];
char nazwa[100];
int priorytet;
char kategoria[20];
char podkategoria[20];
int fade;
bool zablokowane;
int id;
int ile;
};
zapis zapisuj;
public:
char **autor;
char **tytul;
char **album;
char **info;
char **nazwapliku;
char **nazwa;
int *priorytet;
char **kategoria;
char **podkategoria;
int *fade;
bool *zablokowane;
int *id;
int ile;
utwory()
{
autor=new char *[100000];
for(int i=0;i<100000;i++)
autor[i]=new char[40];
tytul=new char *[100000];
for(int i=0;i<100000;i++)
tytul[i]=new char[40];
album=new char *[100000];
for(int i=0;i<100000;i++)
album[i]=new char[40];
info=new char *[100000];
for(int i=0;i<100000;i++)
info[i]=new char[1000];
nazwapliku=new char *[100000];
for(int i=0;i<100000;i++)
nazwapliku[i]=new char[200];
nazwa=new char *[100000];
for(int i=0;i<100000;i++)
nazwa[i]=new char[100];
kategoria=new char *[100000];
for(int i=0;i<100000;i++)
kategoria[i]=new char[20];
podkategoria=new char *[100000];
for(int i=0;i<100000;i++)
podkategoria[i]=new char[20];
priorytet = new int[100000];
fade = new int[100000];
zablokowane = new bool[100000];
id = new int[100000];
ile=0;
};
~utwory()
{
for(int i=0;i<100000;i++)
delete [] autor[i];
delete [] autor;
for(int i=0;i<100000;i++)
delete [] tytul[i];
delete [] tytul;
for(int i=0;i<100000;i++)
delete [] album[i];
delete [] album;
for(int i=0;i<100000;i++)
delete [] info[i];
delete [] info;
for(int i=0;i<100000;i++)
delete [] nazwa[i];
delete [] nazwa;
for(int i=0;i<100000;i++)
delete [] nazwapliku[i];
delete [] nazwapliku;
for(int i=0;i<100000;i++)
delete [] kategoria[i];
delete [] kategoria;
for(int i=0;i<100000;i++)
delete [] podkategoria[i];
delete [] podkategoria;
delete [] priorytet;
delete [] fade;
delete [] zablokowane;
delete [] id;
ile=0;
};
void dodaj(String autor,String tytul,String album,String info,String nazwapliku,String nazwa,int priorytet,String kategoria,String podkategoria,int fade,bool zablokowane)
{
strcpy(this->autor[ile],autor.c_str());
strcpy(this->tytul[ile],tytul.c_str());
strcpy(this->album[ile],album.c_str());
strcpy(this->info[ile],info.c_str());
strcpy(this->nazwapliku[ile],nazwapliku.c_str());
strcpy(this->nazwa[ile],nazwa.c_str());
strcpy(this->kategoria[ile],kategoria.c_str());
strcpy(this->podkategoria[ile],podkategoria.c_str());
this->priorytet[ile]=priorytet;
this->fade[ile]=fade;
this->zablokowane[ile]=zablokowane;
if(ile!=0)
id[ile]=id[ile-1]+1;
else
id[ile]=0;
ile++;
}
void usun(int ktore)
{
for(int i=ktore;i<ile;i++)
{
strcpy(this->autor[i],this->autor[i+1]);
strcpy(this->tytul[i],this->tytul[i+1]);
strcpy(this->album[i],this->album[i+1]);
strcpy(this->info[i],this->info[i+1]);
strcpy(this->nazwapliku[i],this->nazwapliku[i+1]);
strcpy(this->nazwa[i],this->nazwa[i+1]);
this->kategoria[i]=this->kategoria[i+1];
this->podkategoria[i]=this->podkategoria[i+1];
this->priorytet[i]=this->priorytet[i+1];
this->fade[i]=this->fade[i+1];
this->zablokowane[i]=this->zablokowane[i+1];
this->id[i]=this->id[i+1];
}
ile--;
}
void zapisz()
{
TFileStream *pfs;
AnsiString asexe=Application->ExeName;
AnsiString aspas=ExtractFilePath(asexe);
AnsiString as=aspas+"test.bin";
pfs=new TFileStream(as,fmCreate);
for(int i=0;i<ile;i++)
{
pfs->Write(&autor[i],40);
pfs->Write(&priorytet[i],sizeof(int));
pfs->Write(&fade[i],sizeof(int));
pfs->Write(&id[i],sizeof(int));
pfs->Write(&zablokowane[i],sizeof(bool));
}
pfs->Write(&ile,sizeof(int));
pfs->Free();
}
void wczytaj()
{
TFileStream *pfs;
AnsiString asexe=Application->ExeName;
AnsiString aspas=ExtractFilePath(asexe);
AnsiString as=aspas+"test.bin";
if(FileExists(as))
pfs=new TFileStream(as,fmOpenRead);
else
pfs=new TFileStream(as,fmCreate);
pfs->Read(&ile,sizeof(int));
for(int i=0;i<ile;i++)
{
pfs->Read(&zablokowane[i],sizeof(bool));
pfs->Read(&id[i],sizeof(int));
pfs->Read(&fade[i],sizeof(int));
pfs->Read(&priorytet[i],sizeof(int));
pfs->Read(&autor[i],40);
}
pfs->Free();
}
};
co robię nie tak




