Página 1 de 1

[RESUELTO]Corrección de FORMAT( dato, ">") en AOO Basic

NotaPublicado: Vie Jun 08, 2012 4:41 pm
por SLV-es
He detectado lo que podría ser un error a la hora de trabajar el comando FORMAT de AOO Basic

Al utilizar el parámetro ">" que convierte el dato pasado como argumento en todo mayúsculas, no convierte las vocales acentuadas ni la ñ y ç.

AOO_Basic_01.png
AOO_Basic_01.png (10.94 KiB) Visto 7727 veces


Código de las funciones macro usadas:

Código: Seleccionar todo   Expandir vistaContraer vista
Function myUCase(x)
   dim y as string
   y = format( x , "nn dd/mmm/yy")
   y = uCase( y )
   myUCase = y
end function

Function myBadUCase(x)
   dim y as string
   y = format( x , "nn dd/mmm/yy")
   y = format( y , ">")
   myBadUCase = y
end function

Re: Corrección de FORMAT( dato, ">") en AOO Basic

NotaPublicado: Sab Jun 09, 2012 1:32 pm
por RGB-es
Pues sí, es un claro error. He intentado una búsqueda en bugzilla pero extrañamente no puedo encontrar algo relacionado... ¿Sabes si la función se llama «format» también en inglés?

El reporte tendría que ser más o menos en estos términos

Título: La instrucción format falla con caracteres acentuados al pasar todo a mayúsculas

Descripción: Al utilizar la instrucción format con el parámetro > en modo tal de cambiar el texto de una celda todo a manúsculas, el cambio no se produce en caracteres acentuados. Por ejemplo «sábado» pasa a «SáBADO» en lugar de «SÁBADO». En el archivo adjunto puede encontrarse una macro que utiliza esta instrucción para modificar los datos, mostrando la falla con caracteres del tipo á, é, ñ...

<se adjunta tu archivo>

¿Algo para agregar/modificar?

Saludos
Ricardo

Re: Corrección de FORMAT( dato, ">") en AOO Basic

NotaPublicado: Sab Jun 09, 2012 2:21 pm
por SLV-es
La instrucción FORMAT es en inglés, pues es Basic.

Nada más que agregar, me parece perfecto.

Gracias !!!!

Re: Corrección de FORMAT( dato, ">") en AOO Basic

NotaPublicado: Sab Jun 09, 2012 3:52 pm
por RGB-es

Re: Corrección de FORMAT( dato, ">") en AOO Basic

NotaPublicado: Sab Jun 09, 2012 6:31 pm
por mriosv
¿Solo una duda, podrá tener algo que ver con el juego de caracteres, que use por defecto Starbasic?
¿Podrá establecerse el juego de caracteres a utilizar?
Por ejemplo en los formatos de conversión de números/fechas a texto no son iguales en todos los idiomas, y desconozco si Starbasic usa el que esta seleccionado en las opciones, el del estilo de la celda o siempre utiliza el inglés.

Re: Corrección de FORMAT( dato, ">") en AOO Basic

NotaPublicado: Dom Jun 10, 2012 12:28 am
por RGB-es
mriosv escribió:¿Solo una duda, podrá tener algo que ver con el juego de caracteres, que use por defecto Starbasic?

Todo AOO/LibO usa unicode, por lo que estos problemas no deberían existir. Por esto me inclino más a pensar en starbasic no utilizando todos los rangos unicode, solo el «Latin1» (el antiguo ascii) y dejando los caracteres que no comprende afuera... si es así resultaría una limitación demasiado importante.

Re: Corrección de FORMAT( dato, ">") en AOO Basic

NotaPublicado: Dom Jun 10, 2012 10:58 am
por RGB-es
Alguien ha comentado en el reporte diciendo que si se agrega uCase a la función «bad», todo funciona

Código: Seleccionar todo   Expandir vistaContraer vista
Function myBadUCase(x)
   dim y as string
   y = format( x , "nn dd/mmm/yy")
   y = format( y , ">")
   y = uCase ( y )
   myBadUCase = y
end function


No tengo idea de si este uCase es realmente necesario o no debería serlo y el hecho de tener que agregarlo sea un error en sí mismo...

Re: Corrección de FORMAT( dato, ">") en AOO Basic

NotaPublicado: Dom Jun 10, 2012 12:14 pm
por SLV-es
La orden Format ( x ; ">") y la orden UCase( x ) son equivalentes.
La orden Format ( x ; "<") y la orden LCase( x ) son equivalentes.

Normalmente la orden Format se utiliza agregando más parámetros al argumento formato (@, &, !), con el objeto de formatear cadenas de texto y además, con "<" o ">" convertirlas a minúsculas o mayúsculas.

Nota: @ significa un carácter o en su defecto un espacio en blanco ; & significa un carácter o en su defecto nada ; ! significa alinear a la derecha

Código: Seleccionar todo   Expandir vistaContraer vista
x="Pepe " ' con un espacio extra al final
y = format ( x; "@@@@@@!" )

' y debería contener " Pepe "

y = format ( x ; "&&&&&&" )
' y debería contener "Pepe"

y = format( x ; ">@@@@@@!" )
' y debería contener " PEPE "


Por supuesto que si aplicas lCase o uCase posteriormente obtienes el mismo resultado, pero eso no quita que Format con ">" o "<" debería de funcionar correctamente, y así poder con una sóla orden dar formato y convertir a mayúsculas.

Saludos

Re: Corrección de FORMAT( dato, ">") en AOO Basic

NotaPublicado: Dom Jun 10, 2012 12:44 pm
por RGB-es
Perfecto. Agregué un comentario indicando un par de cosas:

-Que uCase debería ser equivalente a format con >, por lo que la «solución» propuesta no es tal ya que realiza dos veces la misma acción con solo la segunda funcionando.

-Que el reporte no es sobre la dificultad de pasar caracteres acentuados a mayúsculas, sino sobre la falla del comando format al realizar esa tarea.

Saludos

Re: Corrección de FORMAT( dato, ">") en AOO Basic

NotaPublicado: Dom Jun 10, 2012 7:49 pm
por RGB-es
Buenas noticias: Ariel Constenla-Haile ha tomado el reporte... ¡y lo ha resuelto!

El parche ya fue enviado a la rama principal de desarrollo del programa. No sé si la corrección logrará entrar en 3.4.1 o pasará para la próxima versión «mayor» (no es algo crítico), pero ya está listo.

Re: [RESUELTO]Corrección de FORMAT( dato, ">") en AOO Basic

NotaPublicado: Dom Jun 10, 2012 9:33 pm
por SLV-es
Bien por los dos !!!!

Gracias