Ayudaaaa
buenas a tod@s, necesito ayuda con el siguiente codigo.Tengo el siguiente .h:
#ifndef _TALBUM_
#define _TALBUM_
typedef struct{
AnsiString Album;
AnsiString Grupo;
AnsiString Estilo;
AnsiString Cover;
int Formato;
}tAlbum;
tAlbum *Catalogo;
#endif
Y ahora el siguiente trozo de codigo:
void __fastcall TfrmCMusica::FormActivate(TObject *Sender)
{
int i=0,j;
AnsiString disco;
if(!access("album.txt",0)){
memoAux->Lines->LoadFromFile("album.txt");
i = memoAux->Lines->Count;
}
//Reservamos memoria para el vector
Catalogo=(tAlbum*)malloc(sizeof(tAlbum)*i);
//Inicializamos el vector con los discos que ya tenemos guardados
for(j=0;j<i;j++){
disco = memoAux->Lines->operator [](j);
Catalogo[j].Album = disco.SubString(1,disco.Pos(":")-1);
disco.Delete(1,disco.Pos(":"));
Catalogo[j].Grupo = disco.SubString(1,disco.Pos(":")-1);/* aki me falla*/
disco.Delete(1,disco.Pos(":"));
Catalogo[j].Estilo = disco.SubString(1,disco.Pos(":")-1);
disco.Delete(1,disco.Pos(":"));
Catalogo[j].Formato= disco.ToInt();
}
}
donde esta indicado me falla al ejecutar y no se pork sera, es como si tuviera k reservar memomria para un AnsiString, pero no tiene sentido, pork es como si tuviera k reservar memoria para un int(o eso creo yo).
Otra cosa es k si en el .h en vez de declarar Catalogo como un puntero a un tAlbum lo declaro como un array de 20(por ejemplo) funciona perfectamente, el problema esta en k no puedo saber el tamaño del vector.
A ver si me puede ayudar alguien, y gracias de antemano.
|