//----------------------------------------------------------------------------- void TAdministradora :: LoadAccounts(AnsiString pFileName)//ver lo del buffer cuando voy a escribir un parrafo { //eso hay que arreglarlo TFile* AccountFile = new TFile(pFileName); AccountFile->Open("rb+"); AccountFile->SeekTo(0); if(AccountFile->IsOpen()) { TGLinkedList* Servers = new TGLinkedList(); AllServers(Servers); if(Servers) { while(AccountFile->FilePos() < AccountFile->FileSize()) { TSAccount account; AccountFile->Read(&account,sizeof(TSAccount)); //primera lectura AnsiString ServidorNombre = account.server; TServidor* Server = (TServidor*)Servers->FirstThat(Daemon::FindNameList,&ServidorNombre); if(Server) { TCuenta* cuenta = new TCuenta(); cuenta->Usuario(account.usuario); cuenta->Password(account.password); cuenta->Address(account.address); TSPerson person; cuenta->Person()->Name(account.persona.name); cuenta->Person()->Apellidos(account.persona.apellidos); cuenta->Person()->Sexo(account.persona.sexo); cuenta->Person()->Ocupacion(account.persona.ocupation); cuenta->Person()->Age(account.persona.age); cuenta->Cuota(account.cuota); cuenta->Cuotafree(account.cuotafree); cuenta->Salida(account.internacional); Server->Cuentas()->Insert(cuenta); int i = 0; while(i < account.emails) { TSMail mail; AccountFile->Read(&mail,sizeof(TSMail)); //segunda lectura TMail* Mail = new TMail(); Mail->Parrafo(mail.parrafo); Mail->Asunto(mail.asunto); Mail->Remitente(mail.remitente); Mail->Size(mail.size); cuenta->Correos()->Insert(Mail); i++; int j = 0; while(j < mail.adjunts) { TSAdjunt adjunt; AccountFile->Read(&adjunt,sizeof(TSAdjunt)); //tercera lectura TFichero* fichero = new TFichero(); fichero->Adress(adjunt.adress); fichero->Tipo(adjunt.tipo); fichero->Size(adjunt.length); Mail->InsertAdjunt(fichero); j++; } } int c = 0; while(c < account.agendas) { char direccion[36]; AccountFile->Read(&direccion,36); AnsiString nombre = direccion; cuenta->Agendas()->Insert(&nombre); } } } } } AccountFile->Close(); delete AccountFile; }