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:
- FStream
- RecibiendoArchivo
- E_RutaLocal
- 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;
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".