Página 1 de 1
get picture com S ou N em lugar de Y ou N
Enviado: 16 Jun 2021 04:00
por Ary
Boa noite !
No Alaska Xbase eu usaria setlocale() para setar o carácter que seria atribuído a true ou false em um campo lógic, da seguinte forma:
setlocale (NLS_SYES, "S")
setlocale (NLS_SNO, "N")
assim, quando eu usasse "get _status picture "Y"", o usuário selecionaria "S" para sim (true) ou "N" para não (false).
Porém em Harbour, quando uso isto, aparece "Y" para sim (true) e "N" para não (false).
Existe alguma forma de mudar isso como no Alaska?
get picture com S ou N em lugar de Y ou N
Enviado: 16 Jun 2021 14:29
por alxsts
Olá!
No xHarbour tem as funções
IsAffirm() e
IsNegative(). Testei no Harbour 3.2.0 dev (r1612161005) Nightly e funcionam.
IsAffirm()
Converts "Yes" in a national language to a logical value.
Syntax
IsAffirm( <cChar> ) --> lIsYes
Arguments
<cChar>
This is a single character. It is compared case-insensitive with the first letter of the word "Yes" of the currently selected national language. Return
The function returns .T. (true) if <cChar> is the first letter of the word "Yes" in the currently selected national language (see HB_LangSelect()). Otherwise, .F. (false) is returned.
Info
See also: HB_LangSelect(), IsNegative()
Category: Language specific , xHarbour extensions
Source: rtl\natmsg.c
LIB: xhb.lib
DLL: xhbdll.dll
Example
// The example uses three national languages and displays the result
// of IsAffirm().
Código: Selecionar todos
REQUEST HB_LANG_DE // request German language
REQUEST HB_LANG_FR // request French language
PROCEDURE Main
// English language is default: "Yes"
? IsAffirm( "J" ) // result: .F.
? IsAffirm( "O" ) // result: .F.
? IsAffirm( "Y" ) // result: .T.
HB_LangSelect( "DE" ) // "Ja" == "Yes"
? IsAffirm( "J" ) // result: .T.
? IsAffirm( "O" ) // result: .F.
? IsAffirm( "Y" ) // result: .F.
HB_LangSelect( "FR" ) // "Oui" == "Yes"
? IsAffirm( "J" ) // result: .F.
? IsAffirm( "O" ) // result: .T.
? IsAffirm( "Y" ) // result: .F.
RETURN
É só adaptar para Português.
get picture com S ou N em lugar de Y ou N
Enviado: 16 Jun 2021 16:24
por Ary
Funcionou para dias da semana, etc
Mas o get picture "Y" continua mostrando "Y" ou "N"
Obrigado de qq forma
get picture com S ou N em lugar de Y ou N
Enviado: 16 Jun 2021 16:56
por Itamar M. Lins Jr.
Olá!
Cadê seu teste ?
Saudações,
Itamar M. Lins Jr.
get picture com S ou N em lugar de Y ou N
Enviado: 16 Jun 2021 20:44
por Ary
Código: Selecionar todos
request HB_LANG_PT
procedure main
local _logic := .t.
hb_langselect ("PT")
clear
@ 10, 10 say "teste" get _logic picture "Y"
read
?_logic
wait
return
Abaixo postei uma pequena imagem com o resultado, no Alaska eu teria "S" ou "N"
get picture com S ou N em lugar de Y ou N
Enviado: 16 Jun 2021 21:13
por alxsts
Olá!
Itamar M. Lins Jr. escreveu:Cadê seu teste ?
Eu testei a existência das funções no prompt do HbMk2 (HbMk2 .).
Mas no Harbour não existe a funcionalidade pretendida. Teria que implementar.
Exemplo que tem no xHarbour Language Reference Guide
Código: Selecionar todos
// The example uses three national languages and displays the result
// of IsAffirm().
REQUEST HB_LANG_DE // request German language
REQUEST HB_LANG_FR // request French language
PROCEDURE Main
// English language is default: "Yes"
? IsAffirm( "J" ) // result: .F.
? IsAffirm( "O" ) // result: .F.
? IsAffirm( "Y" ) // result: .T.
HB_LangSelect( "DE" ) // "Ja" == "Yes"
? IsAffirm( "J" ) // result: .T.
? IsAffirm( "O" ) // result: .F.
? IsAffirm( "Y" ) // result: .F.
HB_LangSelect( "FR" ) // "Oui" == "Yes"
? IsAffirm( "J" ) // result: .F.
? IsAffirm( "O" ) // result: .T.
? IsAffirm( "Y" ) // result: .F.
RETURN
Exemplo que eu criei
Código: Selecionar todos
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
PROCEDURE Main
LOCAL cSN := .t., GetList := {}
Hb_LangSelect( 'PT' )
Hb_cdpSelect( "PT850" )
SetMode( 25,80 )
CLS
@ 10,10 Say "Confirma (S/N)?: " Get cSN PICTURE "!A" VALID IsAffirm( cSN )
READ
Hb_Alert( "Resposta " + If( cSN == "S", "Sim", "Não" ) )
RETURN NIL
Mas isto não ajuda muito. A variável do GET tem que ser tipo char. Seria até melhor testar o VALID "S" ou "N"...
get picture com S ou N em lugar de Y ou N
Enviado: 16 Jun 2021 21:40
por Ary
Eu estou pensando em uma solução usando isaffirm () e isnegative (), mas vou ter que converter a variável para char e depois antes de gravar, converter de novo para logic