 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Lun 18 Nov, 2013 4:03 pm Asunto: Varias cuentas idpop3 |
|
|
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 |
|
 |
Tugui Master


Registrado: 09 Nov 2002Mensajes: 663
|
Publicado: Jue 21 Nov, 2013 8:54 pm Asunto: |
|
|
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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|