El Blog de Rafa Cano

30 noviembre, 2010

Paco de Lucia - Entre dos aguas

14 junio, 2006

FOXPRO - Obtener el Idioma del sistema operativo que está instalado.

LOCAL LocaleId
DECLARE LONG GetThreadLocale IN "Kernel32.dll"
m.LocaleId = RIGHT(TRANSFORM(GetThreadLocale(), "@0"), 4)
DO CASE
CASE LEFT(m.LocaleId, 2) = "0A" && cualquier idioma español
m.LocaleId = "0C0A"
CASE INLIST(m.LocaleId, "042D", "0403")
* Vasco, Catalán se pasa a español, mientras no esté traducido a ese idioma.
m.LocaleId = "0C0A"
OTHERWISE
m.LocaleId = "0C0A"
ENDCASE

Para saber los valores posible a continuación transcribo una info que cogí de microsoft para dicha tarea.

Descripción Idioma Codigo corto Valor Hex Valor Decimal
Afrikaans af 0x0436 1078
Albanian sq 0x041C 1052
Arabic - United Arab Emirates ar-ae 0x3801 14337
Arabic - Bahrain ar-bh 0x3C01 15361
Arabic - Algeria ar-dz 0x1401 5121
Arabic - Egypt ar-eg 0x0C01 3073
Arabic - Iraq ar-iq 0x0801 2049
Arabic - Jordan ar-jo 0x2C01 11265
Arabic - Kuwait ar-kw 0x3401 13313
Arabic - Lebanon ar-lb 0x3001 12289
Arabic - Libya ar-ly 0x1001 4097
Arabic - Morocco ar-ma 0x1801 6145
Arabic - Oman ar-om 0x2001 8193
Arabic - Qatar ar-qa 0x4001 16385
Arabic - Saudi Arabia ar-sa 0x0401 1025
Arabic - Syria ar-sy 0x2801 10241
Arabic - Tunisia ar-tn 0x1C01 7169
Arabic - Yemen ar-ye 0x2401 9217
Armenian hy 0x042B 1067
Azeri - Latin az-az 0x042C 1068
Azeri - Cyrillic az-az 0x082C 2092
Basque eu 0x042D 1069
Belarusian be 0x0423 1059
Bulgarian bg 0x0402 1026
Catalan ca 0x0403 1027
Chinese - China zh-cn 0x0804 2052
Chinese - Hong Kong SAR zh-hk 0x0C04 3076
Chinese - Macau SAR zh-mo 0x1404 5124
Chinese - Singapore zh-sg 0x1004 4100
Chinese - Taiwan zh-tw 0x0404 1028
Croatian hr 0x041A 1050
Czech cs 0x0405 1029
Danish da 0x0406 1030
Dutch - The Netherlands nl-nl 0x0413 1043
Dutch - Belgium nl-be 0x0813 2067
English - Australia en-au 0x0C09 3081
English - Belize en-bz 0x2809 10249
English - Canada en-ca 0x1009 4105
English - Caribbean en-cb 0x2409 9225
English - Ireland en-ie 0x1809 6153
English - Jamaica en-jm 0x2009 8201
English - New Zealand en-nz 0x1409 5129
English - Phillippines en-ph 0x3409 13321
English - South Africa en-za 0x1C09 7177
English - Trinidad en-tt 0x2C09 11273
English - United Kingdom en-gb 0x0809 2057
English - United States en-us 0x0409 1033
Estonian et 0x0425 1061
Farsi fa 0x0429 1065
Finnish fi 0x040B 1035
Faroese fo 0x0438 1080
French - France fr-fr 0x040C 1036
French - Belgium fr-be 0x080C 2060
French - Canada fr-ca 0x0C0C 3084
French - Luxembourg fr-lu 0x140C 5132
French - Switzerland fr-ch 0x100C 4108
Gaelic - Ireland gd-ie 0x083C 2108
Gaelic - Scotland gd 0x043C 1084
German - Germany de-de 0x0407 1031
German - Austria de-at 0x0C07 3079
German - Liechtenstein de-li 0x1407 5127
German - Luxembourg de-lu 0x1007 4103
German - Switzerland de-ch 0x0807 2055
Greek el 0x0408 1032
Hebrew he 0x040D 1037
Hindi hi 0x0439 1081
Hungarian hu 0x040E 1038
Icelandic is 0x040F 1039
Indonesian id 0x0421 1057
Italian - Italy it-it 0x0410 1040
Italian - Switzerland it-ch 0x0810 2064
Japanese ja 0x0411 1041
Korean ko 0x0412 1042
Latvian lv 0x0426 1062
Lithuanian lt 0x0427 1063
FYRO Macedonian mk 0x042F 1071
Malay - Malaysia ms-my 0x043E 1086
Malay – Brunei ms-bn 0x083E 2110
Maltese mt 0x043A 1082
Marathi mr 0x044E 1102
Norwegian - Bokmål no-no 0x0414 1044
Norwegian - Nynorsk no-no 0x0814 2068
Polish pl 0x0415 1045
Portuguese - Portugal pt-pt 0x0816 2070
Portuguese - Brazil pt-br 0x0416 1046
Raeto-Romance rm 0x0417 1047
Romanian - Romania ro 0x0418 1048
Romanian - Moldova ro-mo 0x0818 2072
Russian ru 0x0419 1049
Russian - Moldova ru-mo 0x0819 2073
Sanskrit sa 0x044F 1103
Serbian - Cyrillic sr-sp 0x0C1A 3098
Serbian - Latin sr-sp 0x081A 2074
Setsuana tn 0x0432 1074
Slovenian sl 0x0424 1060
Slovak sk 0x041B 1051
Sorbian sb 0x042E 1070
Spanish - Spain es-es 0x0C0A 1034
Spanish - Argentina es-ar 0x2C0A 11274
Spanish - Bolivia es-bo 0x400A 16394
Spanish - Chile es-cl 0x340A 13322
Spanish - Colombia es-co 0x240A 9226
Spanish - Costa Rica es-cr 0x140A 5130
Spanish - Dominican Republic es-do 0x1C0A 7178
Spanish - Ecuador es-ec 0x300A 12298
Spanish - Guatemala es-gt 0x100A 4106
Spanish - Honduras es-hn 0x480A 18442
Spanish - Mexico es-mx 0x080A 2058
Spanish - Nicaragua es-ni 0x4C0A 19466
Spanish - Panama es-pa 0x180A 6154
Spanish - Peru es-pe 0x280A 10250
Spanish - Puerto Rico es-pr 0x500A 20490
Spanish - Paraguay es-py 0x3C0A 15370
Spanish - El Salvador es-sv 0x440A 17418
Spanish - Uruguay es-uy 0x380A 14346
Spanish - Venezuela es-ve 0x200A 8202
Sutu sx 0x0430 1072
Swahili sw 0x0441 1089
Swedish - Sweden sv-se 0x041D 1053
Swedish - Finland sv-fi 0x081D 2077
Tamil ta 0x0449 1097
Tatar tt 0X0444 1092
Thai th 0x041E 1054
Turkish tr 0x041F 1055
Tsonga ts 0x0431 1073
Ukrainian uk 0x0422 1058
Urdu ur 0x0420 1056
Uzbek - Cyrillic uz-uz 0x0843 2115
Uzbek – Latin uz-uz 0x0443 1091
Vietnamese vi 0x042A 1066
Xhosa xh 0x0434 1076
Yiddish yi 0x043D 1085
Zulu zu 0x0435 1077

