Hoy les traigo otro problemita que me tiene trabado.
El problema es el uso del vector donde tengo almacenado cada objecto.
Tengo una funcion que genero cada instancia del objecto y cuando muestro las las variables de cada objecto funciona de 10, el problema viene cuando quiero mostrar ese vector de objectos en otra funcion, este me muestra uno de los vectores que hay dentro de cada objeto pero "duplicado" cabe aclarar que nunca hago una modificacion, solamente los muestro en distintas funciones.
Este vector de objectos esta declarado de forma global.
Código
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" #include "Cartones.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; TFileStream *ioArchivo; Cartones *cCarton; vector<Cartones *> vCartones; int nCartones; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Memo1->Lines->Clear(); Memo2->Lines->Clear(); ioArchivo = new TFileStream("cartones.txt", fmCreate); int cantCartones = nCartones; for(int i=0; i<cantCartones; i++){ cCarton = new Cartones(1, 25, 15); cCarton->setNumSerie(i+1); cCarton->generarNumerosDeCarton(); vCartones.push_back(cCarton); } // ----------------------- ACA LOS MUESTRA BIEN -------------------------- for(unsigned int i=0; i<vCartones.size(); i++){ Memo1->Lines->Append(AnsiString(vCartones[i]->getNumSerie())); Memo1->Lines->Append(vCartones[i]->devolverNumeros()); //ESTO } for(unsigned int i=0; i<vCartones.size(); i++){ Memo2->Lines->Append(AnsiString(vCartones[i]->getNumSerie())); Memo2->Lines->Append(vCartones[i]->devolverNumeros()); } ioArchivo->WriteComponent(Memo2); delete ioArchivo; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { randomize(); nCartones = 0; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { nCartones += 3; Label1->Caption = AnsiString(nCartones); Label2->Caption = AnsiString(nCartones/3); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Memo1->Lines->Clear(); Memo2->Lines->Clear(); ioArchivo = new TFileStream("cartones.txt", fmOpenRead | fmShareExclusive); ioArchivo->ReadComponent(Memo2); vector<char> vcNumeros(25); AnsiString aux; int cont = 1, num = 0; for(int i=0; i<Memo2->Lines->Count; i+=2){ cCarton = new Cartones(1, 25, 15); cCarton->setNumSerie(Memo2->Lines->Strings[i].ToInt()); aux = Memo2->Lines->Strings[i+1]; while(cont <= aux.Length()){ num = aux[cont]; if(num >= 1 && num <= 25) vcNumeros[num-1] = 'X'; cont++; } cCarton->setNumeros(vcNumeros); vCartones.push_back(cCarton); } delete ioArchivo; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button4Click(TObject *Sender) { /*Cartones cCartonGanador(1, 25, 15); cCartonGanador.generarNumerosDeCarton(); cCartonGanador.setNumerosEnteros(cCartonGanador.devolverNumeros()); Memo1->Lines->Append("Carton Ganador: "); Memo1->Lines->Append(cCartonGanador.getNumerosEnteros());*/ // ---------------------- ACA LOS MUESTRA MAL ----------------------- for(unsigned int i=0; i<vCartones.size(); i++){ Memo1->Lines->Append(AnsiString(vCartones[i]->getNumSerie())); Memo1->Lines->Append(vCartones[i]->devolverNumeros()); //ESTO } /*int aciertos; for(unsigned int i=0; i<vCartones.size(); i++){ aciertos = vCartones[i]->compararCartones(cCartonGanador); vCartones[i]->setCantNumerosAcertados(aciertos); vCartones[i]->setNumerosEnteros(vCartones[i]->devolverNumeros()); } int i = 15; for(unsigned int j=0; j<vCartones.size(); j++){ //if(vCartones[j]->getCantNumerosAcertados() == i && i >= 12 && i <= 15){ Memo1->Lines->Append("Carton: " + AnsiString(vCartones[j]->getNumSerie()) + " Aciertos: " + AnsiString(vCartones[j]->getCantNumerosAcertados())); Memo1->Lines->Append(vCartones[j]->getNumerosEnteros()); //} //i--; }*/ } //---------------------------------------------------------------------------