ampersand
- VictorCasajuana
- Posts: 268
- Joined: Wed Mar 28, 2018 4:38 pm
- Location: Vinaròs
- Contact:
ampersand
Hola.
Tengo una duda, cuando el string que se incluye en un Say contiene un ampersand &, no lo muestra correctamente ya que el say procesa el & como un shortcut del teclado, para mostrar el & hay que incluirlo 2 veces:
Esto no se muestra bien:
"hola & adios"
Esto se muestra bien:
"hola && adios"
Hay alguna función de FW que haga un "sanitize" de los strings para que se pueda mostrar correctamente? es por no hacerla y reinventar la rueda.
Salud!
Tengo una duda, cuando el string que se incluye en un Say contiene un ampersand &, no lo muestra correctamente ya que el say procesa el & como un shortcut del teclado, para mostrar el & hay que incluirlo 2 veces:
Esto no se muestra bien:
"hola & adios"
Esto se muestra bien:
"hola && adios"
Hay alguna función de FW que haga un "sanitize" de los strings para que se pueda mostrar correctamente? es por no hacerla y reinventar la rueda.
Salud!
--------
¿ Y porque no ?
¿ And why not ?
¿ Y porque no ?
¿ And why not ?
Re: ampersand
Holá, small sample? Pequeño ejemplo? Gracias. Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
- VictorCasajuana
- Posts: 268
- Joined: Wed Mar 28, 2018 4:38 pm
- Location: Vinaròs
- Contact:
Re: ampersand
the sample:
the result:
Code: Select all | Expand
#include 'fivewin.ch'
Function Main()
DEFINE DIALOG oDlg TITLE "Test"
@ 1,1 SAY "Hello & Bye" OF oDlg
@ 2,1 SAY "Hello && Bye" OF oDlg
ACTIVATE DIALOG oDlg CENTERED
Return Nil
--------
¿ Y porque no ?
¿ And why not ?
¿ Y porque no ?
¿ And why not ?
Re: ampersand
Hola Victor. Mira se ayuda:
Regards, saludos.
Code: Select all | Expand
#include 'fivewin.ch'
#include "WColors.ch"
STATIC lWhen := .F.
Function Main()
LOCAL oDlg, oFnt, oFont, oBot01
DEFINE FONT oFnt NAME "Ms Sans Serif" SIZE 00, -12 BOLD
DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 00, -16 BOLD
DEFINE DIALOG oDlg TITLE "FiveWin: Victor Casajuana & And && Wow()" ;
SIZE 400, 320 FONT oFont COLOR CLR_BLACK, CLR_WHITE TRANSPARENT
oDlg:lHelpIcon := .F.
@ 1,1 SAY "Hello & Bye Incorrect" OF oDlg UPDATE SIZE 190, 12 ;
COLOR GetSysColor( COLOR_HIGHLIGHT ), COLOR_BTNSHADOW
@ 2,1 SAY "Hello &Bye correct ALT+B" OF oDlg UPDATE SIZE 190, 12 ;
COLOR GetSysColor( COLOR_HIGHLIGHT ), COLOR_BTNSHADOW
@ 3,1 SAY "Hello && Bye es una Empresa-Correct" OF oDlg UPDATE ;
SIZE 190, 12 COLOR GetSysColor( COLOR_HIGHLIGHT ), COLOR_BTNSHADOW
@ 4,1 SAY "Hello &&Bye incorrect no es una Empresa" OF oDlg UPDATE ;
SIZE 190, 12 COLOR GetSysColor( COLOR_HIGHLIGHT ), COLOR_BTNSHADOW
@ 5,1 SAY "&Y porque no? ALT+Y" OF oDlg UPDATE SIZE 190, 12 ;
COLOR GetSysColor( COLOR_HIGHLIGHT ), COLOR_BTNSHADOW
@ 6,1 SAY "And why ¬? ALT+N" OF oDlg UPDATE SIZE 190, 12 ;
COLOR GetSysColor( COLOR_HIGHLIGHT ), COLOR_BTNSHADOW
@ 7,1 SAY "Victor && Casajuana Empresa Informatica Ltd." UPDATE ;
SIZE 190, 12 COLOR GetSysColor( COLOR_HIGHLIGHT ), COLOR_BTNSHADOW
@ 9,1 SAY "<ESC> No Exit" UPDATE SIZE 50, 12 FONT oFnt ;
COLOR GetSysColor( COLOR_HIGHLIGHT ), COLOR_BTNSHADOW
@ 120, 70 BTNBMP oBot01 OF oDlg SIZE 60, 30 PROMPT "&Salida" ;
FONT oFont FILE "..\bitmaps\Exit.bmp" RIGHT FLAT 2007 ;
COLOR COLOR_BTNSHADOW ACTION( lWhen := .T., oDlg:End() )
oBot01:cToolTip := "Use ALT + S Para Salir - Exit"
oBot01:lCancel := .T.
ACTIVATE DIALOG oDlg CENTERED VALID( lWhen )
oFnt:End()
oFont:End()
RETURN NIL
// FIN / END - kapiabafwh@gmail.com
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
- VictorCasajuana
- Posts: 268
- Joined: Wed Mar 28, 2018 4:38 pm
- Location: Vinaròs
- Contact:
Re: ampersand
Gracias por responder.
El problema es cuando muestro valores de una base de datos, por ejemplo, un fichero de artículos cuyo nombre contiene & ampersand:
El resultado es el siguiente:
Por este motivo, pregunto si en FW hay una función para "sanear" estos strings para mostrarlos en un SAY de un diálogo.
Si no la hay, la monto.
Salud!
El problema es cuando muestro valores de una base de datos, por ejemplo, un fichero de artículos cuyo nombre contiene & ampersand:
Code: Select all | Expand
#include 'fivewin.ch'
Function Main()
DEFINE DIALOG oDlg TITLE "Test"
cProduct_Name := 'Whisky J&B'
@ 1,1 SAY cProduct_Name OF oDlg
ACTIVATE DIALOG oDlg CENTERED
Return Nil
Por este motivo, pregunto si en FW hay una función para "sanear" estos strings para mostrarlos en un SAY de un diálogo.
Si no la hay, la monto.
Salud!
--------
¿ Y porque no ?
¿ And why not ?
¿ Y porque no ?
¿ And why not ?
Re: ampersand
Buén dia. Ah, SI! No que yo lo sepa. Use una function para eliminar el acento. Ejemplo:
Regards, saludos.
Code: Select all | Expand
FUNCTION ELIMINAR_ACENTOS( cStr )
LOCAL cStrNew := "", nX
cAcentos := {"ø","ƒ","Æ","Ç"," ","µ","…","·","‚","É","ê","ˆ","","Ò","í","Í","ó","¢","à","ä","å","“","â","ú","é","","š","ç","€","ã","Ã","á","Á","à","À","é","É","ê","Ê","í","Í","ó","Ó","õ","Õ","ô","Ô","ú","Ú","ü","Ü","ç","ù","AAO","§","¦","º","ª","€","‡","Ç","ç","'","`","ø","¡","Þ","×","Ø","ø", chr(239)}
cLetras := {"o","A","A","A","A","A","A","A","E","E","E","E","E","E","I","I","O","O","O","O","O","O","O","U","U","U","U","C","C","A","A","A","A","A","A","E","E","E","E","I","I","O","O","O","O","O","O","U","U","U","U","C"," ","CAO",".",".",".",".","C","C","C","C","" ,"" ,".","I","I","I","I","o", "" }
For nX := 1 TO LEN(cAcentos)
cStrNew := StrTran(cStr, cAcentos[nX], cLetras[nX])
cStr := cStrNew
Next
RETURN( cStrNew )
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Re: ampersand
Listo:
Regards, saludos.
Code: Select all | Expand
// C:\FWH..\SAMPLES\VICTOR2.PRG
#include 'fivewin.ch'
#include "WColors.ch"
FUNCTION Main()
LOCAL oDlg, cProduct_Name, cProdVentaFin, oFnt, oFont, oBot01
cProduct_Name := 'Whisky J&B' // PRODUCT.DBF
cProdVentaFin := ELIMINAR_ACENTOS( cProduct_Name )
DEFINE FONT oFnt NAME "Ms Sans Serif" SIZE 00, -12 BOLD
DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 00, -16 BOLD
DEFINE DIALOG oDlg TITLE "FiveWin: Victor Casajuana & And && Wow2()" ;
SIZE 400, 320 FONT oFont COLOR CLR_BLACK, CLR_WHITE TRANSPARENT
oDlg:lHelpIcon := .F.
@ 1,1 SAY "Casajuana: Venta de Procuctos." OF oDlg UPDATE SIZE 190, 12 ;
COLOR CLR_HRED, CLR_WHITE
// Product Name:
@ 3, 1 SAY cProdVentaFin OF oDlg UPDATE SIZE 190, 12 ;
COLOR GetSysColor( COLOR_HIGHLIGHT ), CLR_WHITE
@ 120, 70 BTNBMP oBot01 OF oDlg SIZE 60, 30 PROMPT "&Salida" ;
FONT oFont FILE "..\bitmaps\Exit.bmp" RIGHT FLAT 2007 ;
COLOR COLOR_BTNSHADOW ACTION( oDlg:End() )
oBot01:cToolTip := "Use ALT + S Para Salir - Exit"
oBot01:lCancel := .T.
ACTIVATE DIALOG oDlg CENTERED
RETURN NIL
FUNCTION ELIMINAR_ACENTOS( cStr )
LOCAL cStrNew := "", nX, cAcentos, cLetras
// aqui Victor:
cAcentos := { "&", "ø","ƒ","Æ","Ç"," ","µ","…","·","‚","É","ê","ˆ","","Ò","í","Í","ó","¢","à","ä","å","“","â","ú","é","","š","ç","€","ã","Ã","á","Á","à","À","é","É","ê","Ê","í","Í","ó","Ó","õ","Õ","ô","Ô","ú","Ú","ü","Ü","ç","ù","AAO","§","¦","º","ª","€","‡","Ç","ç","'","`","ø","¡","Þ","×","Ø","ø", CHR(239) }
cLetras := { "'&&'", "o","A","A","A","A","A","A","A","E","E","E","E","E","E","I","I","O","O","O","O","O","O","O","U","U","U","U","C","C","A","A","A","A","A","A","E","E","E","E","I","I","O","O","O","O","O","O","U","U","U","U","C"," ","CAO",".",".",".",".","C","C","C","C","" ,"" ,".","I","I","I","I","o", "" }
For nX := 1 TO LEN(cAcentos)
cStrNew := StrTran(cStr, cAcentos[nX], cLetras[nX])
cStr := cStrNew
Next
RETURN( cStrNew )
// FIN / END - kapiabafwh@gmail.com
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
- VictorCasajuana
- Posts: 268
- Joined: Wed Mar 28, 2018 4:38 pm
- Location: Vinaròs
- Contact:
Re: ampersand
Muchas gracias por la respuesta. Me montaré un pequeño replace & por &&
Salud!
Salud!
--------
¿ Y porque no ?
¿ And why not ?
¿ Y porque no ?
¿ And why not ?
Re: ampersand
V,
Canvia de Wisky...
C.
Canvia de Wisky...
C.
Salutacions, saludos, regards
"...programar es fácil, hacer programas es difícil..."
UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
"...programar es fácil, hacer programas es difícil..."
UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
- VictorCasajuana
- Posts: 268
- Joined: Wed Mar 28, 2018 4:38 pm
- Location: Vinaròs
- Contact:
Re: ampersand ( solucionado )
Como apunte por si alguien llega hasta aquí:
Salud!
Code: Select all | Expand
strtran( ccadena, "&", "&&" ) // funciona ✅
Code: Select all | Expand
hb_strreplace( ccadena, { "&" => "&&" } ) // funciona ✅
Last edited by VictorCasajuana on Wed Jun 14, 2023 12:46 pm, edited 1 time in total.
--------
¿ Y porque no ?
¿ And why not ?
¿ Y porque no ?
¿ And why not ?
- VictorCasajuana
- Posts: 268
- Joined: Wed Mar 28, 2018 4:38 pm
- Location: Vinaròs
- Contact:
Re: ampersand
El mejor whisky es el que te tomas con buena compañía, a ver si coincidimos.Carles wrote:V,
Canvia de Wisky...
C.
--------
¿ Y porque no ?
¿ And why not ?
¿ Y porque no ?
¿ And why not ?
Re: ampersand
Code: Select all | Expand
// C:\FWH..\SAMPLES\PETEWG.PRG
#include "FiveWin.ch"
/*
gsearch.prg - original fonte: https://hmgforum.com/viewtopic.php?t=7295&start=10
compile : hbmk2 -w3 -es2 gsearch
*/
FUNCTION Main( cSearchFor )
LOCAL nResult
nResult := GoogleSearch( hb_defaultValue( cSearchFor, "FiveWin Harbour -facebook" ) )
IF nResult == 0
MsgInfo( "Search string has been sent to your browser!", "Yes" )
ELSE
MsgStop( "Cannot execute search command! Error code:" + hb_ntos( nResult ), "No" )
ENDIF
RETURN NIL
FUNCTION GoogleSearch( cSearchFor )
LOCAL cCmd, nResult
IF .NOT. HB_ISSTRING( cSearchFor ) .OR. Empty( cSearchFor )
RETURN -1
ENDIF
cSearchFor := hb_StrReplace( cSearchFor, { '"' => "", " " => "+" } )
cCmd := " /Q /C start https://www.google.com/search" + '"?client=gtx&q=' + cSearchFor + '"'
nResult := hb_run( hb_GetEnv( "ComSpec" ) + cCmd )
RETURN nResult
/*
FUNCTION StrReplace_Test()
Local cText:=Replicate("*",1000)+"ABCD"+Replicate("+",1000)
//? Len(cText) //2004
//? "ABCD" $ cText //.T.
cText := Hb_StrReplace( cText, {"ABCD"}, {"1234"} )
? Len(cText) // 2004?
? "1234" $ cText // .F. ?
RETURN NIL
*/
// FIN
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341