¿ Tienes idea por qué el siguiente código para conocer las carpetas del SO, funciona, pero si la llamo varias veces, al final da una especie de gpf como con el problema del curdir() del anterior mensaje. ?
Creo que tiene relación con la función WideToAnsi, pero no encuentro qué puede ser. Adjunto el código problemático:
Code: Select all | Expand
HB_FUNC( CESPECIALFOLDERDOMI ){ LPTSTR lpszPath = ( LPTSTR ) hb_xgrab( MAX_PATH ); LPSTR pAnsi; BOOL bRet ; // (HWND) GetActiveWindow() bRet = SHGetSpecialFolderPath( NULL, lpszPath , (INT) hb_parni(1) , 0 ); hb_retl( (BOOL) bRet ); if ( bRet ) { pAnsi = WideToAnsi( ( LPWSTR ) lpszPath ); if ( ISBYREF( 2 ) ) // Quitamos el Null del final hb_storclen( ( char * ) pAnsi, MAX_PATH, 2 ) ; hb_xfree( pAnsi ); } else { if ( ISBYREF( 2 ) ) // Mandamos cadena vacía hb_storclen( ( char * ) lpszPath, 0 , 2 ) ; } hb_xfree( lpszPath );}