/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Duda sobre funcion FindFileFirst en c++ Window

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
alfa_gt_teleco



Registrado: 28 Mar 2013
Mensajes: 1

MensajePublicado: 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

MensajePublicado: 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.

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com