13 julio 2016

Como convertir caracteres Apple MacRoman a Unicode

Aunque "raras", existen las ocasiones en que vamos a necesitar obtener el correspondiente carácter en formato unicode, partiendo de su codificación no-unicode. En mi caso la razón es que dispongo de una fuente de caracteres Mac OS X para representación de códigos de barras, en formato no-unicode y necesito usarla desde su correspondencia unicode.

Buscando en internet, encontré una tabla con las diferencias que se pueden encontrar entre sus códigos ascii y que extracto a continuación...

...como se puede observar existen diferencias entre la codificación Mac y Unicode, por ejemplo alcaracter ê le corresponde el código 144 (no-unicode) y el 234 en formato unicode.

La manera de obtener dicho carácter en su formato unicode, partiendo de su ascii 144, sería la siguiente...
Do byteset(lBin,0,144)
Do uniconv(kUniTypeNativeCharacters,lBin,kUniTypeCharacter,lChar,kFalse,lErrorText)
...donde lBin es una variable local de tipo binario, mientras que lChar y lErrorText son de tipo carácter. La ejecución de éste código de notación, almacenará en la variable lChar el caracter ê convertido a unicode.

30 marzo 2016

25 febrero 2016

Nuevas opciones del Device Control en Omnis Studio

La propiedad $action del "Device Control" es utilizada para acceder a las características hardware o servicios en un teléfono móvil, tales como hacer una llamada, pero (como ya sabemos) dicha propiedad sólo estaba disponible cuando la aplicación es ejecutada en modo autónomo o "sin-conexión".

Sin embargo la última versión de Omnis Studio, nos permite utilizar el correo electrónico, las llamadas telefónicas y los mensajes SMS (Email, Call y SMS) a modo de una aplicación que fuese ejecutada sobre un navegador y no bajo el "wrapper" o aplicación instalada, es decir que será el navegador instalado por defecto en el dispositivo quien ejecute la acción correspondiente, en lugar de nuestra aplicación. Dichas acciones se corresponden con las siguientes constantes de la propiedad $action: kJSDeviceActionSendEmail, kJSDeviceActionMakeCall, y kJSDeviceActionSendSms. Naturalmente el resto de acciones ya conocidas deberán seguir siendo ejecutadas desde dentro del "wrapper".

Cuando es el navegador quien ejecuta la acción de enviar un SMS, se enviará un único mensaje y para el número especificado bajo la propiedad $communicationaddress del "Device Control", el texto del mensaje deberá figurar bajo la propiedad $communicationdata. Consulte el manual "Creating Web & Mobile Apps" para obtener más información sobre cómo utilizar "Device Control" en la construcción de aplicaciones para dispositivos móviles.

Por cierto, me estoy planteando la posibilidad de traducir al castellano el manual al que hacemos referencia en el párrafo anterior ;-)