Ver Mensaje Individual
  #5  
Antiguo 01-09-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Reputación: 19
Chris Va por buen camino
Hola!

Ahora entiendo tu problema y lo que quieres. Mira, la forma en como implementar aplicaciones multihilo depende de cada caso. Intenté escribirte un pseudo código para guiarte pero me ha detinido no comprender muy bien el uso que le das a ciertas variables. Por ejemplo:
  1. FStream
  2. RecibiendoArchivo
  3. E_RutaLocal
  4. NombreArchivoRecibido


El pseudo código que te tengo es este:
Código Delphi [-]
type
    TThreadedSocketRead = class(TThread)
    private
        FSocket: TCustomWinSocket;
        FReceiveStream: TStream;
        FProgressForm: TForm;
        procedure Execute; override;
    published
        constructor ReadSocket(Socket: TCustomWinSocket;
                               ReceiveStream: TStream;
                               ProgressForm: TForm;
                               const StartSuspended: Boolean = False);
    end;
    
    // ...
    
implementation

constructor TThreadedSocketRead.ReadSocket(Socket: TCustomWinSocket;
                                           ReceiveStream: TStream;
                                           ProgressForm: TForm; 
                                           const StartSuspended: Boolean);
begin
    inherited Create(StartSuspended);
    Self.FSocket := Socket;
    Self.FReceiveStream := ReceiveStream;
    Self.FProgressForm := ProgressForm;
end;

procedure TThreadedSocketRead.Execute;
var
    Buffer: arrat[0.. 9999] of Char;
    IncommingLength, Receivelength, FileSize, KBPart: Int64;
begin
    inherited;
    
    // descargar y procesar los datos del socket
    
end;

Por otro lado, en este código, estás utilizando la variable global "Form4" que no es recomendable bajo ninguna circunstancia. Utiliza "Self" en lugar de "Form4".
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita