Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Varias cuentas idpop3

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Varias cuentas idpop3 Responder citando

Hola quisiera preguntar algo con éste tema, estoy trabajando con c++ Builder XE5 bajo windows7 64 bits, el problema es el siguiente, cuando compruebo una cuenta todo va ok, pero al comprobar varias me sale un error en blanco y no sé porqué.
Código:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   if (TreeView1->Items->Count == 0) {
     ShowMessage("No hay ninguna cuenta establecida\n"
              "pulsa sobre nueva cuenta para establecer una.");
   }
   else {
     String host = "";
     String userid = "";
     String pasword = "";
     int puerto = 0;
     if (lis->Count == 1) {
         for (int i = 0; i <lis>Count; i++) {
            host = opti->ReadString(TreeView1->Items->Item[i]->Text,"host","");
            userid = opti->ReadString(TreeView1->Items->Item[i]->Text,"userid","");
            pasword = opti->ReadString(TreeView1->Items->Item[i]->Text,"pasword","");
            puerto = opti->ReadInteger(TreeView1->Items->Item[i]->Text,"puerto",0);
            if (correu->Connected()) {
               correu->Disconnect();
            }
            if (!correu->Connected()) {
               correu->Host = host;
               correu->Username = userid;
               correu->Password = pasword;
               correu->Port = puerto;
               if (opti->ReadBool(TreeView1->Items->Item[i]->Text,"conexionsegura",false)){
                  correu->IOHandler = IdSSLIOHandlerSocketOpenSSL1;
               }
               else {
                  correu->IOHandler = NULL;
               }
               correu->Connect();
               Application->ProcessMessages();
               int num_mensajes = correu->CheckMessages();
               if (num_mensajes==0){
                  Label12->Font->Color = clBlack;
                  Label12->Caption = "No hay mensajes en "+TreeView1->Items->Item[i]->Text+".";
                  Label12->Visible = true;
               }
               else {
                  //ShowMessage("Hay mensajes...");
                  Label1->Caption = IntToStr(num_mensajes);
                  for (int e=1;e<num_mensajes>Clear();
                        correu->RetrieveHeader(e,mensa);
                        TListItem *ite;
                        ite = lista->Items->Add();
                        ite->Caption = IntToStr(e);
                        ite->SubItems->Add(mensa->From->Address);
                        ite->SubItems->Add(mensa->Subject);
                        ite->SubItems->Add(mensa->Date.DateString()+" - "+mensa->Date.TimeString());
                        ite->SubItems->Add(IntToStr((correu->RetrieveMsgSize(e)/1024)+1)+" kbs");
                        ite->ImageIndex = 1;
                        ite->SubItemImages[0] = 0;
                        Application->ProcessMessages(); //Esta línea es clave
                        SendMessage(lista->Handle,WM_VSCROLL,SB_LINEDOWN,0);
                  }

               }
               correu->Disconnect();
            }

         }
      }
      else{
         //ShowMessage("has entrado en el else...");
         for (int i = 0; i <lis>Count; i++) {
            host = opti->ReadString(TreeView1->Items->Item[i]->Text,"host","");
            userid = opti->ReadString(TreeView1->Items->Item[i]->Text,"userid","");
            pasword = opti->ReadString(TreeView1->Items->Item[i]->Text,"pasword","");
            puerto = opti->ReadInteger(TreeView1->Items->Item[i]->Text,"puerto",0);
            if (correu->Connected()) {
               correu->Disconnect();
            }
            if (!correu->Connected()) {
               correu->Host = host;
               correu->Username = userid;
               correu->Password = pasword;
               correu->Port = puerto;
               if (opti->ReadBool(TreeView1->Items->Item[i]->Text,"conexionsegura",false)){
                  correu->IOHandler = IdSSLIOHandlerSocketOpenSSL1;
               }
               else {
                  correu->IOHandler = NULL;
               }
               correu->Connect();
               Application->ProcessMessages();
               int num_mensajes = correu->CheckMessages();
               if (num_mensajes==0){
                  Label12->Font->Color = clBlack;
                  Label12->Caption = "No hay mensajes en "+TreeView1->Items->Item[i]->Text+".";
                  Label12->Visible = true;
               }
               else {
                  //ShowMessage("Hay mensajes...");
                  Label1->Caption = IntToStr(num_mensajes);
                  for (int e=1;e<num_mensajes>Clear();
                        correu->RetrieveHeader(e,mensa);
                        TListItem *ite;
                        ite = lista->Items->Add();
                        ite->Caption = IntToStr(e);
                        ite->SubItems->Add(mensa->From->Address);
                        ite->SubItems->Add(mensa->Subject);
                        ite->SubItems->Add(mensa->Date.DateString()+" - "+mensa->Date.TimeString());
                        ite->SubItems->Add(IntToStr((correu->RetrieveMsgSize(e)/1024)+1)+" kbs");
                        ite->ImageIndex = 1;
                        ite->SubItemImages[0] = 0;
                        Application->ProcessMessages(); //Esta línea es clave
                        SendMessage(lista->Handle,WM_VSCROLL,SB_LINEDOWN,0);
                  }

               }
               correu->Disconnect();
            }

         }
      }
     }
}

