Mensaje
Estimado Darío,
Con fecha miércoles, 21 de diciembre de 2005, 23:15:44, escribió:
Hola:
No sabía que eras tu quien escribía con el nombre de LOR SFX,
TD> Si VC++ Win98
Bien, ya que programas para Windows, la solución pasa por usar el API.
Existen varias funciones para listar archivos y carpetas, una de ellas
la mencioné en un mensaje anterior, como una forma de incializar un
list box.
Existen otras funciones del API para listar archivos. Acudo de nuevo a
un mensaje anterior de esta lista de correo. (Corto y pego
----
Para esta tarea se usan tres funciones conjuntamente:
HANDLE FindFirstFile(
LPCTSTR lpFileName, // pointer to name of file to search for
LPWIN32_FIND_DATA lpFindFileData // pointer to returned information
);
El primer parámetro es el nombre del fichero a buscar. Puede contener
comodines y el camino completo:
"c:\\Dev-Cpp\\include\\*.h"
"c:\\autoexec.bat"
etc.
El segundo parámetro es un puntero a una estructura WIN32_FIND_DATA,
que es de salida y se usa para ver las características del fichero
encontrado,
El valor de retorno es un manipulador que se usa como entrada en las
siguientes funciones.
BOOL FindNextFile(
HANDLE hFindFile, // handle to search
LPWIN32_FIND_DATA lpFindFileData // pointer to structure for data on found file
);
El primer parámetro es el manipulador devuelto por la función
anterior.
El segundo es igual al segundo parámetro de la función anterior.
BOOL FindClose(
HANDLE hFindFile // file search handle
);
Cierra la operación de búsqueda, el parámetro es el devuelto por la
primera función.
La estructura WIN32_FIND_DATA tiene los siguientes campos:
typedef struct _WIN32_FIND_DATA { // wfd
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[ MAX_PATH ];
TCHAR cAlternateFileName[ 14 ];
} WIN32_FIND_DATA;
Un ejemplo sencillo de cómo usar estas funciones puede ser:
----8<------
#include <windows.h>
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
HANDLE busqueda;
WIN32_FIND_DATA wfd;
busqueda = FindFirstFile("C:\\*.*", &wfd);
if(busqueda != INVALID_HANDLE_VALUE) {
do {
cout << wfd.cFileName;
if (wfd.dwFileAttributes &= FILE_ATTRIBUTE_DIRECTORY)
cout << " [directorio]" << endl;
else
cout << " [" << (wfd.nFileSizeHigh * MAXDWORD) + wfd.nFileSizeLow << "]" << endl;
} while(FindNextFile(busqueda, &wfd));
}
FindClose(busqueda);
system("PAUSE");
return EXIT_SUCCESS;
}
----8<------
Si quieres hacer búsquedas recursivas, no tendrás más remedio que
complicar el programa. Cada vez que localices un directorio hay que
buscar en su interior.
----
Hasta pronto.
--
Saludos,
Salvador mailto:salvador@conclase.net
Con Clase: http://www.conclase.net
====================================================================<<<
Whatever you Wanadoo, click below:
http://ads.smartgroups.com/adclick/CID=000000b7c79a99a500000000
====================================================================>>>
If you want to share pictures, use the calendar, or start a questionnaire
visit http://www.es.smartgroups.com/groups/c-con-clase
To leave the group, email: c-con-clase-unsubscribe@smartgroups.com
Report abuse http://www.smartgroups.com/text/abusereport.cfm?gid%3D269314&mid%3D29452