FOXPRO - Obtener fuente predeterminada de Windows

Para obtener la fuente predeterminada de windows usada en los controles, se usa la función API, SystemParametersInfo, pasandole una structura del tipo NONCLIENTMETRICTS, en la cual se almacenan unas estructura LOGFONT que son las que tienen la información de las distintas fuentes usadas por Windows.


Ej.-
LOCAL lcStruc, lcDatos
LOCAL lnTam
DECLARE INTEGER SystemParametersInfo IN Win32API ;
INTEGER nTipoInfo, INTEGER nLongitud, ;
STRING @cEstruct, INTEGER lnAccion


* Creamos la estructura vacía.
m.lcStruc
= BINTOC(340, "4RS") + REPLICATE(CHR(0),336)

SystemParametersInfo(41, 340, @m.lcStruc
, 0) && SPI_GETNONCLIENTMETRICS

* Fuente de la aplicación.
m.lcDatos = SUBSTR(m.lcStruc, 309, 32)
IF
AT(CHR(0), lcDatos) > 0
m.lcDatos = LEFT(m.lcDatos, AT(CHR(0), lcDatos) - 1)
ENDIF

? "Nombre de la Fuente de widows: " + m.lcDatos

* Tamaño de la fuente.
m.
lcDatos = SUBSTR(m.lcStruc, 281, 4)

