Page 2 of 2

Re: No muestra las letras acentuadas?

Posted: Sun Dec 30, 2012 5:48 pm
by Leopoldo Blancas
Hola!!!

Dr. Claudio gracias por el tip SET CODEPAGE TO SPANISH
Saludos
Polo

Re: No muestra las letras acentuadas?

Posted: Sat Jan 26, 2013 10:19 pm
by Pablo César
Como hago para compilar y exibir correctamente el retorno de los ficheros en portugues ahora que el compilador está trabajando em UNICODE ?
Utilizo la funcion GET_FOLDER_LINK que devuelve los nombres de las carpetas del Windows utilizando la API y creo que estas están devolviendo em ANSI.
Tendria que convertir de ANSI para UNICODE o que es lo que estoy haciendo de errado ?

Code: Select all

#include "hmg.ch"

#define CSIDL_LOCAL_APPDATA             28
#define SHGFP_TYPE_CURRENT              0

Function Main()
MsgInfo( GET_FOLDER_LINK( SHGFP_TYPE_CURRENT, CSIDL_LOCAL_APPDATA ) )
Return Nil

#pragma begindump

#include <windows.h>
#include <shlobj.h>

#include "hbapi.h"

//************************************************************************************************************
// GET_FOLDER_LINK (id_SHGFP_TYPE, id_CSIDL) ---> Return cFolder
//************************************************************************************************************
HB_FUNC (GET_FOLDER_LINK)
{   
    TCHAR pszPath [MAX_PATH];
    DWORD id_SHGFP_TYPE = (DWORD) hb_parnl (1);
    INT   id_CSIDL      = (INT)   hb_parnl (2);
    
    if(SUCCEEDED (SHGetFolderPath (NULL, id_CSIDL, NULL, id_SHGFP_TYPE, pszPath)))
        hb_retc (pszPath);
    else
        hb_retc ("ERROR: The folder does not exist");            
}

#pragma enddump

Re: No muestra las letras acentuadas?

Posted: Sat Jan 26, 2013 10:25 pm
by Pablo César
Ya entendi, me faltaba adiconar el pragma

#define COMPILE_HMG_UNICODE
#include "HMG_UNICODE.h"

Resuelto ! Disculpen, fué distraccion mia.

Re: No muestra las letras acentuadas?

Posted: Sun Jan 27, 2013 5:46 pm
by srvet_claudio
Pablo, demás de agregarle al código en C:

Code: Select all

#define COMPILE_HMG_UNICODE
#include "HMG_UNICODE.h"
antes de los demás #include, cambia hb_retc() por HMG_retc() y agrégale _TEXT() al mensaje.

Code: Select all

 if(SUCCEEDED (SHGetFolderPath (NULL, id_CSIDL, NULL, id_SHGFP_TYPE, pszPath)))
        HMG_retc (pszPath);
    else
        HMG_retc (_TEXT("ERROR: The folder does not exist"));
Saludos,
Claudio.

Re: No muestra las letras acentuadas?

Posted: Mon Jan 28, 2013 10:11 am
by Pablo César
Ahhh si si, me habia olvidado de mencionar. Fundamental cambiar de hb_retc() por HMG_retc() y ponerle el _TEXT() cuando haya necesidad de exponer algun mensaje de tela. Gracias por el esclarecimiento.

Re: No muestra las letras acentuadas?

Posted: Thu Mar 07, 2013 3:53 pm
by Pablo César
srvet_claudio wrote:pero como dijo Daniel, lo ideal es trabajar directo con el texto en Unicode.
Esto implica que además de usar SET LANGUAGE TO SPANISH, debes utilizar um editor (puede ser el Notepad++ que viene en el paquete HMG) e ir en la opcion Formatar / Codificacion UTF. Irás notar que tendrás que reahacer todos las acentuaciones. Pero eso no es tan dificil, no ?