Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-02-2011
Avatar de eflosten
eflosten eflosten is offline
Miembro
 
Registrado: abr 2010
Posts: 24
Poder: 0
eflosten Va por buen camino
TIdFTP list dentro de Thread

Buenos dias delphinianos, os traigo una duda que ni San Google ni el buscador de estos foros me ha conseguido resolver.

Tengo un TThread, que alberga un IdFTP, al que llamo desde el hilo principal para hacer un List de los archivos remotos. El problema surge en que, al hacer el List, me da un error de Access Violation, el cual haciendo el mismo proceso desde el main thread no me salta, pero no consigo averiguar por qué / como solucionarlo.

Ahi va el código:

La llamada:
Código Delphi [-]
HiloFTP:=THiloFTP.CreateLista(SlVersionesDescargables,lblProgDescarga);
  HiloFTP.execute;

El create del hilo:
Código Delphi [-]
constructor THiloFTP.CreateLista(lista: TStringList; labelProceso: Tlabel);
begin
 inherited Create(false);
 Self.FTP:=TIdFTP.Create(nil);
 Self.FTP.OnWork :=FTPWork;
 Self.FTP.Username := '*****'; // Esto está con los datos reales obviamente
 Self.FTP.Password := '*****';
 Self.FTP.Host := 'ftp.mihost.es';
 Self.lblProgreso:=labelProceso;
 Self.listaArchivos:= lista;
 Self.RutaRemota:=carpeta;
 Self.modo:='LISTA';
end;

El proceso que trabaja realmente. Se le llama desde el Execute según el modo
(intento aprovechar el mismo hilo para hacer descargas en otro punto del programa, para eso el modo y el create sobreescrito)
Código Delphi [-]
procedure THiloFTP.ListarArchivos;
begin
 try
 listaArchivos.Clear;
 if lblProgreso <> nil then lblProgreso.caption:='Conectando...';
 FTP.Connect;
 if lblProgreso <> nil then lblProgreso.caption:='Conectado.';
  if lblProgreso <> nil then lblProgreso.caption:='Buscando archivos';
 FTP.List(ListaArchivos,'',false); // <-- Aqui es donde da el Access Violation
   if lblProgreso <> nil then lblProgreso.caption:='Desconectando...';
 FTP.Disconnect;
 if lblProgreso <> nil then lblProgreso.caption:='Desconectado.';
  finally
  if FTP.connected then FTP.Disconnect;
  end;
end;


Cabe destacar que es mi segundo TThread, aún estoy aprendiendo a manejarlos y es probable que tenga algo mal planteado y no me de cuenta.

Un saludo, y gracias de "hantevraso" por vuestra ayuda
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Llamada a Procedimiento Almacenado desde dentro de un Thread MontarazAE MS SQL Server 2 29-05-2007 17:46:34
Mover posiciones dentro de un list Box creus Varios 13 04-11-2006 18:03:44
Thread bendito thread...se me pierde la ventana Seba.F1 API de Windows 5 02-02-2006 00:16:30
Conocer la posición de un Thread dentro del Listado de ActiveThreads del IdTCPServer R_Richards Internet 2 05-02-2005 23:07:38
TidFTP MaGNa Internet 0 10-01-2005 14:00:10


La franja horaria es GMT +2. Ahora son las 20:24:39.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi