Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo Hace 4 Semanas
jmbarrio jmbarrio is offline
Miembro
 
Registrado: may 2003
Posts: 65
Poder: 22
jmbarrio Va por buen camino
Error en Thread (hilo) Android

Buenas tardes, tengo un trozo de código que recorre los registros de una tabla de memoria y para cada uno de ello hace un insert en una base de datos. Al ejecutarlo en android lo ejecuta bien pero tarda alrededor de 10 segundos y me sala un mensaje en pantalla de que la aplicación no respònde y me pide esperar o aceptar.
Mirando en el foro, vi que lo mejor era hacer un hilo. El código del hilo lo creo en un bottonclick.

Código Delphi [-]
Thread := TThread.CreateAnonymousThread(
    procedure
      begin
         while not FDMemTable1.Eof do
    begin
      try
        with F_data.FDQryInsertCliente do
          begin
            Active := False;
            Sql.Clear;
            sqlstr:= 'Insert into clientes (CLI_COD, CLI_NOMCOM, CLI_DIRCOM, CLI_DIRPOB, CLI_ZONA) values(' + '''' + FDMemTable1.FieldByName('cli_cod').AsString + '''' +
                     ',' + '''' + StringReplace(FDMemTable1.FieldByName('cli_rsocial').AsString, '''', '', [rfReplaceAll, rfIgnoreCase]) + '''' + ',' +
                     '''' + StringReplace(FDMemTable1.FieldByName('cli_direc').AsString, '''', '', [rfReplaceAll, rfIgnoreCase]) + '''' +
                     ',' + '''' + StringReplace(FDMemTable1.FieldByName('cli_pobla').AsString, '''', '', [rfReplaceAll, rfIgnoreCase]) + '''' + ',' + '''' +
                     FDMemTable1.FieldByName('cli_zona').AsString + '''' + ')';
            Sql.add(sqlstr);
            ExecSQL;
          end;
        contador := contador + 1;
        FDMemTable1.Next;
        //label1.Text := contador.ToString + ' de ' + nClientes.ToString;
        //sleep(1);
        TThread.Synchronize(TThread.CurrentThread,
        procedure
        begin
        Progressbar1.Value := Progressbar1.Value +1
        end);
        //Application.ProcessMessages;


      except
        on e:exception do
          showmessage(e.Message + ' ' + sqlstr)
      end;
    end;

      end);

  Thread.FreeOnTerminate := True;
  Thread.Start;
  showmessage('Sincronizacion de Clientes Completada. ' + contador.ToString + 'Clientes Traspasados');

el programa no recorre los registros de la tabla de memoria, me sale el mensaje Sincronizacion de clientes completada. 0 clientes traspasados.
Y seguidamente se va llenando la barra de progreso.

Podéis echarme una mano a ver que estoy habiendo mal.?

Muchas gracias, un saludo.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Thread Firemonkey Android query amadis FireMonkey 2 23-09-2020 12:04:03
Se puede evitar cerrar un thread o hilo DarkSton Varios 6 14-07-2017 17:47:54
Error: terminate thread timeout ppalmamichi Varios 0 21-08-2012 20:03:47
Error en mi Thread Paulao Varios 3 16-02-2011 15:36:08
Thread bendito thread...se me pierde la ventana Seba.F1 API de Windows 5 02-02-2006 00:16:30


La franja horaria es GMT +2. Ahora son las 12:42:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi