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 19-04-2011
pato89xd pato89xd is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 13
Poder: 0
pato89xd Va por buen camino
mascaras multiples con findfirst

hola, estoy tratando de seleccionar solo un tipo de archivos con findfirst pero no me funciona, este es el codigo, que hago mal?

Código:
procedure TForm3.FoldersData(Genero,Ruta:String);
var
  R,ima : TSearchRec;
  Busq,imagen, Dirs: Integer;
  rimagen,mask : string;
  noencontre : Boolean;
begin
 WriteLn( F, Genero );
Dirs := 0;
noencontre := True;
Busq := FindFirst(Ruta + '*.*', FaAnyfile, R);
rimagen := '';

  while Busq = 0 do
  begin
    if (R.Attr and faDirectory = faDirectory ) then
    begin
      if (R.Name <> '.') and (R.Name <> '..') then
      begin

      imagen := FindFirst(Ruta+R.Name+'\'+'*.*', FaAnyfile,ima);

  while (imagen = 0)and noencontre=True do
  begin
    if ( ima.Attr and faArchive = faArchive ) and
       ( ima.Attr and faDirectory <> faDirectory )    then
       begin

        noencontre := False;
       rimagen := Ruta+R.Name+'\'+ima.Name;

       end;
       imagen := FindNext(ima);
       end;
           FindClose(ima);
           noencontre := True;


        Inc(Dirs);
        WriteLn( F,chr(9)+R.Name+'|'+Ruta+R.Name+'\|'+rimagen);
       MusicaData(Genero,Ruta+R.Name+'\');
       rimagen := '';
      end;
    end ;
 Busq := FindNext(R);
end;
Responder Con Cita
  #2  
Antiguo 19-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola pato89xd.
Cita:
hola, estoy tratando de seleccionar solo un tipo de archivos
Supongo que te referís a archivos con una determinada extensión, si es así, tenés que especificarla.
Suponiendo que busques archivos .WAV seria:
Código Delphi [-]
Busq := FindFirst(Ruta + '*.WAV', FaAnyfile, R);

Pero sería más flexible pasar la extensión como un argumento de la función:
Código Delphi [-]
Busq := FindFirst(Ruta + Ext, FaAnyfile, R);

No probé el código e ignoro si la intención del argumento Genero era ese, en ese caso sería Ruta + Genero.
Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 19-04-2011
pato89xd pato89xd is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 13
Poder: 0
pato89xd Va por buen camino
gracias, pero mas bien quiero por ejemplo filtrar archivos de imagenes con cualquier extencion de imagenes, trate de ponerle al path algo asi
Path +'*.JPEG; *.JPG; *.BMP; *.GIF'
pero no me funciona, que puedo hacer? :s
Responder Con Cita
  #4  
Antiguo 19-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
quiero por ejemplo filtrar archivos de imagenes con cualquier extencion de imagenes
Eso es muy distindo de tu primera pregunta...
Cita:
estoy tratando de seleccionar solo un tipo de archivos
Si querés enviarle una máscara, sería algo como:
Código Delphi [-]
procedure BuscarArchivos(Ruta, Mask: string);
var
  SR: TSearchRec;
  i: Integer;
  ts: TStrings;
begin
  ts:= TStringList.Create;
  try
    ts.Clear;
    ts.Delimiter:= ';';
    ts.DelimitedText:= Mask;
    for i:= 0 to ts.Count -1 do
    begin
      if FindFirst(Ruta + ts[i], faArchive, SR) = 0 then
      repeat
        Form1.Memo1.Lines.Add(SR.Name); 
      until FindNext(SR) <> 0;
      FindClose(SR);
    end;
  finally
    ts.Free;
  end;
end;
Para llamarlo así:
Código Delphi [-]
begin
  BuscarArchivos('C:\TEMP\', '*.zip;*.rar;*.pas;*.exe');
end;
Aviso: Es sólo un ejemplo de como implementar la busqueda con una máscara de multiples extensiones. Está probado y funciona; pero de
ninguna manera intenta reemplazar a tu código que como ya te dije, no he probado.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 19-04-2011 a las 04:18:39.
Responder Con Cita
  #5  
Antiguo 19-04-2011
pato89xd pato89xd is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 13
Poder: 0
pato89xd Va por buen camino
muchas gracias =D

muchisimas gracias, funciono a la perfeccion, ahora, abusando de tu amabilidad, como le haria para quitarle la extension a un archivo?, es decir si tengo un 'imagen.jpeg' quisiera obtener solo 'imagen'
Responder Con Cita
  #6  
Antiguo 19-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Con la función ChangeFileExt.

Ejemplo:
Código Delphi [-]
var
  Nombre: string;
begin
   Nombre:= ChangeFileExt('AUTOEXEC.BAT','');
end;

Pero por favor la próxima vez para una nueva pregunta abrí un nuevo hilo, gracias.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 19-04-2011 a las 05:08:49.
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
como generar ventas multiples (seleccionar multiples items) userdelphi Varios 4 30-12-2010 02:52:21
FindFirst waltrapa API de Windows 4 07-02-2007 14:09:45
Findfirst funciona cuando quiere rfernandez API de Windows 3 17-03-2005 11:35:43
Buscar archivos con FindFirst eulogi_SCG Varios 2 28-09-2004 15:27:38
FindFirst, FindNext, FindClose DJ VMan Varios 4 17-11-2003 01:36:53


La franja horaria es GMT +2. Ahora son las 10:45:57.


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