Monday, October 20, 2008

Cuando uno no quiere trabajar de más

Estoy escribiendo un nuevo librito sobre Sudokus para la Editorial Época. En esta ocasión la idea es hacer un libro con Sudokus difíciles, es decir, "Sólo para Tigres". El caso es que por cuestiones editoriales y por el nicho de mercado al que va enfocado el libro en cuestión, 100 Sudokus parecen ser adecuados.

Para generar los Sudokus usé el software de mi pupilo, José Luis Calderón, que hizo un buen trabajo. No obstante, la generación de los acertijos tiene un problema, necesitan ser guardados como imágenes. No me convencía esa idea pues tenía que hacer la labor de copiar "a mano" cada uno de los diagramas creados por el sistema. Entonces modifiqué ligeramente la salida del programa de Calderón para incluir un archivo con los sudokus creados en modo texto. En cada línea de cada sudoku hay diez símbolos diferentes: del 1 al 9 y el símbolo del espacio (que por motivos prácticos uso mejor el cero ("0"). Ese archivo de salida lo paso por mi software generador de diagramas de sudokus, el cual me salva las imágenes jpg de cada uno de ellos de manera automática. Así, todos los diagramas son idénticos en tamaño.

Muy bien, de pronto ya tenía en una carpeta 100 diagramas y 100 soluciones. Ahora había que insertarlos en el documento de Word y poner cada uno en su lugar. Para hacer la situación más complicada (pero quizás más entetenida), los diagramas de los ejercicios de sudokus son de un tamaño, ocupando dos por página, pero las soluciones no tienen que ser tan grandes (así puedo poner seis diagramas/solución en una página).

La pregunta era ¿cómo hacer esto automáticamente? para ello recurrí a los poderes de OLE (Object Linking and Embedded), que es una tecnología de Microsoft para poder comunicar unos programas con otros (antes se usaba DDE - Data Dynamic Exchange, pero ese sistema tiene una interfaz oscura, pesada y mal documentada). Como de hecho, en mis clases muestro como hacer para comunicar un programa en Delphi con Word, de manera que se controle el procesador de palabras a través de la aplicación escrita por mí desde Delphi, pensé que sería fácil hacer un programita que incluyera, en el tamaño que yo quisiera, las imágenes dentro del documento de Word.

Como no tenía mucha idea de exactamente cómo hacer la parte de la inclusión de las imágenes en el tamaño deseado, recurrí a www.experts-exchange.com, uno de los mejores sitios para prácticamente todas consultas en todos los lenguajes de programación. Puse mi pregunta y un usuario, con categoría de "GURÚ", me mostró el camino usando un contenedor OLE (OleContainer). Me sorprendí del poder que da este componente si se entiende cómo usarse. Me apliqué y tuve aún que consultar con el gurú un par de problemas que me daba su código de ejemplo. Finalmente todo quedó en su lugar y ahora puedo insertar N imágenes en mi programa sin ningún inconveniente.

Así, en lugar de pasarme un par de horas insertando imágenes en Word dando N clicks del roedor, doy click sobre un botón de mi aplicación y el programa hace todo: Abre Word, crea el documento, inserta las imágenes y me deja listo para que trabaje con él.

Más de uno podrá decirme que el tiempo que tardé en entender cómo insertar las imágenes quizás habría sido el tiempo que tardé en hacer los programas que he mencionado. Sin embargo, incluso siendo así, aprendí mucho más en ese tiempo que haciendo la mecánica labor de dar clicks aquí y allá para que las imágenes quedaran en su lugar. Así que doble beneficio y todo por no querer trabajar de más.

No comments: