Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-07-2014
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 227
Poder: 14
darkamerico Va por buen camino
Smile Aplicacion de Busqueda Recursiva de Archivos en Disco

Saludos comunidad de amigos, la situación que me embarga ahora es la siguiente: Tengo Varios Discos USB de 1 Tb donde tengo todos mis instaladores y video tutoriales entre otras cosas, y deseo hacer un software autoplay que me permita ingresar un nombre (puede ser el de un archivo directamente o el de una carpeta) y me permita listar las coincidencias en un componente que permita ejecutar el archivo ( o llamar al programa asociado) al darle doble click.

Muchas gracias por su atención.

Atte

Americo Torres
Responder Con Cita
  #2  
Antiguo 20-07-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola, mira esto
Responder Con Cita
  #3  
Antiguo 20-07-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Yo que tu le echaba un ojo a este componente: TFindFile

Saludos.
Responder Con Cita
  #4  
Antiguo 21-07-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Creo que en este truco tienes el código que necesitas.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 22-07-2014
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 227
Poder: 14
darkamerico Va por buen camino
Question Saludos

Gracias a todos aquellos amigos que respondieron, he probado cada código, ciertamente resuelven parte del problema, sin embargo, el problema en ellos es que buscan "mascaras", de la forma: *.pas, Arch.*, etc. por eso si existe un archivo llamado por ejemplo: INS_PHOTOSHOP_CC_14.EXE, no podre ubicarlo ingresando la palabra PHOTOSHOP, porque el archivo no comienza con dicha palabra.

El código que presento a continuación es la versión de Neftalí, pero presenta esta limitación:

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, FindFile, StdCtrls;

type
  TForm1 = class(TForm)
    Buscar: TButton;
    lstArchivos: TListBox;
    Label1: TLabel;
    txtBuscar: TEdit;
    procedure BuscarClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure FindFiles(StartDir, FileMask: string; recursively: boolean; var FilesList: TStringList);
  const
    MASK_ALL_FILES = '*.*';
    CHAR_POINT = '.';
  var
    SR: TSearchRec;
    DirList: TStringList;
    IsFound: Boolean;
    i: integer;
  begin
    if (StartDir[length(StartDir)] <> '\') then begin
      StartDir := StartDir + '\';
    end;

    // Crear la lista de ficheos en el directorio StartDir (no directorios!)
    IsFound := FindFirst(StartDir + FileMask, faAnyFile - faDirectory, SR) = 0;
    // MIentras encuentre
    while IsFound do  begin
      FilesList.Add(StartDir + SR.Name);
      IsFound := FindNext(SR) = 0;
    end;

    FindClose(SR);

    // Recursivo?
    if (recursively) then begin
      // Build a list of subdirectories
      DirList := TStringList.Create;
      // proteccion
      try
        IsFound := FindFirst(StartDir + MASK_ALL_FILES, faAnyFile, SR) = 0;
        while IsFound do
        begin
          if ((SR.Attr and faDirectory) <> 0) and
            (SR.Name[1] <> CHAR_POINT) then
            DirList.Add(StartDir + SR.Name);
          IsFound := FindNext(SR) = 0;
        end;
        FindClose(SR);

        // Scan the list of subdirectories
        for i := 0 to DirList.Count - 1 do
          FindFiles(DirList[i], FileMask, recursively, FilesList);
      finally
        DirList.Free;
      end;
    end;
  end;

procedure TForm1.BuscarClick(Sender: TObject);
var
  res:TStringList;
  i:integer;
begin
  res:=TStringList.Create;
  FindFiles('.',txtBuscar.Text+'*.*',true,res);
  for i := 0 to res.Count - 1 do
      lstArchivos.Items.Add(res[i]);
end;

end.

Saludos
Responder Con Cita
  #6  
Antiguo 22-07-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Lo que buscas es similar a los launchers como http://www.launchy.net/ (que a proposito, hace lo que quieres ya).

Lo que se hace es crear una base de datos donde se almacenan metadatos de los archivos y sobre la que se hace las busquedas. Una forma trivial de hacerlo es usando sqlite + Full text search. Busca en google como se usa el FTS de sqlite.
__________________
El malabarista.
Responder Con Cita
Respuesta



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
Busqueda recursiva en un ListView elrayo76 Varios 1 19-06-2014 17:02:28
busqueda binaria recursiva alba13 OOP 3 20-04-2009 01:36:14
Busqueda recursiva en disco desde java gulder JAVA 0 10-11-2006 19:02:37
hacer una busqueda en el disco gulder API de Windows 1 04-05-2005 23:30:07
Busqueda recursiva Descendents Varios 2 06-02-2004 17:40:19


La franja horaria es GMT +2. Ahora son las 19:32:51.


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