Página 1 de 1
[RESUELTO]Corrección de FORMAT( dato, ">") en AOO Basic
Publicado: 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 (10.94 KiB) Visto 12292 veces
Código de las funciones macro usadas:
Código: Seleccionar todo
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
Publicado: 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
Publicado: 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
Publicado: Sab Jun 09, 2012 3:52 pm
por RGB-es
Re: Corrección de FORMAT( dato, ">") en AOO Basic
Publicado: 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
Publicado: 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
Publicado: 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
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
Publicado: 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
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
Publicado: 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
Publicado: 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
Publicado: Dom Jun 10, 2012 9:33 pm
por SLV-es
Bien por los dos !!!!
Gracias