Pequeño parón…

febrero 20, 2008 en Entrada Diario

Me tomo un respiro… y durante un pequeño tiempo tendré que interrumpir el blog, muy a mi pesar. :-(

Me gustaría deciros que me voy de vacaciones, a tomar el sol en una playa desierta, jeje pero lo cierto es que he tenido en la semana anterior un accidente, mientras practicaba un poco de deporte, y del resultado del mismo tengo fracturado el brazo derecho. Así que casi es un periodo de vacaciones pero forzadas donde solo voy a poder atender las cosas indispensables y del trabajo.

En fin… os pido perdón por este pequeño respiro, y espero que en unas semanas pueda recuperarme para seguir compartiendo con todos vosotros este pequeño anecdotario que se ha convertido el blog.

CodeGear provee 1 millón de licencias de sus herramientas de desarrollo al gobierno Ruso.

febrero 17, 2008 en Delphi, Enlace interesante, Entrada Diario, Noticias, Noticias Delphi

Leído en el Rinconcito de Delphi con fecha 12 de Febrero:

CodeGear provee 1 millón de licencias de sus herramientas de desarrollo al gobierno Ruso.

El acuerdo cubre los productos Delphi y C++Builder que se utilizarán para reforzar la educación en tecnologías de la información. Esta operación que consolida el posicionamiento de las herramientas de desarrollo de CodeGear, se ha realizado con la Agencia Federal Rusa de Educación, la cual ha solicitado 1 millón de licencias de los productos Delphi y C++Builder.

Básicamente está es la noticia y puede ser ampliada si leeis el boletín de febrero, que recientemente ha sido distribuido mediante correo electronico a los suscriptores. Coincido con Jose Luis Freire en que ha sido un buen golpe de efecto de Codegear, al cerrar una operación que no solo va a aportar unos beneficios económicos importantes sino potenciar ampliamente sus herramientas (básicamente entran en la operación Delphi, Delphi Net y C++ Builder).

A nadie se le escapa que un millon de licencias son muchas… Suponen muchos desarrolladores tirando de ese hilo invisible que las mantiene vivas… porque a nadie se le escapa tambien que unas herramientas de desarrollo como éstas, sin programadores detrás, son como las lenguas muertas, como el latín, que ya nadie recuerda y solo se usa en los actos oficiales de la Iglesia… :-)

Os aconsejo la lectura de esta noticia en el boletín. No os la perdais.

Jugar al escondite…

febrero 3, 2008 en Artículos, Delphi, Entrada Diario

Llevo un rato pensando en como traducir las palabras “CODE FOLDING” para poder escribir esta pequeña entrada. No se si la traducción correcta es “código encarpetado”. Y la verdad es que, aunque no suena demasiado bien, el concepto ya se intuye y promete ser util, como todo lo que intento compartir con vosotros.

Pero a lo que vamos…

¿Qué es eso de Code Folding…?

Pues vereis, desde Delphi 2005, se introduce una nueva característica en el editor de Delphi, que nos va a permitir esconder o visualizar en bloques definidos nuestro codigo, facilitando el trabajo en cada uno de los modulos que generamos. Cada módulo presenta menos lineas a nuestra vista y podremos trabajar mas cómodamente.

El entorno ya facilita parte del trabajo agrupando de forma automatica distintas zonas del módulo, inclusive cada uno de los procedimientos y funciones de la implementación, pero -y esto es quizás la parte mas práctica- vamos a poder crear nuestros propios apartados, que son llamados REGIONES. La idea es práctica y es muy fácil de poner a la práctica.

Venga… no seais perezosos. :-)

Abrid vuestro editor de Delphi 2007 y vamos a verlo.

Para activar o desactivar esta característica, debéis pulsar las teclas [CONTOL] +[SHIFT]+ K + O respectivamente.

Esta es la imagen que nos muestra el editor si está desactivada. Podeis ver que no muestra los símbolos +/-

Si volveis a pulsar la misma combinación de teclas, apareceran expandidos los distintos nodos, mostrando el siguiente aspecto. Ahora ya muestra los símbolos +/- en la raiz de cada nodo creado.

Así que, ya podeis apreciar que al colapsar algunos de los nodos, tal y como hemos hecho en la imagen que ahora veis un poco mas abajo, lo que logramos es ocultar de nuestra vista detalles innecesarios, facilitando enormemente nuestro trabajo.

Finalmente, y esta es la parte que mas me gusta, al poder crear una región, vamos a tener la capacidad de organizar visualmente nuestro código de acuerdo al mejor criterio.

Crear una REGION es sencillo. Inserta la directiva {$REGION ‘Nombre de la region’} , encabezando las lineas que deseas agrupar. Y cierras la última linea añadiendo {$ENDREGION}. Así de facil.

{$REGION 'EVENTO CREACION FORMULARIO'}
procedure TForm1.FormCreate(Sender: TObject);
begin
//mensaje de bienvenida
ShowMessage('Hola Mundo');
end;
{$ENDREGION}

