Solo una pequeñas correcciones, hay que destruir el objeto TStringList al final sino tendremos un memory leak bastante grave, ya que cada vez que se ejecute la funcion se creara un nuevo stringlist que no se destruira al salir de ella.
Código:
procedure TCliente_Ogame.ClientSocket2Read(Sender: TObject; Socket: TCustomWinSocket);
var
Lineas: TStringList;
begin
Lineas := TStringList.Create;
try
Lineas.Text := Socket.ReceiveText;
Edit1.Text := Lineas.Strings[13];
finally
Lineas.Free;
end;
end;
Si se va a ejecutar muchas veces esta funcion tambien puede ser preferible tener creada con anterioridad el objeto Lineas y no destruirlo nunca, de ese modo nos ahorramos la frecuente creacion y destruccion del objeto.
Tambien seria necesario asegurarse de que existe por lo menos 13 lineas en el texto recibido, si no en el caso de recibir menos datos dara un error al intentar acceder a una linea no existente.
Saludos