Hola fide_uci,
Creo que uno de los problemas puede estar aquí:
Código Delphi
[-]
procedure TForm1.TCPServerExecute(AContext: TIdContext);
var
dato: String;
vIP: String;
List: TList;
vCount: Integer;
begin
dato := AContext.Connection.Socket.ReadLn();
Memo1.Lines.Add(#13 + DupeString('=', 30));
Memo1.Lines.Add('Hora_Login: ' + PClient(AContext.Data).Hora_Login );
Memo1.Lines.Add('Enviado: ' + dato);
Ten en cuenta que el evento onExecute se dispara cada vez que un hilo tiene actividad, y es un sistema multi-hilos, es decir, más de un hilo puede estar disparándolo al mismo tiempo.
Dentro de este tipo de métodos, no puedes hacer referencias a componentes VCL directamente, sino, que tienes que hacerlo a través de métodos compartidos y llamarlos con "Synchronize", para que cuando se acceda a la VCL, se haga de modo "ordenado".
Precisamente, cuando hay conflicto de acceso a VCL en este tipo de métodos la aplicación se congela.
Espero que te ayude.
Un saludo.