Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ficheros de video (https://www.clubdelphi.com/foros/showthread.php?t=52241)

lgarcia 15-01-2008 14:04:19

Ficheros de video
 
Hola:

Estoy haciendo un programita para realizar auditorias en las PC sobre archivos de video para mostrarlos en un Memo, existe alguna forma de poder incluir todos los tipos de extensiones de video en una sola consulta, el codigo es el siguiente:

Código:

unit Entrada;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, FileCtrl;
type
  TForm1 = class(TForm)
    btnBuscar: TButton;
    DriveComboBox1: TDriveComboBox;
    Memo1: TMemo;
    cbExtension: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    procedure btnBuscarClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
var
  lista: TStrings;
procedure BuscarArchivos(const directorio, mascara: string;
  atributos: Integer; var listado: TStrings);
  // Procedimiento anidado
  procedure Buscar(const subdirectorio: string);
  var
    regBusqueda: TSearchRec;
  begin
    // Buscar en el directorio
    if FindFirst(subdirectorio + mascara,atributos,regBusqueda) = 0 then
    begin
      try
        repeat
          Application.ProcessMessages;
          if (regBusqueda.Attr and faDirectory = 0)
            or (regBusqueda.Name <> '.')
              and (regBusqueda.Name <> '..') then
                listado.Add(subdirectorio + regBusqueda.Name);
        until FindNext(regBusqueda) <> 0;
      except
        FindClose(regBusqueda);
      end;
      FindClose(regBusqueda);
    end;
    // Buscar en los subdirectorios
    if FindFirst(subdirectorio + '*', atributos
      or faDirectory, regBusqueda) = 0 then
    begin
      try
        repeat
          Application.ProcessMessages;
          if ((regBusqueda.Attr and faDirectory) <> 0)
            and (regBusqueda.Name <> '.')
              and (regBusqueda.Name <> '..') then
                Buscar(subdirectorio + regBusqueda.Name + '\');
        until FindNext(regBusqueda) <> 0;
      except
        FindClose(regBusqueda);
      end;
      FindClose(regBusqueda);
    end;
  end;
begin
  Buscar(IncludeTrailingPathDelimiter(directorio));
end;
procedure TForm1.btnBuscarClick(Sender: TObject);
var
  unidad:string[3];
begin
  Memo1.Clear;
  unidad:= copy(DriveComboBox1.Text, 1, 2) + '\';
  lista:= TStringList.Create;
  BuscarArchivos(unidad, cbExtension.Text, faAnyFile, lista);
  if lista.Text = '' then ShowMessage('No existe ningun fichero de ese tipo')
  else Memo1.Text:= lista.Text;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
  Memo1.Text:= '';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  lista.Free;
  Close;
end;
end.

Pero de la forma que lo estoy haciendo, tengo que ir seleccionado en el cbExtension los diferentes tipos de extensiones de video.

Espero haberme hecho explicar.

Muchas gracias

Saludos

Luis Garcia

cHackAll 16-01-2008 22:41:27

yo haría algo como:

Código Delphi [-]
WinExec('cmd /cdir /s/b/a:a *.avi *.mp* *.rm *.dat>filelist.txt', SW_HIDE);
Memo1.Lines.LoadFromFile('filelist.txt');
DeleteFile('filelist.txt');

Saludos

Lepe 17-01-2008 12:50:34

En lugar de un combo normal, usa un checkListBox, allí indicas todas las extensiones posibles, si están marcadas, la añades a la búsqueda.

FindFirst creo solo puede buscar por un patrón a la misma vez, es decir por una sola extensión. La solución pasa por buscar el patrón *.* y por cada archivo encontrado, ver si la extensión pertenece a la lista de extensiones marcadas en el CheckListBox.

Saludos


La franja horaria es GMT +2. Ahora son las 01:57:07.

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