Ya hace unos días se anunció que a primeros de Febrero se liberaría la librería principal de Lua4Delphi. Si queréis más información sobre este proyecto, que parece interesante podéis revisar la página web.
En esta entrada del blog monkeystyler leo una entrada interesante titulada “My primer componente FireMonkey: TBitmapSpeedButton”. Creo que es una lectura recomendable para todos aquelos que quieren trabajar con FireMonkey y entender mejor el funcionamiento de los componentes.
Para los que todavía utilizáis el Notepad de Windows (supongo que pocos a estas alturas) os recomiendo Notepad++. Es un fantástico editor de texto (que utilizo desde hace mucho tiempo). Tiene infinidad de características, y entre ellas un sistema de plugins bastante elaborado. Esta reseña viene a colación, de una pregunta que he visto estos días en “The Delphi Geek” (recomendable) sobre “posibles editores de Wiki”.
Una de las respuestas es que en Notepad++ existe un plugin (entre los muchos que hay), que permite realizar esto. El “wiki editor plugin”, que permite realizar esta tarea y además está desarrollado en Delphi. En la página podéis descargar no sólo el plugin, sino también el código Delphi. Por si alguien se anima… ;-)
En el blog de Zarko, leo una entrada interesante y que tiene mucho que ver con preguntas que aparecen de forma recurrente en los foros. Es muy habitual ver y leer preguntas sobre librerías o componentes que posibiliten trabajar con ficheros PDF. ¿Cómo generarlos?, ¿cómo abrirlos? ¿cómo imprimirlos?
La entrada nos presenta la librería Quick PDF Library en su versión LITE. Podéis ver las cabeceras de los métodos disponibles y algo de código de cómo utilizarla e instalarla.
Por último, leo hoy en los blogs de Embarcadero, que todos los programadores Delphi estamos invitados a celebrar en breve, un cumpleaños. La versión de Delphi 1.0 se liberó el día 14 de Febrero de 1995.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
En este caso ha sido un poco más larga la espera desde mi última publicación. Diferentes motivos y diferentes razones han hecho que este impás haya sido un poco mayor.
Aprovecho desde aquí, para desearos un buen año; Que este que comenzamos ahora sea para todos nosotros mejor que el anterior.
Empiezo por reseñar sobre la última actualización de IDE Fix Pack de Andy. llevo tiempo usándolos con diferentes IDE’s de Delphi al igual que otras utilidades que podemos encontrar en su web, como las DDevExtensions. Si no las conocéis os recomiendo que al menos os deis una vuelta por su página.
También quiero resaltar, la serie de artículos de Rodrigo sobre WMI (a modo de recopilatorio). Si alguna vez necesitáis encontrar información sobre el tema, a parte de aquí en el blog, donde podéis encontrar algunas entradas al respecto y los componentes GLibWMI, el lugar al que tenéis que ir a parar es al blog de Rodrigo (The Road to Delphi).
La información sobre el tema es muy grande. Os coloco los enlaces a algunas de las últimas entradas relacionadas, aunque también podéis encontrar herramientas como “WMI Delphi Code Creator” y otros artículos interesantes.
Aparte de las explicaciones de determinadas partes del código, se puede descargar la aplicación (tanto el ejecutable, como los fuentes). Además de encontrar otras referencias, como librerías de objetos a utilizar.
Cierro aquí esta breve entrada.
Como siempre los comentarios y sugerencias son bien recibidas.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
En esas entradas he realizado un primer acercamiento a estas tecnologías, he dado un repaso y he testeado por encima algunas de sus características. La idea ahora, es ir un poco más allá.
He leído en algunos foros opiniones sobre que FireMonkey está «a medias» o «incompleto». Respeto esas opiniones, pero personalmente no estoy de acuerdo. Creo (y aquí es donde puede estar el error ) que se compara a FireMonkey con la VCL y las características que posee esta. Desde ese punto de vista sí puede parecer que «le faltan cosas» y eso puede dar una sensación de que es una tecnología inacabada.
Pienso que el objetivo final de FireMokey no es, llegar a conseguir todas las características con las que cuenta la VCL. Es algo totalmente nuevo que avanza en una dirección paralela, algunas cosas tendrá sentido «adoptarlas» y otras no, pero a mi entender eso es «añadir» no «completar».
Hace tiempo publiqué en el blog un pequeño ejemplo de cómo cargar ficherosGPX (alternativa generandoKML) procedentes de dispositivos GPS y visualizar esos tracks o rutas en una Aplicación Delphi. Me he decidido por intentar realizar esta pequeña aplicación utilizando FireMonkey.
TActionList, ¿dónde está?
Lo primero que me he encontrado, aunque en realidad ya lo había visto en las primeras pruebas, es que no puedo utilizar un TActionList. Este componente no está en la paleta donde debería estar o donde uno esperaría encontrarlo. Una cosa que sorprende es que los componentes estandard de FireMonkey sí poseen la propiedad Action para poder asignar un elemento. No es que sea imprescindible, pero es muy cómodo.
Lo siguiente que me planteo es la importación de datos desde un fichero GPX. En su día la hice utilizando el XMLmapper, pues los ficheros GPX son en realidad ficheros XML. Me propongo utilizar el mismo modelo utilizado anteriormente; Importar el fichero GPX a un TClientDataset para getionarlo después de forma local.
TXMLTransformProvider, ¿dónde está?
Al igual que me ha pasado anteriormente, coloco un TClientDataset y cuando voy a colocar el TXMLTransformProvider no está donde esperaba encontrarlo.
He realizado un par de pruebas y lo más curioso es que creando y configurando el componente «a mano» funciona perfectamente. Con un código como este y configurando los campos apropiados en diseño el componente funciona perfectamente, importa los datos e incluso se pueden configurar LiveBindings para mostrar el resultado en un Grid.
Una vez activado el componente la importación se realiza sin problemas.
He dejado de lado esta cuestión por ahora; Tal vez más adelante me detenga para probar más cosas, pero para seguir adelante he realizado la importación de datos «manualmente», de forma que una vez conseguidos los datos en el TClientDataSet y puedo continuar a tratarlos.
El siguiente paso es colocar los elementos en el formulario, tal como van a ir distribuidos. Una cosa a la que hay que acostumbrarse es que los componentes de FireMonkey no poseen la propiedad
Anchors, que tan útil nos es utilizando componentes de la VCL. A cambio podemos ver que la propiedad Align posee una cantidad de valores superior que nos permite realizar más cosas. En este caso utilizamos la propiedad Align y la propiedad Padding para ir fijando los controles al formulario tal y como deseamos.
Se trata de conseguir lo mismo, pero por un camino diferente…
Una vez que los componentes básicos ya están colocados necesito plasmar en pantalla una serie de coordenadas. Para ello he escogido el componente TPath. La idea es que permite representar una serie de puntos que forman una línea o camino.
La potencia y la velocidad llaman la atención, pero también la sencillez.
Basta con soltar el componente en pantalla y utilizando la propiedad Data, colocar lo siguiente para conseguir una imagen (o path) como el que veis más abajo (se puede hacer en diseño utilizando un pequeño formulario de edición):
M 0,2 L 1,2 L 1,5 L 2,5 L 2,2 L 3,2 L 1.5 0 L 0,2
Si lo pensáis un poco, no son más que coordenadas precedidas por el tipo de «unión» o «elemento» que queremos utilizar entre ellas; la Primera M se refiere a MOVER, las L se refieren a LINEA.
Es así de sencillo y así de potente.
Un código como este, os podéis imaginar lo que dará como resultado:
for I :=-360to360dobegin
n :=DegToRad(i);
res :=Sin(n);//res := Sin(n) * Sin(n);//res := Tan(n);if(Str ='')thenbegin
Str :='M '+FloatToStrF(n, ffFixed,35,10)+' '+FloatToStrF(res, ffFixed,35,10);endelsebegin
Str := Str +','+'L '+FloatToStrF(n, ffFixed,35,10)+' '+FloatToStrF(res, ffFixed,35,10);end;end;
Path1.Data.Data:= Str;
for I := -360 to 360 do begin
n := DegToRad(i);
res := Sin(n);
//res := Sin(n) * Sin(n);
//res := Tan(n);
if (Str = '') then begin
Str := 'M ' + FloatToStrF(n, ffFixed, 35, 10) +
' ' + FloatToStrF(res, ffFixed, 35, 10);
end
else begin
Str := Str + ',' + 'L ' + FloatToStrF(n, ffFixed, 35, 10) +
' ' + FloatToStrF(res, ffFixed, 35, 10);
end;
end;
Path1.Data.Data := Str;
Con esto más o menos ya está todo completo. Los componente básicos ya están escogidos.
He utilizado LiveBindings para poder mostrar los datos en de las coordenadas en un TStringGrid; También he aplicado un estilo visual a la aplicación y por último una par de animaciones para dar más vistosidad a la visualización del track.
La conclusión que saco, es que sí se pueden hacer aplicaciones con FireMonkey, lo que pasa que tal vez en algunos aspectos debamos pensar las cosas con otro enfoque o hacerlas de otra manera. Seguramente está en los planes de Embarcadero (eso espero) ampliar sus funcionalidades y el número de componentes.
Por último comentar que me he quedado con la ganas de poder compilar la aplicación y generarla para iOS, pero por ahora, no dispongo de los medios para hacerlo. Sobre todo me queda la duda de qué hubiera pasado con una aplicación, de un programador como yo con «visión de Windows», al compilarla en MAC.
¿Algun error? ¿Algun problema? ¿Warinigs? ¿Algun elemento que no puedo utilizar? ¿?¿?¿?
Si alguien se anima a hacerlo, le agradecería que nos comunicara el resultado y me enviara alguna pantallita. ;-)
Os dejo los enlaces al código fuente y al ejecutable (este último comprimido con UPX) junto con algunos ficheros GPX que podéis usar para las pruebas.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
Esta semana pasada ha sido “intensa”. Se han celebrado las presentaciones de RAD Studio XE2 en Barcelona (que es a la que ha asistido yo), en Madrid y en Lisboa. En este caso de la mano de DanySoft (partner oficial en la península) y con la colaboración de Pawel Glowacki.
Interesantes, como siempre, aunque esta vez ha sido “algo especial”, por varias razones.
No cabe duda de que esta versión de Delphi (Rad Studio), es la que más expectación ha generado desde hace mucho tiempo. No hay más que ver los foros, las páginas web, los blogs y las salas de las presentaciones. Llenas, como yo no había visto en ninguna presentación antes. Conozco compañeros que este año se han quedado sin poder asistir debido a que se ha completado el cupo de asistentes (*).
En mi caso, aprovecho las presentaciones para ver y saludar a antiguos compañeros y gente que conozco que trabaja como yo,con Delphi. En esta ocasión además, ha estado en Barcelona Salvador Jover (Delphi Solidario), con el que tengo una estrecha relación por temas blogs y relacionados con la Comunidad Hispana de Delphi.
Especial también, en este caso, porque gracias a la gente de Danysoft,Salvador y yo, hemos tenido la oportunidad de charlar un rato con Pawel Glowacki después de las presentaciones; Hemos podido formularle algunas preguntas y trasladarle algunas inquietudes que vosotros nos habéis transmitido (ya sea a través de los blogs, como a través de los foros del Clubdelphi) tanto a mi, como a Salvador (**).
Recopilando información del evento aquí os dejo algunos enlaces.
El tema de la entrevista con Pawel, es un tema aparte. Salvador y yo tenemos a nuestros mejores hombres trabajando en ella (es decir, estamos él y yo ;-D ). En cuanto la tengamos disponible la publicaremos en los blogs y en los foros.
Danysoft ha publicado ya, en su página web, las presentaciones (documentos) que han utilizado en las presentaciones. Echadles un vistazo. Interesantes sin duda,tanto para los que hemos podido asistir, como los que no habéis tenido oportunidad de hacerlo.
Por último as adjunto algunas capturas, de las presentaciones (tal vez algunas de ellas ya las podáis encontrar en los documentos PDF), otras son capturas de las demostraciones.
Aplicando estilos a aplicaciones existentes:
Una del diseñador de estilos:
Código de ejemplo, para ejecutar animaciones en FireMonkey. Como veis aunque las animaciones son bastante complejas, el código por el contrario, es bastante simple.
Una imagen de un proyecto generado en Delphi, cuando se está ejecutando (compilado con
XCode)
en OSX y generando salida para iPhone, con el “IPhone Simulator”.
En este caso otra de las herramientas de RAD Studio (se trata de RAD PHP) con el diseñador para iPhone; Aquí desde el entorno RADPHP.
Vista en diseño de Delphi XE2 cuando estamos trabajando con elementos 3D. Los Layer3D nos permiten en diseño modificar las vistas en 3 dimensiones de los elementos que tenemos en el formulario (arrastrando esos elementos de color que hay en la imagen inferior).
Aquí podéis ver una imagen de la pantalla (y parámetros de configuración) del acceso a OSX desde el entorno de Delphi.
Por último, una imagen de la aplicación que hemos visto antes, ejecutando en un entorno OSX.
La mayoría de los ejemplos de las presentaciones se pueden encontrar en los que se adjuntan con RAD Studio XE2 o desde el repositorio de Embarcadero.
(*) Hoy mismo Danysoft ha realizado online la presentación de la versión XE2, para la gente que no pudo asistir “en vivo”; Supongo que en breve la tendrán disponible como video en su canal de youtube.
(**)Espero que en breve, podamos tener disponible para publicar, la entrevista con Pawel Glowacki. La publicaremos en los Blog, en Facebook y en los foros. Paciencia…. ;-D
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
He probado algunos sistema de traducción para programas Delphi, entre ellos he de destacar los componentes de TsiLang Component Suite , que me parecen muy buenos y completos.
Estos días necesitaba un paquete gratuíto y revisando páginas y foros he llegado a GNU Gettext for Delphi and C++ Builder. Me parece un paquete muy sencillo de utilizar y por lo que he probado hasta ahora, cómodo y eficaz.
En esta entrada voy a explicar desde cero los pasos que he seguido para conseguir una aplicación multiidioma.
Una vez descargado el ficchero e instalado tendremos lo necesario para generar nuestros ficheros de traducción e integrarlos en el programa.
NOTA: Hay una versión especial compatible con Delphi 2009 que podemos descargar desde aquí, si estamos utilizando esta versión de Delphi..
Si se ha instalado correctamente, nos pedirá reiniciar el sistema.
Una vez instalado, si desde el explorador de Windows pulsamos Click derecho con el ratón sobre una carpeta, nos debería aparecer una nueva opción «Extract Translations to Template«.
(2) Poedit for Windows
Necesitaremos una herramienta para poder traducir (ya seamos nosotros o una tercera persona) los ficheros de traducción a los diferentes idiomas. Esto está pensado para que esa posible tercera persona (que puede no tener Dephi instalado) pueda traducir un fichero sólo con esta herramienta (y el fichero .po como veremos después).
Una vez realizados estos dos pasos previos, crearemos un pequeño proyecto de ejemplo donde realizar las pruebas.
Para ello, desde Delphi comenzamos una nueva aplicación y en el formulario generaremos algo similar a esto:
TRADUCCIÓN
(a) Preparar el proyecto.
Una vez tenemos nuestra aplicación funcionando debemos preparnos para comentar lo necesario para traducción.
(1) Lo primero es añadir la unit gnugettext.pas a nuestro proyecto. Las units que usesn traducciones deberán tenerla en el uses.
NOTA: Si habéis realizado la instalación estandard debería estar en: «c:\Archivos de programa\dxgettext\gnugettext.pas»
(2) Añadir al OnCreate de nuestros formularios el siguiente código:
// Traducir el formulario
TranslateComponent(Self);
// Traducir el formulario
TranslateComponent(Self);
(3) Preparar la estructura de directorios para organizar las traducciones. Dentro del directorio de la aplicación crearemos una carpeta llamada locale y dentro de ella un árbol de directorios similar al que se ve en la imagen.
En este ejemplos, yo voy a utilizar 4 idiomas (es, en, fr, ca); Contando que el original va a ser el Español(es) debemos crear la estructura para los otros 3 (inglés, francés y catalán). Nos quedará un arbol de directorios como este:
(b) Generar fichero de traducciones (.po)
(1) Para generar el fichero de traducciones del proyecto se debe extraer todas las cadena «traducibles» y almacenarlas en un fichero; Para ello basta con que, desde el explorador de Windows, pulsemos Click derecho sobre la carpeta del proyecto y seleccionemos la opción «Extract Translations to template».
Esto generará un fichero default.po en el directorio de la aplicación.
(2) Copiaremos este fichero dentro de los directorios LC_MESSAGES; Tantas copias como directorios tengamos. Después de eso tendremos varios ficheros .po; Uno en el directorio de la aplicación y uno dentro de cada carpeta de traducción:
appdir/appTest.exe
appdir/default.po
appdir/locale/en/LC_MESSAGES/default.po (Traducciones al inglés)
appdir/locale/fr/LC_MESSAGES/default.po (Traducciones al francés)
appdir/locale/ca/LC_MESSAGES/default.po (Traducciones al catalán)
…
(c) Traducir los ficheros.
En este punto ya se pueden abrir cada uno de los ficheros .po y traducirlo utilizando poedit. Una vez abierto el fichero con poedit, veremos una pantalla como esta:
Una vez finalizada la traducción de palabras y cerrado el programa veremos que en cada directorio aparecen 2 ficheros; El default.po (original) y el de traducción llamado default.mo.
Repetimos esto con todos los ficheros de traducción.
(d) Cómo utilizar las traducciones en nuestro programa
Una vez los ficheros de traducción estén generados, para utilizarlos desde la aplicación añadirenmos el siguiente código a los botones de activación de los idiomas.
// para el catalán
UseLanguage('ca');
RetranslateComponent(Self);// para el inglés
UseLanguage('en');
RetranslateComponent(Self);...
// para el catalán
UseLanguage('ca');
RetranslateComponent(Self);
// para el inglés
UseLanguage('en');
RetranslateComponent(Self);
...
Si ejecutamos la aplicación veremos que al pulsar los botones cambia es aspecto del formulario.
Para finalizar, aun nos queda un detalle, que es, que la cadena que aparece al pulsar el botón «Hola Mundo!» no aparece traducida.
Para ello utilizaremos la función de traducción _().
La llamada que actualmente está así:
MessageDlg('Hola', mtInformation,[mbOK],0);
MessageDlg('Hola', mtInformation, [mbOK], 0);
Pasará a colocarse así:
MessageDlg(_('Hola'), mtInformation,[mbOK],0);
MessageDlg(_('Hola'), mtInformation, [mbOK], 0);
PASOS FINALES
Con eso nuestro programa debería quedar traducido completamente. Si movemos el EXE y la carpeta locale a cualquier otro sitio veremos que el programa funciona correctamente. Si sólo movemos el EXE, el efecto es que no aparace nada traducido.
Queda un último detalle, que es integrar las traducciones en el EXE, para que todo quede en el ejecutable y no debamos preocuparnos del directorio locale.
Basta con pulsar click derecho sobre el EXE de nuestra aplicación desde el explorador de Windows, Seleccionar la opción «Embeb Translations» y seleccionar los ficheros de traducción que queremos integrar.
Con esto debería ser todo.
UPDATE: (20/04/2011)
Pues haciendo pruebas he llegado a obtener el mismo proble que comenta Sil en sus comentarios (en mi caso utilizando Delphi XE). Se trata de que al intentar añadir las traducciones al exe se obtiene un error con la referencia: «6637DB2E-62E1-4A60-AC19-C23867046A89».
Revisando por Internet, parece que se solventa sustituyendo unas constantes que hay en gnugettext.pas.
(1) Buscar esta sección en la unit gnugettext.pas:
// DetectionSignature: used solely to detect gnugettext usage by assemble
DetectionSignature:array[0..35]ofAnsiChar='2E23E563-31FA-4C24-B7B3-90BE720C6B1A';// Embedded Header Begin Signature (without dynamic prefix written by assemble)
BeginHeaderSignature:array[0..35]ofAnsiChar='BD7F1BE4-9FCF-4E3A-ABA7-3443D11AB362';// Embedded Header End Signature (without dynamic prefix written by assemble)
EndHeaderSignature:array[0..35]ofAnsiChar='1C58841C-D8A0-4457-BF54-D8315D4CF49D';// Assemble Prefix (do not put before the Header Signatures!)
SignaturePrefix:array[0..2]ofAnsiChar='DXG';// written from assemble
// DetectionSignature: used solely to detect gnugettext usage by assemble
DetectionSignature: array[0..35] of AnsiChar='2E23E563-31FA-4C24-B7B3-90BE720C6B1A';
// Embedded Header Begin Signature (without dynamic prefix written by assemble)
BeginHeaderSignature: array[0..35] of AnsiChar='BD7F1BE4-9FCF-4E3A-ABA7-3443D11AB362';
// Embedded Header End Signature (without dynamic prefix written by assemble)
EndHeaderSignature: array[0..35] of AnsiChar='1C58841C-D8A0-4457-BF54-D8315D4CF49D';
// Assemble Prefix (do not put before the Header Signatures!)
SignaturePrefix: array[0..2] of AnsiChar='DXG'; // written from assemble
(2) Y sustituirlas por estas:
// DetectionSignature: used solely to detect gnugettext usage by assemble
DetectionSignature:array[0..35]ofAnsiChar='6637DB2E-62E1-4A60-AC19-C23867046A89';// Embedded Header Begin Signature (without dynamic prefix written by assemble)
BeginHeaderSignature:array[0..35]ofAnsiChar='';// Embedded Header End Signature (without dynamic prefix written by assemble)
EndHeaderSignature:array[0..35]ofAnsiChar='';// Assemble Prefix (do not put before the Header Signatures!)
SignaturePrefix:array[0..16]ofAnsiChar='#0#0#0#0#0#0#0#0';//'DXG'; // written from assemble
// DetectionSignature: used solely to detect gnugettext usage by assemble
DetectionSignature: array[0..35] of AnsiChar='6637DB2E-62E1-4A60-AC19-C23867046A89';
// Embedded Header Begin Signature (without dynamic prefix written by assemble)
BeginHeaderSignature: array[0..35] of AnsiChar='';
// Embedded Header End Signature (without dynamic prefix written by assemble)
EndHeaderSignature: array[0..35] of AnsiChar='';
// Assemble Prefix (do not put before the Header Signatures!)
SignaturePrefix: array[0..16] of AnsiChar='#0#0#0#0#0#0#0#0';//'DXG'; // written from assemble
Con este ambio ha desaparecido el error y se integran perfectamente las traducciones.
Espero que haya sido útil.
Espero comentarios, sugerencias, errores,… y demás.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
Es una cosa que en multitud de ocasiones hemos necesitado hacer; Ya sea con la configuración del acceso a Base de Datos, con la configuración de propiedades, guardar estado del programa, posición,…
En este caso en concreto (a raiz de este hilo en Clubdelphi) se trata de guardar la configuración de Base de Datos. El contenido importante de la propiedad ConnectionString.
Podemos almacenada TODO el contenido de la propiedad en un sólo elemento o guardar los elemtos relevantes de la conexión (Servidor, usuario, Base de Datos y password); En mi caso he preferido el segundo.
Para ello lo más sencillo es utilizar la clase TIniFile que provee Delphi.
En este ejemplo además se utiliza otra conexión con casi los mismos parámetros introducidos, pero accediendo a la tabla master, para preguntar al servidor SQL por las Bases de Datos disponibles y así mostrarlas al usuario:
En este caso, la conexión es con SQL Server mediante OLEDB. En general, para esta y otras conexiones os recomiendo una web creada específicamente al respecto:
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
Es el error que muchas veces pienso que debería haber «saltado» en la aplicación, cuando reviso cierto código que debí escribir un día de esos en que mi cabeza está «nublada» (como los días de invierno…).
Pues Voilà!
A partir de la versión 2009 de Delphi ya está disponible y prometo usarla de aquí en adelante en mis nuevos desarrollos… ;-)
¿Que no os lo creéis? Basta con revisar la unit SysUtils.pas
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
Acabo de empaquetar la versión 1.3 (beta) de la librería de componentes GLibWMI, basados en la WMI de Windows.
Básicamente he añadido nuevos componentes y he corregido algunos errores que incluía la demo general. Además he testado la librería en Delphi 2009 sin ningun problema a la hora de compilar. Doy por supesto que en todas las intermedias entre D7 y D2009 fucionará sin problemas.
Los componentes nuevos son:
CProcessInfo: Información acerca de los procesos que hay ejecutándose en el sistema..
CServiceInfo: Información detalleda de los servicios que hay instalados en el sistema..
CDesktopMonitorInfo: Información detallada sobre el monitor o dispositivo de visualización que hay en el sistema.
CComputerSystemInfo: Información acerca del sistema en General.
CStartupCommandInfo: Información acerca de los procesos que se ejecutan automáticamente cuando el usuario hace el Login en el sistema.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
GLibWMI es una librería/biblioteca de componentes enfocados a la Administración de Sistemas Windows.
Están basados en la WMI de Windows (Windows Management Instrumentation). Podéis conocer algo más sobre WMI en la entrada del blog titulada «WMI – Introducción«.
ACTUALIZACIÓN 01/02/2024.
Actualmente se ha liberado la versión 3.2 estable (compatible con Delphi 12 Athens).
El código se ha subido en GitHub y en el blog se mantienen las versiones antiguas. NOTA IMPORTANTE: Debido a problemas con la autentificación de Github la ubicación antigua del proyecto queda obsoleta (https://github.com/NeftaliDelphi/GLibWMI), las nuevas actualizaciones se harán en este repositorio: https://github.com/germanestevez/GLibWMI
La librería de componentes se ha actualizado a la versión 3.0 considerada como estable (hasta ahoira estaba en fase beta). Se han añadido además nuevas demos y se han actualizado las existentes.
La versión 3.0 cuenta con nuevos componentes y compila sin problemas desde Delphi 6 hasta la versión Delphi 10.3 (por ahora no se ha probado en 10.4, pero debería compilar sin ningun problema).
ACTUALIZACIÓN 03/04/2019.
Actualizada la librería la versión 2.2b. Compatible con Delphi 10.2 (Tokyo) y anteriores.
Eliminados Hints y Warnings en los de componentes.
Eliminados Hints y Warning en los ejemplos .
Se añaden Units a los uses necesarias para versiones nuevas.
Se añade fichero incluyendo directivas de compilación.
Se generan packages para las nuevas versiones de delphi.
Nuevos componentes añadidos (BootConfigurationInfo, DesktopInfo CodecsInfo, RegistryInfo, TimeZoneInfo) y corrección de algunos bugs.
Compilado para las nuevas versiones de Delphi, incluídas XE4 y XE5.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…