Así que al colapsar los nodos asociados a las regiones, podemos tener una vista de nuestro módulo donde se agrupen visualmente los distintos procedimientos y funciones, facilitando la lectura del código y nuestra navegación a traves del mismo.

Estas son las combinaciones de teclas disponibles:

  • [Control] + [Shift]+ K + O -> Activa o desactiva la característica Code-Folding.
  • [Control] + [Shift]+ K + A -> Expande todos los bloques de código
  • [Control] + [Shift]+ K + E -> Colapsa el siguiente bloque.
  • [Control] + [Shift]+ K + U -> Expande el siguiente bloque.

No te olvides…

febrero 1, 2008 en Advertencia, Artículos, Consejo, Entrada Diario, Velneo

… que también puedes crear un DSN del sistema mediante código.

¿Qué por qué lo digo?

Bueno… el caso es que estaba leyendo algunas preguntas del foro de Velneo antes de irme a dormir y la única que he visto con cero respuestas la hacía un compañero que firmaba como RAM (¡igual es el diminutivo de Ramiro porque seguro que estaréis pensando que tiene algo que ver con las memorias…!). Leo el título y mecachis… “Odbc.dll“.

Coñe, si era precisamente de lo que hablé en una de las últimas entradas y también, precisamente, el compañero preguntaba un tema que no salió pero que perfectamente, de haberlo pensado, lo hubieramos comentado. ¿Recordais que en dicha entrada “Atrevete a conocer a Velneo. Parte 2” compartiamos un pequeño video donde creabamos un DSN de Sistema desde el panel de control?.

Veamos… Es muy tarde y estoy agotado, pero vamos a dar unas pinceladas para que RAM encuentre la información. :-)

En primer lugar, vamos a ver que pasos podríamos seguir…

El primero podria ser averiguar que función nos va a permitir que podamos crear el DSN. Así que tras una pequeña busqueda en Internet hemos averiguado que existe una libreria ODBCCP32.DLL, que exporta una función que podemos invocar para obtener nuestro proposito. Esta función es SQLConfigDataSource.

Así que en este punto, podrías repasar la entrada Primeros pasos tras el curso… en la que hablabamos de como declarar nuestra librería en el entorno de Velneo para luego poder utilizarla desde una función o un proceso.

Veamos la cabecera de la función:


function SQLConfigDataSource(hwndParent: HWND; fRequest: WORD; lpszDriver: LPCSTR; lpszAttributes: LPCSTR): BOOL; stdcall; external 'ODBCCP32.DLL';

Nos faltaría saber que debemos indicar en cada parámetro:

hwndParent -> Hace referencia al handle o manejador. Podemos pasarle el valor cero (0).

fRequest -> Hace referencia al tipo de operación y existen definidas a tal efecto un grupo de constantes.

Un segundo… que las vamos a detallar:

  • Añadir un DSN ->ODBC_ADD_DSN = 1
  • Editarlo ->ODBC_CONFIG_DSN = 2
  • Eliminar un DSN ->ODBC_REMOVE_DSN = 3
  • Añadir una DSN de sistema ->ODBC_ADD_SYS_DSN = 4
  • Modificar un DSN de sistema ->ODBC_CONFIG_SYS_DSN = 5
  • Eliminar un DSN de Sistema ->ODBC_REMOVE_SYS_DSN= 6;

Finalmente, los parametros lpszDriver, lpszAttributes harían referencia a la cadena que identifica al driver y a la cadena de atributos de la que nos valemos para configurarlo. Dicha cadena es diferente en función del tipo de driver que consideremos. En el caso por ejemplo de una base de datos de Access, el parámetro driver podria ser semejante a la cadena: ‘Microsoft Access Driver (*.mdb)’. Y en cuanto a los atributos, la cadena de texto debería enlazar un conjunto de pares de atributos/valor, algunos como los siguientes:

UID=miUsuario
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=MS Access
DriverId=25
DefaultDir=C:MisProyectosbbdd
DBQ=C:MisProyectosbbddmiBaseDeDatos.mdb

Un forma que os permitiría saber que atributos podeis necesitar para crear vuestra conexión, podría ser la de crear un fichero DSN y para ello, deberíais abrir el Panel de Control -> Herramientas Administrativas -> Origenes de Datos y añadir un nuevo fichero haciendo clic en ADD, que os permitirá, una vez elegido el driver y los valores de conexión, generar un fichero con extensión DSN que contiene los atributos comentados y que puede ser utilizado para crear una conexión.

El resto ya es un poco en función de pasar mas o menos trabajo parametrizando las funciones de Velneo, para permitiros añadir/modificar o borrar un DSN tanto de Usuario como de Sistema.

Espero Ram que te pueda ayudar.

Aquí te dejo unos enlaces que apuntan algunos documentos de microsoft en los que se comenta el tema y que estoy seguro que te ayudaran a introducir la creación de DSN mediante código desde tus mapas de Velneo.

XL: How to Use File DSNs and DSN-less Connections

http://support.microsoft.com/search/default.aspx?query=sqlconfigdatasource&catalog=LCID%3D1033&spid=&mode=r&lsc=0

:-)

Ahora sí que me voy a dormir… ;-)