Y en el constructor del Form1:
Código:

__fastcall TForm1::TForm1(TComponent* Owner)
   : TForm(Owner)
{
   opti = new TIniFile(   ExtractFilePath(Application->ExeName)+"pop3.ini"  );
   lis = new TStringList();
    opti->ReadSections(lis);
   //ShowMessage(lis->Text);
   //ShowMessage(lis->Count);
   for (int i = 0; i <lis>Count; i++) {
      TTreeNode* raiz = TreeView1->Items->Add(0,lis->Strings[i]);
      TTreeNode* node = TreeView1->Items->AddChildObject(raiz, "Bandeja de entrada", (PINT)123);
      TTreeNode* node1= TreeView1->Items->AddChildObject(raiz,"Bandeja de salida",(PINT)123);
      TTreeNode* node2= TreeView1->Items->AddChildObject(raiz,"Elementos enviados",(PINT)10);
      TTreeNode* node3= TreeView1->Items->AddChildObject(raiz,"Borrador",(PINT)0);
   }
   TreeView1->FullExpand();
}

Las cuentas las cargo a un StringList a partir de un archivo .ini, repito que mientras sea una sola cuenta todo ok es a partir de la segunda que todo falla y no se porqué.
_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Ya lo he resuelto, pongo el código por si puede ayudar a alguien (en el mismo están indicados los fallos):
Código:

void __fastcall TForm1::mnuComprobarcorreoExecute(TObject *Sender)
{
   if (TreeView1->Items->Count == 0) {
     ShowMessage("No hay ninguna cuenta establecida\n"
              "pulsa sobre nueva cuenta para establecer una.");
   }
   else {
      String host = "";
      String userid = "";
      String pasword = "";
      int puerto = 0;//el if que estaba aquí sobra
      for (int i = 0; i <contes>Count; i++) {
         host = pop3->ReadString(contes->Strings[i],"host","");// y aquí sustituyendo lo que había por lo que hay
         userid = pop3->ReadString(contes->Strings[i],"userid","");
         pasword = pop3->ReadString(contes->Strings[i],"pasword","");
         puerto = pop3->ReadInteger(contes->Strings[i],"puerto",0);
         if (correu->Connected()) {
            correu->Disconnect();
         }
         if (!correu->Connected()) {
            correu->Host = host;
            correu->Username = userid;
            correu->Password = pasword;
            correu->Port = puerto;
            if (pop3->ReadBool(contes->Strings[i],"conexionsegura",false)){
               correu->IOHandler = IdSSLIOHandlerSocketOpenSSL1;
            }
            else {
               correu->IOHandler = NULL;
            }
               //ShowMessage(contes->Text);
               //ShowMessage(contes->Strings[i]);
               correu->Connect();
               Application->ProcessMessages();
               int num_mensajes = correu->CheckMessages();
               if (num_mensajes==0){
                  //Label12->Font->Color = clBlack;
                  //Label12->Caption = "No hay mensajes en "+ListView4->Items->Item[y]->Caption+".";
                  //Label12->Visible = true;
               }
               else {
                  //ShowMessage("Hay mensajes...");

                  for (int e=1;e<num_mensajes>Clear();
                        correu->RetrieveHeader(e,mensa);
                        TListItem *ite;
                        ite = lista->Items->Add();
                        ite->Caption = IntToStr(e);
                        ite->SubItems->Add(mensa->From->Address);
                        ite->SubItems->Add(mensa->Subject);
                        ite->SubItems->Add(mensa->Date.DateString()+" - "+mensa->Date.TimeString());
                        ite->SubItems->Add(IntToStr((correu->RetrieveMsgSize(e)/1024)+1)+" kbs");
                        ite->ImageIndex = 3;
                        ite->SubItemImages[1] = 2;
                        Application->ProcessMessages(); //Esta línea es clave
                        SendMessage(lista->Handle,WM_VSCROLL,SB_LINEDOWN,0);
                  }

               }
               correu->Disconnect();
         }

      }

   }
}

_________________
¡ADELANTE CON ESTE SUPER FORO!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.