PDA

Ver la Versión Completa : No funciona Application.ProcessMessages


Sr_Sombrero
24-01-2005, 22:21:01
Hola a todos !

Recibo un buffer a través de un TServerSocket y lo escribo en un archivo, la tarea es realizada correctamente pero el programa no responde mientras está recibiendo.

Usando Application.ProcessMessages en un loop en el evento OnRead del clientsocket se me llena la pantalla de múltiples cuadros de mensajes con caracteres extraños (supongo que los caracteres son el buffer que está recibiendo el socket).

Ya probé poniendo Application.ProcessMessages en distintas partes del loop ¿hay alguna forma de hacer que Application.ProcessMessages cumpla su función en vez de tirar esos carteles?

Bueno... les dejo el código, ojalá me puedan ayudar porque estoy trabado con esto hace semanas y no termino de hacerlo andar. Saludos !!!

procedure TFrmMain.ServerSocketTransferClientRead(Sender: TObject;
Socket: TCustomWinSocket);

var
Data: string;
Buffer: pchar;
BinaryFile: file of char;
BinaryFileSize, BytesRead: integer;
Filename: string;

begin

Filename:= 'c:\lala01.mp3';
Idle(0);
Data := Socket.ReceiveText;
if Data <> '' then
begin
BinaryFileSize := StrToInt(Data);
Idle(0);
AssignFile(BinaryFile, FileName);
ReWrite(BinaryFile);
while FileSize(BinaryFile) < BinaryFileSize do
begin
Application.ProcessMessages;
Sleep(1);
BytesRead := Socket.ReceiveLength;
if BytesRead > 0 then
begin
GetMem(Buffer, BytesRead);
try
Socket.ReceiveBuf(Buffer^, BytesRead);
BlockWrite(BinaryFile, Buffer^, BytesRead);
finally
FreeMem(Buffer);
end;
end;
end;
CloseFile(BinaryFile);
end;
end;


Así se ven los cuadros de mensaje que salen.
http://webs.uolsinectis.com.ar/eduardogc/capt1.jpg