jueves, 23 de julio de 2009

Mensajes y formato de strings

Ahora que descubrí la función Format() en GeneXus y que la empecé a usar... creo que se le podría hacer una mejora.

La mayoría de las veces, cuando armamos un string, lo queremos para mostrar un mensaje. Muchas veces es para pasárselo a la función msg() o a la función error().

Algo así:
&mensaje = Format('El pedido número %1 fue confirmado', PedidoId.ToString())
msg(&mensaje)
o simplemente
msg( Format('El pedido número %1 fue confirmado', PedidoId.ToString()) )
Sería más práctico e intuitivo, que las funciones msg() y error() recibieran una cantidad variable de parámetros y se comportaran como la función Format().

El código quedaría entonces más simple:
msg( 'El pedido número %1 fue confirmado', PedidoId.ToString() )

3 comentarios:

  1. Es una de mis funciones preferidas.

    Fijate que, a pesar que la documentación dice lo contrario, no es necesario convertir a String los parámetros.


    &msg = Format('El pedido número %1 fue confirmado', PedidoId)


    Yo la uso muchísimo para separar la presentación del contenido.. por ejemplo, la uso para generar JSON en la expresión


    &JSON += format('{titulo: "%1", url: "%2.aspx"}', &titulo, &url)

    ResponderEliminar
  2. Es una buena idea, la del msg con varios parámetros, tiene el inconveniente de los mensajes de status..
    Se podria solucionar con dos funciones diferentes.

    Msg('Mensaje número:' %1, MsgId)

    y

    MsgStatus('Mensaje número: %1, MsgId)

    MsgStatus es equivalente a Msg('texto',status)

    ResponderEliminar
  3. Mirá vos... no la tenía esta función en GX. Siempre me pareció muy buena la forma de armar los mensajes en C# poniendole el %f, %x, %d , etc... no sabia que en Gx se podia.

    Muy buena.

    ResponderEliminar