Siguiendo con este hilo decidi crearme un pequeño programa para facilitarme la tarea de descargar las imagenes. En mi caso en particular tengo un directorio llamado "recursos" cuya estructura es algo asi:
Código Delphi
[-]
_Recursos
_Iconos --> * .ico
_Imagenes --> *.png
_16
_24
_32
_48
_64
_72
_96
_128
Entonces si miramos por ejemplo el enlace a un .png de IconArchive tenemos esto:
Donde el 128 que esta en negrita es el tamaño de la imagen. Osea que si cambio ese 128 por 96 tengo el .png de 96 pixeles.
Es decir que con solo tener un enlace ya puedo armarme los restantes
Luego usando los componentes INDY puedo descargarme los archivos a mi directorio Imagenes, cada uno en su carpeta correspondiente
Enlace a repositorio GitLAB
Si bien es algo medio pavo, decidi tomarme su diseño "en serio" y aprovechando que estuve leyendo mucho a
Nick Hodges (blog viejo) y tambien en su
nuevo blog aplicar algunas buenas practicas de programacion, como por ejemplo el uso de interfaces (hasta ahora no habia diseñado ninguna), tratar de mantener las conexiones entre las distintas entidades lo mas "delgadas" posible (usando interfaces
), intentar no tener ninguna dependencia en la clausula uses de la seccion interface (tratar de poner en lo posible siempre en implementation), el uso de dependency injection (por ejemplo para crear una instancia en ves de llamar a un constructor invoco a un metodo de una
factory, pasandole un poco de informacion, en este caso la URL de la que quiero descargar, para que ella me retorne la clase mas adecuada).
Lo he desarrollado en XE7, no use ninguna biblioteca/componentes de terceros. Supongo que con muy pocas modificaciones deberia servir para versiones de Delphi anteriores a XE. Es una aplicacion VCL pero las unidades de codigo que realizan el trabajo deberian funcionar perfectamente con firemonkey, lo unico que habria que hacer entero es el form principal (no se dejen intimar por mi form vcl con un combo box y un boton de download
)
En fin, no creo que sea perfecto pero creo que es bastante mas limpio de lo que suelo programar y estoy bastante contento
. Tambien quiza le sirva a algun compañero para aprender algo. Sepan tambien que las criticas o algo que quieran señalar son bienvenidas. Por otro lado pueden usarlo como quieran, modificarlo, extenderlo, etc. Clonen el repositorio (fork) y manos a la obra
Saludos!