Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-04-2014
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
donde es mejor utilizar hilo

hola amigos:
En una aplicación se me esta demorando un poco el proceso de escaneo (extraer TXT) e inserción de ficheros, tengo un procedimiento que escanea una carpeta y va extrayendo todo el contenido txt y luego inserto los ficheros en una base de datos. necesito me recomienden como puedo implementra hilos de ejecucion en ese caso y en que lugar seria la mejor forma de hacerlo.

Código Delphi [-]
  //este es el procedimiento que recorre un árbol de directorios y me entrega los ficheros y muestra con progress 
procedure TForm2.RastreaDir(dir: string);
var
  FileSearch: TSearchRec;
  R: integer;
  s: string;
begin
  ChDir(dir);
  if FindFirst('*.*', FaDirectory, FileSearch) = 0 then
    repeat
      if ((FileSearch.Attr and FaDirectory) = FaDirectory) then
      begin
        application.ProcessMessages;
        if (FileSearch.Name <> '.') and (FileSearch.Name <> '..') then
          RastreaDir(dir + '\' + FileSearch.Name);
      end
      else
      begin
        application.ProcessMessages;
        if cancelando then Exit;
        PCarpeta.Progress := PCarpeta.Progress + 1;PCarpeta.Refresh;
        LFichero.Caption := FileSearch.Name; LFichero.Refresh;
        s := CaminoCompleto(dir + '\' + FileSearch.Name);
        if DataModule1.ExisteFichero(FileSearch.Name, s) then
        begin
          if smessagedlg('Organizador Electrónico',
            'El fichero ' + FileSearch.Name +
            ' existe en la base de datos desea sobreescribirlo ? ',
            mtInformation, [mbYes, mbno], 1) = mrYes then
            AgregaFichero(dir + '\' + FileSearch.Name);
        end
        else
           AgregaFichero(dir + '\' + FileSearch.Name);
      end;
      if cancelando then Exit;
    until FindNext(FileSearch) <> 0;
  FindClose(FileSearch);
end;

// y este es el de agregar los ficheros
procedure TForm2.AgregaFichero(n: string);
var
  File1: TFileStream;
  q: Tsqlquery;
  pag, s: string;
  idcarpeta, idfichero, idpadre: integer;
  PosS: integer;
  ins: boolean;
begin
  if not cancelando then
  begin
    Memo1.Lines.Clear;
    lEjecuta.Caption := 'Extrallendo texto...'; lEjecuta.Refresh;

    LFichero.Caption := 'Fichero: ' + ExtractFileName(n); LFichero.Refresh;

    LCarpeta.Caption := rightstr(ExtractFilePath(n), Length(ExtractFilePath(n)) - Length(CarpetaRaiz)); LCarpeta.Refresh;
    application.ProcessMessages;

    idcarpeta := InsertaCarpetas(n); //este procedimiento inserta en sqlite todas las carpetas en la estructura en que aparecen en  la base de datos

    if idcarpeta <> -1 then
    begin
      try
        ExtraeTexto(n, pag);
      except
        Memo1.Lines.Clear;
        pag:='1';
      end;

      InsertaFichero(n, idfichero);// este inserta el fichero en sqlite
      InsertaNombre(n, pag, idfichero, idcarpeta, '');//este inserta el nombre del fichero con el respectivo id_fichero e id_carpeta
    end;
  end;
  LiberarMemoria;// limpia memoria si se quedo algo en el proceso de sacar el texto de pdf etc.
end;

quisiera saber que sugerencia me dan y en que lugar se debiera implementar.

gracias juan
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
Mejor Forma de Utilizar TZQuery JerS Conexión con bases de datos 7 27-02-2010 04:34:47
¿ Que es mejor utilizar sentencias o controles? emeritos Conexión con bases de datos 2 28-11-2006 00:57:28
La mejor forma de utilizar las horas en SQLServer Alexander Conexión con bases de datos 2 08-11-2006 15:07:17
En donde es mejor? Johnny Q OOP 7 12-07-2005 20:47:14


La franja horaria es GMT +2. Ahora son las 01:37:08.


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