lnTam = BITNOT(ASC(SUBSTR(m.
lcDatos, 1, 1)) + ;
ASC(SUBSTR(m.
lcDatos, 2, 1)) * 0x100 + ;
ASC(SUBSTR(m.
lcDatos, 2, 1)) * 0x10000 + ;
ASC(SUBSTR(m.
lcDatos, 2, 1)) * 0x1000000)

m.lnTam = m.lnTam - BITRSHIFT(m.lnTam, 2)

? "El tamaño de la fuente de windows: " + TRANSFORM(m.lnTam)


17 marzo, 2006

FOXPRO - SQL Server - ¿Cómo acceder a una tabla Foxpro desde SQL Server en T-SQL?

Necesitas ser administrador y se hace así:
Ejemplo para leer una tabla llamada clientes en un directorio del servidor llamado d:\dbf
SELECT * FROM OpenDataSource('VFPOLEDB', 'Data Source="d:\dbf\";Mode=Read;User ID=;Password=;DSN=')...clientes

20 febrero, 2006

FOXPRO: Tratar campos FechaHora (DateTime) como Fecha (Date) :: PortalFox :: Nada corre como un zorro: "Tratar campos FechaHora (DateTime) como Fecha (Date)
Enviado por: rcano el 13 Feb 2006 - 01:05 AM
Bases de Datos El tema era que quería tratar los datos de tipo T (FechaHora) como los de tipo D (Fecha), ya que atacaba a una B.D. que no tenía tipo de dato Fecha, la solución como siempre en la ayuda ;)


Yo utilizo los objetos CursorAdapter, pues lo que he hecho ha sido usar las propiedades: UseCursorSchema con valor .T., y la propiedad CursorSchema con el valor de los campos del SELECT a ejecutar en el mismo orden de aparición de los campos.

Ej:

oCursor.Alias = 'MiAlias'

oCursor.DataSourceType = 'ODBC' && Tipo ODBC por ejemplo.

oCursor.DataSource = ghndODBC && handle de conexión Odbc.

oCursor.SelectCmd = 'SELECT Id, CampoCar, CampoFechaHora ' + ;
' FROM Tabla WHERE Id = ?pnId'

oCursor.CursorSchema = 'Id I, CampoCar C(30), CampoFechaHora D'

oCursor.UseCursorSchema = .T.

oCursor.CursorFill()


Con esto y si no me he equivocado en el código obtendríamos un cursor con el tipo Fecha en vez del tipo FechaHora. Esta misma solución me ha servido para pasar campos del tipo coma flotante (Float) a campos numéricos con un número determinado de posiciones decimales.


FOXPRO: Hacer un cursor creado mediante SPT actualizable. :: PortalFox :: Nada corre como un zorro: "

Hacer un cursor creado mediante SPT actualizable.
Enviado por: rcano el 24 Nov 2003 - 01:03 AM
Bases de Datos Es una manera de evitar las ordenes insert, update, y delete y utilizar tableUpdate() y tableRevert()


Suponemos que ya tenemos hecha la conexión SQL

.....

m.lcSQL = 'SELECT CLienteID, Nombre, Apell1, Apell2 FROM Clientes WHERE Nombre LIKE 'A%''

m.llRetorno = (SQLEXEC(m.lnHnd, m.lcSQL, 'L_Clientes') > -1)

IF m.llRetorno

CrearCursorActualizable('L_Clientes', 'Clientes', 'ClienteId')

BROWSE

TABLEUPDATE(1, .T., 'L_Clentes')

ENDIF

RETURN

FUNCTION CrearCursorActualizable

LPARAMETERS tcAlias, tcTabla, tcKeyList

LOCAL llRetorno, i, lcCampos, lcCamposUp

LOCAL ARRAY laEstruct(1)



m.tcAlias = IIF(EMPTY(m.tcAlias), '', ALLTRIM(TRANSFORM(m.tcAlias)))

