| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
alfa_gt_teleco
Registrado: 28 Mar 2013 Mensajes: 1
| Publicado: 28/03/2013 5:15 pm | | | Título: Duda sobre funcion FindFileFirst en c++ Window |
| Hola a todos¡¡
Lo primero daros la enhorabuena por el maravilloso foro, llevo mucho tiempo leyendoos.
Estoy haciendo un servidor FTP, y necesito una funcion para listar los archivos de un directorio, pues bien una funcion es esta:
std::string GF_FTPDirList:: GF_GetList(const std::string & Path) { std::string List; std::string t = "";
WIN32_FIND_DATA wfd; HANDLE sh =FindFirstFile((LPCWSTR)"C:\\Pollo\\*", &wfd); if (sh == INVALID_HANDLE_VALUE) return t;
do { List += GF_GetFileInfo(wfd); } while (FindNextFile(sh, &wfd));
FindClose(sh); return List; }
Resulta que hago tengo que tener mal en el findfirstfile, porque el directorio pollo existe, y entra siempre en el if...
A ver si alguien en echa un cable
Gracias de antemano |
| | Volver arriba | |  | rir3760

Registrado: 01 Oct 2004 Mensajes: 7527 Ubicación: Mexico
| Publicado: 01/04/2013 9:16 am | | | Título: |
| Con esta conversión:
| Código: | (LPCWSTR) "C:\\Pollo\\*" |
Estas indicando que el primer parámetro es un puntero a una cadena de caracteres Unicode (tipo wchar_t). ¿Seguro esa es tu intención?
La pagina sobre esa macro es MSDN: LPCWSTR.
Si es asi debes indicar que la cadena literal también es Unicode con:
| Código: | (LPCWSTR) L"C:\\Pollo\\*" |
Y la pagina sobre la función que mencionas (ejemplo incluido) es MSDN FindFirstFile.
Un saludo _________________ C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language |
| | Volver arriba | |  | untio

Registrado: 17 Sep 2008 Mensajes: 380 Ubicación: MICA S.A.
| Publicado: 03/04/2013 7:24 am | | | Título: |
| Hola,
Ya estoy yo con mis respuestas curiosas.
En lugar de usar FindFirstFile, usa FindFirstFileEx. Es muy parecida y realmente lista todos los ficheros y carpetas.
Si quieres usar caracteres unicode has de incluir:
#define UNICODE #define _UNICODE
antes de incluir ningún fichero de cabecera (Visual C++ lo hace por su cuenta, pero otros compiladores tal vez no).
Es cierto, para entrar una cadena literal unicode se antepone L antes de la primera comilla.
Ah, te recuerdo que si el directorio que estás listando no es la carpeta raíz de una partición, te aparecerán dos subdirectorios que tal vez no esperes:
. ..
. es un sinónimo del directorio actual. .. es un sinónimo del directorio padre del actual.
Esto último es muy importante si quieres listar el contenido de una carpeta y de sus subcarpetas de forma recursiva.
Si me he equivocado, haced el favor de perdonarme y corregirme.
Saludos. _________________ Hago algo muy raro: primero leo las instrucciones. |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |