Ver Mensaje Individual
  #1  
Antiguo 20-05-2011
Avatar de cesarsoftware
cesarsoftware cesarsoftware is offline
Miembro
 
Registrado: nov 2006
Posts: 241
Reputación: 18
cesarsoftware Va por buen camino
indy 10 y sincronizacion

Hola compis. Tengo un componente idftpserver y un lisbox donde pretendo mostrar su estado (conectado, login, etc). Se que no debo meter nada en el lisbox dentro de los metodos del idftpserver porque puedo provocar un "access violation" o algo peor. Necesito sincronizar como se hace en los thread normales pero no veo la forma (ya he buscado en los foros, en la red, en el manual, etc)
He encontrado este codigo pero es de indy 9 y no se como pasarlo a indy 10, vamos que no encuentro el metodo syncronize en el tIdContext o como indicar su thread.
Espero que puedan ayudarme. Gracias

Código Delphi [-]
uses IdThread;
type
 TSrvSynchListBox = class
 private
 FText: string;
 procedure VCLUpdate;
 public
 procedure Sync(AThread: TIdThread; AMethod: TThreadMethod; s: string);
 end;
procedure TSrvSynchListBox.Sync(AThread: TIdThread; AMethod: TThreadMethod; s: string);
begin
 FText := s;
 AThread.Synchronize(AMethod);
end;
procedure TSrvSynchListBox.VCLUpdate;
begin
 TFormFTPServer.LBftpServer.ItemIndex := TFormFTPServer.LBftpServer.Items.Add(FText);
end;
// y su uso
procedure TFormFTPserver.IdFTPServerConnect(AContext: TIdContext);
var
 s: string;
begin
 s := 'Conectado con ' + AContext.Binding.PeerIP + ':' +
 IntToStr(Acontext.Binding.PeerPort);
// LBftpServer.ItemIndex := LBftpServer.Items.Add(s); // esto no lo debo hacer
 with TSrvSynchListBox.Create do
 try
 Sync(AContext, VCLUpdate, s); // aqui debo conseguir el thread del TIdContext
 finally
 Free;
 end;
end;

Última edición por Neftali [Germán.Estévez] fecha: 20-05-2011 a las 12:57:46. Razón: Añadir TAG's al código
Responder Con Cita