m.llRetorno = !EMPTY(m.tcAlias) AND USED(m.tcAlias)

IF !m.llRetorno

RETURN .F.

ENDIF

m.tcTabla = IIF(EMPTY(m.tcTabla), '', ALLTRIM(TRANSFORM(m.tcTabla)))

m.tcKeyList = IIF(EMPTY(m.tcKeyList), '', ALLTRIM(TRANSFORM(m.tcKeyList)))



m.llRetorno = m.llRetorno AND CURSORSETPROP('Buffering', 5)

"

FOXPRO: Funcion que detecta a que base de datos pertenece una tabla DBF :: PortalFox :: Nada corre como un zorro: "
Funcion que detecta a que base de datos pertenece una tabla DBF
Enviado por: rcano el 27 Mar 2001 - 06:36 PM
Bases de Datos Hace poco preguntaron como saber a que base de datos pertenece un fichero dbf determinado.




Esta función devuelve la cadena vacia si no se encuentra, si el fichero dbf es una tabla libre, y el nombre y la ruta del DBC si pertenece a una base de datos.




FUNCTION DameDBC()

PARAMETERS tcNombreTabla

LOCAL lnCampos, lnManejador, lnArea

lnArea = SELECT()

SELECT 0

USE (tcNombreTabla) AGAIN

lnCampos = FCOUNT()

USE

lnManejador = FOPEN(tcNombreTabla)

IF lnManejador > 0

FSEEK(lnManejador, 32 + 1 + lnCampos * 32)

lcCadena = FREAD(lnManejador, 263)

if left(lcCadena,1) == CHR(0)

lcCadena = ''

ELSE

lcCadena = LEFT(lcCadena, AT(CHR(0), lcCadena) - 1)

ENDIF

FCLOSE(lnManejador)

ENDIF

SELECT (lnArea)

RETURN lc"

08 enero, 2006

Bueno pues ya tengo mi N70, que por cierto no es libre, y eso me ha molestado un poco, aunque la verdad es que no pienso, ni tengo motivos para cambiar de operador, aunque si alguien conoce algún modo de liberar el Nokia N70, le estaría agradecido que me lo dijese siempre y cuando no haya que pagar por ello.

Este es ya el último día de las vacaciones de Navidad, por lo que el lunes se vuelve a la rutina. Es decir a currar. (¿tendré una depresión post-vacacional?).

04 enero, 2006

Bueno pues es hora de jubilar mi flamante teléfono movil: Nokia 6600, despues de su servicio, pasará a la reserva en cuanto reciba mi nuevo Nokia N70, el cual espero que me haga el mismo o mejor servicio que el anterior, este teléfono a parte de tener una versión mayor del sistema operativo de Symbiam (8.0), viene con una cámara de 2 Megapíxeles, y con flash, y una cámara para video conferencias VGA, bueno las especifiaciones completas de este telefono son las siguientes:


Cobertura
Funcionamiento de modo dual WCDMA/GSM y cobertura de triple banda GSM en los cinco continentes (redes GSM 900/1800/1900 y WCDMA 2100)
Cambio automático de una banda a otra y de un modo a otro

DIMENSIONES

Volumen: 95,9 cc
Peso: 126 g
Longitud: 108,8 mm
Anchura (máx.): 53mm
Grosor (máx.) 21,8 mm


Pantalla e interfaz de usuario:

Pantalla principal en color: 176x208 píxeles, hasta 262.144 colores
Control de brillo automático Tecla de desplazamiento en cinco direcciones, dos teclas de función, tecla de aplicaciones, teclas de edición y borrado, teclas de envío y finalización, tecla multimedia para acceso instantáneo a tu aplicación principal
Pantalla de espera activa

Imaging y vídeo

Cámara de 2 megapíxeles (1.600 x 1.200 píxeles) con zoom digital 20x
Cámara VGA secundaria (640 x 480 píxeles) con zoom digital 2x
Tecla de obturador especial y cubierta protectora para la activación de la cámara
Función de llamadas por vídeo bidireccionales
Vídeos compartidos en tiempo real
Flash integrado (distancia máxima de 1,5m)
Modos de flash: activado, desactivado, automático y anti ojos rojos
Modos avanzados de cámara: imagen estática, secuencia, vídeo
Seis opciones de captura posibles, incluidas paisaje, retrato, noche y deportes
Opciones, ajuste del brillo, calidad de la imagen, temporizador, configuración del balance de blancos y tonos del color
Editores de vídeo y de imágenes estáticas
Movie Director para la creación automática de vídeos
Envío de imágenes y vídeos a la Web

