2010-06-12 79 views
12

Estoy trabajando con Delphi, quiero una lista de todos los archivos de un directorio cuando ejecuto openpicturedialog.Delphi - cómo obtener una lista de todos los archivos del directorio

es decir, cuando se ejecuta de diálogo abierto y selecciono un archivo de él, quiero que la lista de todos los archivos del directorio del archivo seleccionado.

Incluso me puede sugerir para obtener el nombre del directorio de los FileName propiedad de TOpenDialog
gracias.

Respuesta

20

@Himadri, el objetivo principal de OpenPictureDialog no es seleccionar un directorio, de todos modos si está utilizando este cuadro de diálogo con otro propósito, puede probar este código.

Var 
    Path : String; 
    SR  : TSearchRec; 
    DirList : TStrings; 
begin 
    if OpenPictureDialog1.Execute then 
    begin 
    Path:=ExtractFileDir(OpenPictureDialog1.FileName); //Get the path of the selected file 
    DirList:=TStringList.Create; 
    try 
      if FindFirst(Path + '*.*', faArchive, SR) = 0 then 
      begin 
      repeat 
       DirList.Add(SR.Name); //Fill the list 
      until FindNext(SR) <> 0; 
      FindClose(SR); 
      end; 

    //do your stuff 

    finally 
    DirList.Free; 
    end; 
    end; 

end; 
+0

OK. Gracias, lo tengo. Tu respuesta me ayuda. – Himadri

+5

Creo que su código necesita una prueba para finalmente proteger FindFirst/FindClose (SR). –

+2

encontrado un fallo es necesario sustituir si FindFirst ('*. *', FaArchive, SR) = 0 entonces con si FindFirst (camino de + '*. *', FaArchive, SR) = 0 entonces porque doesn mira la ruta – AirWolf

2

Cambiar el filtro de propiedad en su OpenPictureDialog para incluir todos los archivos:

All (*.*) 

Editar: No creo que se puede seleccionar un directorio en una abierta (imagen) de diálogo, sin duda ISN No es el objetivo de un OpenPictureDialog de todos modos. Tal vez this es lo que buscas.

Luego use FindFirst y FindNext para obtener los archivos en este directorio.

+0

oh no ... Te equivocas .... Mira la pregunta editada. – Himadri

+0

No estoy seleccionando un directorio sino un archivo ... y quiero otra lista de archivos del directorio padre del archivo seleccionado ... lea la pregunta cuidadosamente ... – Himadri

+0

En ese caso, CaldonCZE tiene la respuesta. –

1

puede utilizar la función ExtractFilePath para obtener el nombre del directorio:

myPath := extractFilePath(FileName); 

donde fichero es el nombre del archivo que ha elegido por OpenDialog.

34

si utiliza delphi 2010, puede utilizar tdirectory.getfiles primera añada a ioutils.pas cláusula uses luego escribir la siguiente línea de código en el controlador de eventos (además del código que ya tiene en ese evento controlador)

uses IOUtils; 

var 
    path : string; 
begin 
    for Path in TDirectory.GetFiles(OpenPictureDialog1.filename) do 
     Listbox1.Items.Add(Path);{assuming OpenPictureDialog1 is the name you gave to your OpenPictureDialog control} 
end; 
+0

Buena opción pero no estoy usando delphi 2010 ... :-( – Himadri

+7

+1 para representar con la nueva sintaxis "para". :-) –

+2

No olvides incluir: usa IOUtils; – WishKnew

Cuestiones relacionadas