Solución de impresión Nokia XpressPrint

  • Imprime fotos digitales directamente desde el dispositivo:
  • Transmite tus fotos directamente a una impresora compatible o a un kiosco de impresión mediante la tecnología Bluetooth o una tarjeta MultiMediaCard (MMC), o directamente a una impresora compatible con PictBridge a través de un cable USB
  • La aplicación de impresión incorporada es rápida y fácil de usar: sin necesidad de instalación y sin problemas
Más información en www.nokia.com/xpressprint

Reproductor multimedia RealPlayer

  • Descarga y reproduce archivos multimedia (vídeo y música).
  • Reproduce en tiempo real archivos multimedia desde portales multimedia compatibles.
  • Reproducción de vídeo en pantalla completa en el teléfono para ver las secuencias de vídeo descargadas, en tiempo real o grabadas, en un tamaño mayor.
  • Formatos de reproducción (descodificación): MP3, AAC, Real Audio, WAV, Tonos de Llamada Nokia, AMR, AMR-WB, AMR-NB, AU, MIDI, H.263, JPEG, JPEG2000, EXIF 2.2, GIF 87/89, PNG, BMP (W-BMP), MBM, MPEG-4 y eAAC+

Funciones de memoria

  • Memoria dinámica interna de 22 MB para imágenes, contactos, mensajes de texto, mensajes multimedia, tonos de llamada, imágenes, secuencias de vídeo, notas de la agenda, lista de tareas y aplicaciones.
  • Memoria ampliable: tarjeta MultiMediaCard (MMC) con doble voltaje (1,8/3 V) de tamaño reducido de 64 MB*.
  • Ranura “hot swap” para la introducción y retirada sencilla de una tarjeta MMC.
  • Nota: el lector de tarjeta MultiMediaCard (MMC) incorporado en Nokia N70 funciona con 1,8 voltios, por lo que requiere una tarjeta MMC con doble voltaje que pueda admitir 1,8 V y 3,0 V. Las tarjetas MultiMediaCard (MMC) de tamaño reducido de la marca Nokia son tarjetas con doble voltaje (vendidas por separado).
  • Nota: la capacidad de memoria de la tarjeta MultiMediaCard (MMC) de tamaño reducido incluida en el paquete de ventas puede variar en función del mercado y/o del operador de red/proveedor de servicios.

Mensajería

  • Sencillo cliente de correo electrónico con capacidad para datos adjuntos para imágenes, música y documentos (visualiza archivos jpg, 3gp, MP3, ppt, doc, excel y .pdf) .
  • Compatible con el Teclado Inalámbrico Nokia (vendido por separado).
  • Mensajería multimedia: combina imágenes, vídeo, texto y secuencias de audio para enviarlas como MMS a un PC o teléfono compatible; utiliza MMS para contar tus historias a través de una presentación con varias diapositivas.
  • Adaptación automática de tus imágenes megapíxel al formato MMS (tamaño máximo de los datos adjuntos: 300 KB, dependiendo de la red).
  • Mensajería de texto: admite SMS concatenados, postales electrónicas, listas de distribución de SMS.
  • Texto predictivo: admite los principales idiomas de Europa y Asia-Pacífico.
  • Mensajería instantánea.

Radio Visual

  • Escucha música e interactúa con tus emisoras de radio favoritas
  • Entérate de la canción que está sonando, de su cantante y más información sobre el artista
  • Participa en concursos y responde a encuestas, vota por tus canciones favoritas
  • Descarga las canciones que compras directamente en tu teléfono
Más información en www.visualradio.com

Conexiones

  • Tecnología Bluetooth integrada v.1.2
  • USB 2.0 de alta velocidad a través de interfaz Pop-Port™
  • Conexión con Nokia PC Suite a través de USB y la tecnología Bluetooth
  • Sincronización local de los contactos y la agenda con un PC compatible por medio de una conexión compatible
  • Sincronización inalámbrica a distancia
  • Envía y recibe imágenes, secuencias de vídeo, gráficos y tarjetas de visita a través de la tecnología Bluetooth
  • Perfiles con conexión Bluetooth: Perfil de Impresión Básica (BPP) con las aplicaciones Image Print o Info Print, Perfil de Dispositivo de Interfaz Humana (HID) con la aplicación del Teclado Inalámbrico Nokia

Navegación

  • Navegador multimodo WAP 2.0 XHTML/HTML
  • Compatibilidad Web optimizada con capacidad para HTML 4.01, incluidos elementos como mapas de imágenes, imágenes de fondo y marcos
  • Capacidad para un subconjunto de JavaScript 1.5 que incluye las funciones más utilizadas en Internet
  • Envío de archivos a través de HTTP utilizando formularios HTML estándar
  • Tecnología Small Screen Rendering opcional con un estilo de desplazamiento de avance/retroceso de página más rápido
  • Modo de pantalla completa, barra de estado de descarga y lista de historial adaptable
  • Vídeo en tiempo real 3GPP
  • OMA DRM 1.0: incluye bloqueo del reenvío para la protección del contenido, entrega combinada, entrega por separado y superdistribución

Transmisión de datos

  • WCDMA 2100 con voz y paquetes de datos simultáneos (PS velocidad máxima UL/DL= 128/384 kbps, CS velocidad máxima 64 kpbs)
  • EGPRS, clase B, intervalos múltiples clase 10 (UL/DL = 118,4/236,8 kbps)
  • Nota: las velocidades alcanzadas realmente pueden variar en función del soporte de la red
  • GPRS, clase B, intervalos múltiples clase 10
  • Códecs de voz: FR, EFR, WCDMA y GSM AMR
  • Transmisión de datos de un teléfono de la Serie 60 a otro

Administración de llamadas

  • Función “Pulsa y habla” a través de la red celular (PoC)
  • Contactos: base de datos de contactos avanzada que admite múltiples datos de teléfono y correo electrónico por registro, también imágenes en miniatura y grupos
  • Marcación rápida
  • Registros: guarda la lista de tus llamadas enviadas, recibidas y perdidas
  • Rellamada automática
  • Respuesta automática (funciona sólo con kit manos libres portátil o kit de coche compatible)
  • Admite número fijo de marcación, que sólo permite las llamadas a los números predefinidos
  • Llamada multiconferencia
  • Aplicaciones Java
  • Java™ MIDP 2.0, CLDC 1.1 (Configuración Limitada de Dispositivos Conectados (J2ME))
  • Descarga inalámbrica de aplicaciones y juegos basados en Java™
  • Otras aplicaciones

Administración de la información personal

Las funciones avanzadas de administración de la información personal de la Serie 60 incluyen agenda, contactos, lista de tareas e impresión de la información personal

Funciones de voz

  • Marcación por voz independiente de la persona que habla
  • Comandos de voz
  • Grabadora de voz
  • Altavoz manos libres integrado


Servicios digitales

  • Aplicaciones Java ™ y Symbian disponibles en Nokia Software Market
  • Gráficos, iconos, animaciones, logotipos
  • Juegos: posibilidad de descargar nuevos juegos
  • Tonos de llamada: tonos reales, tonos polifónicos
  • Temas: posibilidad de descargar nuevos temas

Contenido del paquete de venta Nokia N70
  • Tarjeta MultiMediaCard (MMC) MU-1 de 64MB
  • Adaptador para ranuras de tarjeta MMC de tamaño normal
  • Kit Manos Libres Estéreo HS-3
  • Batería Nokia BL-5C
  • Cargador Rápido Nokia AC-4
  • Cable de Conectividad Nokia (USB) CA-53
  • CD-ROM con software (PC Suite y el paquete Adobe)
  • Guía del usuario, Guía rápida y Guía de aplicaciones adicionales
Nota: pueden existir diferentes configuraciones disponibles de la tarjeta MultiMediaCard (MMC) dependiendo del país o de la configuración del operador

Alimentación

Batería: Batería de Ion Litio 970mAh BL-5c
  • Tiempo en conversación: Hasta 3,5 h.*
  • Tiempo en espera: Hasta 11 días*

Batería: Batería Ion Litio 760mAh BL-5B

  • Tiempo en conversación: Hasta 3 h.
  • Tiempo en espera: Hasta 12 días*