Planeta Lazarus en castellano

December 30, 2008

javivf

LRUT empieza a abrir sus puertas!

Pense que lo habia comentado anteriormente pero no fue asi. Abri el acceso readonly al svn de LRUT pero no lo dije en ningun lado, menos mal que el amigo Leonardo me lo ha recordado y he podido enmendar mi error :)

Asi que si quereis acceder al codigo de LRUT solo teneis que ejecutar…

svn co svn://alasombra.net/lrut lrut

Hay que entender que es una version alpha asi que espero montones de correos a javivf[en]gmail[punto]com reportando bugs, enviandome patches y haciendo sugerencias. Para los que no programais pero quereis aportar vuestro granito de arena ya sabeis que hay 5 maneras para contribuir al software libre sin necesidad de ser programador ;)

Solo me queda desearos un feliz 2009 , sed buenos!

December 30, 2008 08:09 PM

December 20, 2008

javivf

Foro oficial de Lazarus remodelado

Se lee en la lista de lazarus que esta semana Marc Weustink y Paul Ishenin han estado liados haciendo la migracion del antiguo foro al nuevo a un servidor sponsorizado por firmos.at

La nueva direccion es http://forum.lazarus.freepascal.org y la verdad es que se agracede muchisimo el cambio por el incremento de velocidad para trabajar con el foro :)

December 20, 2008 09:51 AM

December 18, 2008

Lord_ZealoN

…actualizando que es gerundio

Puff, cuanto tiempo sin actualizar…..

Por un lado, liadillo jugando al poker y desarrollando mi nuevo blog, enfocado exclusivamente a mis inicios en este nuevo hobby. Obviamente, no es para sustituir al actual, ya que éste, es más para contar cosas genéricas sobre mi vida (aunque lo hago poco), o técnicas (desarrollo y demás historietas).

Además, también quiero cambiar de nuevo este blog. Jamás debí dejar Drupal. Cuando se rompió mi viejo blog, debí reconstruirlo de nuevo sobre Drupal, y no cambiar a Wordrpress. Mi blog de poker, está construido sobre Durpal, y es una gozada incorporar cambios, en cambio, aquí, sudo la gota gorda sólo en pensar que tengo que actualizar, y que para poder meter dos tonterías, he tenido que tocar la plantilla a mano. Si bien, no son cosas difíciles, sobre todo, para alguien que trabaje todos los días con Wordpress, para mí, es una simple herramienta más, en la que no quiero centrarme, es sólo un punto de apoyo. Además, mi idea era que la publicidad no molestase tanto, pero el banner de la izquierda, cada vez va a peor. Qué coñazo.

Por otro lado, sigo en mi aprendizaje de la plataforma Velneo. Puede ser la herramienta definitiva donde asiente mi enorme trasero. Últimamente, dedico más tiempo en leer el fabuloso y gigantesco manual en perfecto castellano, que a desarrollar en sí, pero, mira, lo leido, ahí está, y si no fuese porque la formación es bastante cara (cara respecto a mi economía obviamente, porque sería algo bien pagado), no me lo pensaría ni dos veces en asistir una semanita a un curso intensivo. Además, las características de la nueva versión 7, que estará disponible para mediados de este año que entra, lo hacen algo más que apetecible. De momento, aprendo en la versión 6, de gratuita descarga. Velneo puede estar limitado en ciertos aspectos, por su concepción, pero podemos ampliar sus horizontes a base de DLL’s, y ahí es donde entra de nuevo en mi vida Lazarus/Freepascal. Si bien mi experiencia en desarrollo se basa más en aplicaciones de gestión y parecidos, hace mucho que no toco Object Pascal, y encima, nunca he desarrollado una DLL, aunque ésto, es como montar en bicicleta. De hacer falta, sería cuestión de documentarme, y echar unas cuantas horas y ya está. Cada vez me doy cuenta, que mi vida, de una manera u otra, siempre orbita al mejor lenguaje y mejor plataforma con la que he trabajado en mi vida, Delphi (Lazarus en su versión opensource).

Tengo algún proyectillo que otro en mente, pero de momento, me estoy centrando más en la lectura. Como no, InciGest, el maravilloso software de Gestión de Incidencias, que jamás vió la luz, y que se ha recomenzado en 3 lenguajes distintos, vuelve de nuevo en su 4º renacer, pero esta vez, bajo Velneo, jejeje. Ya veremos si coge o no forma, de momento, ando ahí construyendo tablas :D Como siempre, os mantendría informados :D

En fin, que como podréis observar, por ahí sigo, dándole vueltas a la vida tecnológica, nos leemos.

ShareThis

December 18, 2008 03:11 PM

November 26, 2008

javivf

Muerte a lazSVN , larga vida a lazSVNPkg!

En un post anterior comentaba mi intecion de portar delphisvn a fpc/lazarus manteniendo la misma filosofia pero como iba algo apretado de tiempo hice publico el inicio del port por si alguien se animaba a ir avanzando y de paso me animaba a mi ;)

Durante este tiempo se ha subido a la rama trunk de lazarus ( desde la revision 17160, hace casi un mes ) un paquete llamado lazSVNPkg que ya hace lo que iba a hacer lazSVN con la diferencia de que LazSVNPkg es un wrapper del binario svn sin ningun interes en los bindings.

La verdad es que pinta muy bien ( solo lo he probado sobre linux ) pero se ve que Darius Blaszyk esta activo y con ganas de madurar el proyecto :)

Podeis encontrar informacion en el wiki de lazarus en la pagina referente a LazSVNPkg.

PD : Con esta nota doy por estancado el desarrollo de los bindings hasta nueva orden.

November 26, 2008 10:26 PM

November 25, 2008

javivf

miniTip : Extendiendo el TIdleTimer de Lazarus

Escenario: Se requiere lanzar un proceso cada cierto tiempo que la aplicacion este sin hacer nada, o sea, en Idle :)

Como TIdleTimer no tiene “memoria” creamos nuestra clase TContador ( en honor a nuestro campeon ;P ) dotandole de memoria.


{TContador}
TContador = class(TIdleTimer)
procedure Contando(Sender :TObject);
procedure Inicio(Sender :TObject);
procedure Fin(Sender :TObject);
private
  Acum, tMax : Integer;
public
  constructor Create(AOwner : TComponent ;Maximo : Integer; curr : TCurrante);
end;

Implementamos el constructor…


{TContador}
constructor TContador.Create(AOwner : TComponent; Maximo : Integer);
begin
  inherited Create(AOwner);
  Self.Enabled:=false;
  Self.OnStartTimer:=@Inicio;
  Self.OnStopTimer:=@Fin;
  Self.OnTimer:=@Contando;
  Self.Acum:=0;
  Self.tMax:=Maximo;
  Self.AutoEnabled:=true;
end;

Cada ver que se produzca el evento OnStartTimer pondremos el acumulador a 0


procedure TContador.Inicio(Sender :TObject);
begin
  Self.Acum:=0;
  DebugLn('Inicio');
end;

Aqui simplemente queria saber cuando se lanza OnStopTimer ;)


procedure TContador.Fin(Sender :TObject);
begin
  DebugLn('Fin');
end;

Este proceso se ejecuta cuando la aplicacion esta Idle y lanza el proceso cuando el tiempo acumulado supera el tiempo maximo.


procedure TContador.Contando(Sender :TObject);
begin
  Inc(self.Acum);
  if self.Acum > self.tMax then
    begin
      Self.Enabled:=false;
      Self.Enabled:=true;
      DebugLn('Lanzamos proceso');
    end;
  DebugLn('Contando - ' + IntToStr(self.acum));
end;

Proceso sencillo aunque cuando eres un newbie no aparece en la mente de manera inmediata

November 25, 2008 12:35 PM

October 21, 2008

javivf

lazSVN , Subversion bindings para freepascal/lazarus

La idea inicial de todo esto era proveer a Lazarus de un paquete que le hiciera capaz de interactuar con un servidor Subversion en relacion al proyecto con en el que se esta trabajando. Esto no es nada nuevo ya que IDE’s como SharpDevelop o tantos otros que ahora mismo no me vienen a la cabeza ya disponen de esta feature ;P

Antes de empezar a hacer nada comprobe que no hubiera nada hecho ( para no reinventar la rueda ) y con lo unico que me encontre fue con delphisvn, un proyecto con la misma funcionalidad que se requiere pero para Delphi.

Por el camino descubri la existencia de un componente svn hecho por Vincent que lo que hace es usar el output del comando svn, una muy buena manera de no complicarse demasiado con los bindings. El mismo me comento que Ido estaba tambien con los bindings aunque tampoco lo tiene terminado.

Lo “unico” que he hecho con delphisvn ha sido importar el paquete, quitar la dependencia a los bindings apr que vienen y usar los bindings de freepascal e ir quitando la dependencia a Windows. Publico el proyecto sin terminar por que se me avecinan unos meses intensos y me parece una idea interesante como para caer en saco roto.

Ahora mismo la intencion es mantener los bindings de Subversion y hacer un miniBrowser, mas que nada para testear. Si alguien se anima se puede bajar el codigo de la siguiente manera o con vuestro cliente de SVN favorito ;)

svn co svn://alasombra.net/lazSVN lazSVN

Si necesitais algo en referencia al proyecto o a cualquier otra cosa hacerme llegar unas lineas a mi correo en gmail.com

October 21, 2008 08:05 AM

October 20, 2008

FredyGonzales

Bueno, comenzare por aportar en algo a mi blog y empezare por dejar un ejemplo de como podemos trabajar con LAZARUS y ZEOSDBO.


Mi intencion no es ser tan didactivo, porque los que estamos aprendiendo a programar en Lazarus, tenemos siempre nuestro costo de sacrificio, por tanto lo que aqui presento es un camino hacia una forma mas simple de trabajar usando los DATAMODULE, que recien los vengo a conocer.

Esto lo vi de algunos ejemplos de Delphi en internet, asi que lo unico que hice fue aplicarlo a lazarus y vi que funciona a la perfeccion.

Este es un formulario que agrega, busca y modifica los datos de personas, este formulario fue mi maqueta principal, para el desarrollo de casi todo lo que tengo de call center.

Esta en windos para una forma mas practica de empezar con lazarus, pero puede ser llevado a Linux ( ubuntu ) donde funciona a la perfección.

Dentro del archivo zip tambien existe una carpeta con el script de la base de datos prueba, el motor de base de datos es Mysql 5.0 , no se olviden que mysql 5.0 tiene dentro de su carpeta bin el cliente libmysql.dll que debe estar en windows system32, para la gente que utiliza linux ubuntu no se olvide de instalar libmysqlclient15-dev.

El programita, tambien usa un archivo ini, para tener libertar de direccionar la base de datos a cualquier servidor.


October 20, 2008 05:54 PM

October 16, 2008

DonaldShimoda

Repositorios lazarus testing version 0.9.27

Actualización de los repositorios y cambio de clave

Agregue la clave GPG

gpg --keyserver hkp://pgp.mit.edu:11371 --recv-keys 46CC8C32

Agreguela la clave al sistema APT:

gpg --export 46CC8C32 | sudo apt-key add -

Revise si la clave fue incorporada:

sudo apt-key list

sudo aptitude update

sudo aptitude safe-upgrade.

Namaste.

October 16, 2008 08:32 PM

October 14, 2008

javivf

Lazarus 0.9.26 en la calle!

Vincents comentaba hace un par de semanas que se estaba preparando el lanzamiento y ahora ya es oficial la nueva version estable de lazarus!

Se puede leer las notas de la version en el wiki y os los podeis descargar del sitio de siempre

Hay que comentar que aun no se ha hecho el anuncio oficial en la lista de correo pero es que no me podia aguantar mas! ;)

Ya tenemos el anuncio de Mattias Gaertner a la lista de correo, a continuacion un pequeño extracto de los cambios mas importantes :

- The LCL now uses Unicode strings UTF-8 encoded on all platforms.
There are docs, tools and functions to help converting old code.
- The LCL internal graphic system was rewritten for more consistency,
more flexibility, better Delphi compatibility, icon support, native
image lists.
- Lazarus now runs native under Mac OS X using the ‘carbon’ widgetset.
- The IDE designer now allows to connect form components, like
databases on TDataModule.

powered_by

October 14, 2008 07:59 PM

October 01, 2008

javivf

Comprobar el estado de un servicio con Freepascal

La necesidad de esta implementacion ha sido por que no existen plugins para la monitorizacion de subversion y bacula en nagios ( o almenos no he encontrado ninguno ), luego he visto que existe check_tcp que de momento ya me vale :)

Lo que hace el programa es intentar conectar a un puerto de una ip y si lo consigue imaginamos que el servicio esta funcionando.


program check_port;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes, Sockets, SysUtils

  { you can add units after this };
Var
  Addr : TInetSockAddr;
  S : Longint;
  Sin,Sout : Text;
  tmp: String;

begin
  if ((ParamStr(1)='') or (ParamStr(2)='')) then
    begin
      Writeln('ERROR - Numero de parametros incorrectos');
      Writeln('Debes escribir ip puerto');
      exit;
    end;

  S:=fpSocket(AF_INET,SOCK_STREAM,0);
  if SocketError<>0 then
    writeln('Socket Error ' + IntToStr(SocketError));

  Addr.sin_family:=AF_INET;
  Addr.sin_addr := StrToNetAddr(ParamStr(1));
  Addr.sin_port:=htons(StrToInt(ParamStr(2)));

  If Not Connect (S,ADDR,SIN,SOUT) Then
    tmp := 'Error '
  else
    tmp := 'Exito ';

  WriteLn(tmp + 'en la conexion con ' + ParamStr(1) + ' al puerto ' + ParamStr(2));

end.

La funcion Connect esta deprecated pero como el nagios ya trae por defecto el plugin check_tcp tampoco era plan de perder invertir mas tiempo

October 01, 2008 02:51 PM

September 30, 2008

javivf

Asi luce Zeos Lib 7

Asi se ve Zeos 6.6.3…

zeos663

Y asi se ve Zeos 7

zeos700

La verdad es que no sigo muy de cerca el desarrollo pero por lo que parece se estan preparando para una version con cambios importantes.

Mas informacion sobre la nueva generacion de Zeos Lib!

September 30, 2008 01:58 PM

September 26, 2008

DonaldShimoda

Utilizando Logmein en Ubuntu 64 bits.

Si eres un usuario de Ubuntu 64 y te vez en la necesidad de usar el servicio logmein de soporte a terceros seguramente te veras en problemas.
La principal causa es que no existe plugin para firefox de java que funcione correctamente con logmein (ni con muchas otras páginas).
Los plugins de código abierto existentes son realmente incompatibles o de calidad mediana comparados con el de Sun, por este razón utilizar estos plugins con logmein es una tarea imposible a la fecha.
Con flash no es el mismo tema, dado que Ubuntu hardy soporta perfectamente la instalacion del flash player, out of box.

Luego e investigar bastante en la red he logrado un método seguro para lograr este fin.

Vamos a nstalar una versión especial de swiftweasel que es de 32 bits y corre en ubuntu 64.

1)Asegurate que los repositorios universe y multiverse esten activados, si no lo estan o no estas seguro ve a Sistema -> Adminstración -> Origenes de software y activalos.

Pantallazo-Orígenes del software

2) Descarga este script, descomprimelo y ejecútalo. Mas instrucciones aquí.

3) Seleccionar Distro

Pantallazo-germangentile@leslie-lx: ~-Documentos-Downloads-64 bits-ff32-3in1

4) Seleccionar navegador

Seleccionar navegador

5) Instalando navegador

Instalando navegador Auto

6) Instalar Flash? No es necesario dado que ubuntu lo instala perfectamente.

InstalarFlash

7) Instalar Java? Esta opción es necesaria para usar logmein.

Instalar Java

8) Instalar Mplayer Plugin?

Instalar MPLAYER

9) Solicita su nombre de usuario para terminar de configurar, ingresar nombre de usuario que utiliza para acceder a su sesión.

Pide tu usuario para poder instalar

10) Hecho. Ya tenemos un navegador completo.

11) Instalar el plugin de logmein para firefox.

Se baja de la pagina de logmein, sección labs, aqui . Guardarlo sin instalar (aún).

Ahora abrir una terminal en la carpeta donde se descargo el instalador del plugin y colocar:

sudo dpkg -i --force-architecture logmein-client_1.0.387-1_i386.deb

Listo, ya puedes disfrutar de las bondades de este servicio maravilloso en tu Ubuntu 64 bits. Enjoy!

Namaste

September 26, 2008 05:02 PM

September 20, 2008

javivf

Instalar la ayuda offline en Lazarus

Con este articulo sabras como integrar la documentacion HTML existente sobre la  Run-Time Library (RTL) , la Free Component Library (FCL) y la Lazarus Component Library (LCL) en Lazarus.

Primero que nada nos bajamos el archivo ftp://ftp.freepascal.org/pub/fpc/dist/docs-2.2.2/doc-html.zip y lo descomprimiremos en el directorio $LAZARUS_DIR/docs/offline que previamente hemos creado.

A esa documentacion le falta la referente a la LCL con lo que tenemos varias opciones para obtenerla.

Si eres usuario de Linux ( imagino que para MacOS tambien sirve ) puedes ejecutar el script update_lcl_html.sh que se encuentra en $LAZARUS_DIR/docs/html. Al terminar el proceso habra creado el directorio lcl con la documentacion que moveremos a nuestro $LAZARUS_DIR/docs/offline .

Si eres usuario de Windows ( o quieres mantener actualizada tu documentacion HTML ) puedes descargarte el archivo ftp://ftp.freepascal.org/pub/lazarus/fpc-lazarus-doc-html-20080920.tar.bz2 que viene con la documentacion de la RTL, FCL y LCL . Fijarse que se actualiza cada dia, con lo que mañana ya no servira el link asi que tendreis que entrar a mano en ftp://ftp.freepascal.org/pub/lazarus/ y bajaros el fpc-lazarus-doc-html-*.tar.bz2 correspondiente ;)

Bien, en este punto ya tenemos toda la estructura con la documentacion offline en nuestro ordenador, ahora solo falta configurar Lazarus.

Para ello accedemos al menu “Ayuda > Configurar Ayuda”. En la pestaña “General” ponemos en el “FPC Doc HTML Path” el directorio $LAZARUS_DIR/docs/offline y en la pestaña “Base de Datos” , seleccionamos RTLUnits y en BaseURL ponemos el directorio $LAZARUS_DIR/docs/offline/rtl y asi con FCLUnits y LCLUnits con sus directorios correspondientes.

Ahora para comprobar que lo hemos hecho bien vamos al editor de codigo fuente, seleccionamos TForm (por ejemplo) apretamos F1 y voilà , se nos abre la ayuda local en el navegador :)

September 20, 2008 11:27 AM

September 10, 2008

DonaldShimoda

Repositorios Lazarus Testing Actualizados

Existen nuevas versiones disponibles en los repositorios.

FPC version 2.3.1 revision 11736
Lazarus 0.9.25 svn revision 16526

Las instrucciones acerca de como configurar para obtener los repositorios aquí.

Incluyen soporte experimental TFrame.

Para activarlo, soporte a TFrame:

Ir a Configurar Construir Lazarus, Opciones Avanzadas de Construcción, campo Opciones agregar

-dEnableTFrame,

construir y a disfrutar.

Espero les sean útiles.

Namaste.

September 10, 2008 09:19 PM

PHP Toolkit disponible - Delphi/Lazarus a PHP en un solo paso

Es grato anunciar que se ha liberado un kit de traslación automática de aplicaciones Delphi a PHP, mas concretamente utilizando VCL4PHP.

Como el autor del mismo indica, permite realizar tres cosas:

1) Convertir de manera automática formularios delphi o lazarus a VCL4PHP, conservando disposición de los mismos.
2) Convertir lazarus en un editor PHP.
3) Crear extensiones para PHP utilizando pascal como lenguaje.

Si quieren ver un ejemplo simple de su potencial diriganse a este sitio.

La página principal del proyecto se encuentra aqui

Namaste.

September 10, 2008 04:38 PM

August 31, 2008

Lord_ZealoN

Retomando Lazarus

La verdad es que llevo mucho tiempo sin tocar lazarus.

Después de tanto tiempo, me he animado a instalármelo de nuevo para un par de cosillas que tengo que hacer, y por qué no, volver a desarrollar con el mejor lenguaje que he usado en mi vida.

Algunos se preguntarán, “¿y que pasó con Squeak/Smalltalk?”. La verdad es que lo tengo abandonado, la falta de tiempo. Llevo muchos años siguiendo este proyecto, sin tiempo ni ganas de ponerme a hacer algo serio con él, a pesar, de estar enamorado de su filosofía.

Veo que hay algún problemilla con las fuentes de letra, pero veré como solucionarlo en las próximas horas.

Tiempo al tiempo. Ahora mismo, me apetece volver a mis inicios.

Cuanto te he echado de menos Delphi…digoooooo Lazarus :D

ShareThis

August 31, 2008 01:04 PM

August 26, 2008

DonaldShimoda

Es evidente que necesito una nueva gorra.

Estuve alejado algún tiempo, mudando mi familia a Santa Marta, Colombia, un lugar hermoso que nadie debería dejar de conocer alguna vez en su vida. Si vienen me avisan, serán bienvenidos.
Muchas cosas han pasado en este mes, pero la principal es que mi gorra/cachucha o como le llamen en su país nativo esta desactualizada.



Ya no la puedo usar porque en términos legales estoy afirmando algo que no es cierto : Codegear ya no es parte de Borland sino de Embarcadero.
Que bueno sería que Embarcadero me la actualice, para evitar que algún desinformado que me vea pasar siga creyendo que Codegear es parte de Borland, no creen?

Ya saben donde estoy Embarcadero, dispuestos a llevarlos en mi frente sin costo adicional. ;)

Namaste.

August 26, 2008 01:50 PM

August 24, 2008

llodra

Instalar Lazarus en Acer Aspire One

Después de instalar Lazarus para Fedora 8 o Linpus, no se muestran bien las fuentes de Lazarus, el ide queda completamente ilegible.
Paso 1 : Instalar Lazarus y las fuentes de freepascal.
sudo yum install lazarus
sudo yum install fpc-source
Paso 2 : Crear el fichero .gtkrc.mine en el home de “user”
mousepad /home/user/.gtkrc.mine
Paso 3 : Añadir este texto al fichero vacio.
style "default-text" {
fontset = "-*-sans-medium-r-normal--*-100-*-*-*-*-iso8859-1,\
-*-sans-medium-r-normal--*-100-*-*-*-*-*-*"
}
class "GtkWidget" style "default-text"

Guardar el fichero

Paso 4 : Crear un enlace simbolico al fichero.
ln -s /home/user/.gtkrc.mine /home/user/.gtkrc

Ahora ejecutar en un terminal lazarus-ide para comprobar que las fuentes son correctas y se visualiza el texto del ide sin ningun problema…

Vía : http://wiki.lazarus.freepascal.org/Lazarus_Faq

compartir:
  • Meneame
  • Digg
  • del.icio.us
  • Google
  • De.lirio.us
  • BarraPunto

August 24, 2008 09:04 AM

August 12, 2008

javivf

fpc 2.2.2 released!

Despues de 2 meses de la primera release candidate ayer salio a la calle la nueva version estable del compilador de FreePascal, esto siginifica que esta mas cerca el lanzamiento de la nueva version estable de Lazarus, la 0.9.26 ;)

El anuncio del lanzamiento lo hizo Michael Van Canneyt en la lista de correo y los cambios mas importantes los podeis consultar en el wiki oficial.

Gracias a todos los involucrados por hacerlo posible.

August 12, 2008 12:00 AM

July 20, 2008

DonaldShimoda

Migrando de Delphi a Lazarus

No es que me sobre el tiempo, ni siquiera que este aburrido, pero nuevamente me puse un desafío sobre mis espaldas que es realmente difícil de cumplir.
No es que migrar una aplicación de Delphi a Lazarus sea inviable, nada mas lejos de la realidad, por cierto, pero específicamente esta bella librería de Delphi que intento migrar usa DEMASIADOS mensajes a la Api de Windows...

Repasando los pasos para comenzar a migrar una aplicación de Delphi a Lazarus son muy simples.

1) Crea una estructura nueva, independiente de la que contiene a la aplicación Delphi, de modo de que lo que toques no afecte a tu aplicación Delphi (es básico pero muy pocos lo hacen).
2) Para cada archivo de proyecto delphi (solo para el dpr)

makepasx Proyect1.dpr

3) Para cada archivo .pas dentro de la unidad ejecuta el siguiente comando

makepasx unit1.pas

4) para cada formulario delphi ejecuta el siguiente comando

dfmtolfm unit1.dfm

5) Lazarus utiliza para cada form un archivo de recurso extensión lrs. Para generarlo:

lazres unit1.lrs unit1.lfm

Hecho. ya tenemos todo lo necesario para dar el primer paso en nuestro camino de 1000 kms (el mas importante), ahora solo queda compilar y ver.

Generalmente algunas funciones o llamadas varían un poco entre Delphi y Lazarus. Podría colocar algunas de ellas aquí, pero no tiene sentido porque son muchas. En lugar de eso les daré una forma de resolver las discrepancias de la manera mas simple, o por varios métodos que en general me hacen llegar al resultado correcto:

1) Si no encuentras un identificador o fuente busca las referencias en los fuentes de lazarus. Suena tonto? es lo mas simple, de esta manera puedes saber que unidad lo define y que objetos lo utilizan.

2) Si el identificador o método no existe en lazarus, ve a los foros de lazarus y busca por el. De seguro antes alguien choco con esa piedra y encontró como saltarla. ;)

3) Si nada de eso funciona, el amigo google viene al rescate. Puedes probar lazarus nombreendiscrepancia o agregarle la palabra reemplazo, etc.

Por último, puede suceder el caso como en la librería que intento migrar, que haya DEMASIADAS llamadas a la api de windows. En este caso el punto 2 y el 3 suelen ayudar mucho.

4) Subscribete a los grupos de lazarus y fpc. Quien mejor que quienes ya han estado ahi pueden ayudarte? Incluso si es una funcionalidad no suportada pueden ayudarte a implementarla y se producirá el milagro: la librería de lazarus y fpc se enriquece. :)

En otras entregas les ire comentado acerca de mis progreso en la conversión y como se fueron resolviendo los problemas.

Namaste.

July 20, 2008 11:16 PM

July 15, 2008

DonaldShimoda

July 14, 2008

DonaldShimoda

Capturas de Pantalla Ubuntu y Lazarus

Para la gente que pregunto por como se ve lazarus actualmente, primero les presento mi escritorio Linux, donde convive lo mejor de vista (si es que hay algo) Mac y Linux. Para que no digan que aqui discriminamos a nadie. ;)





Y para continuar, así se ve la versión actual de lazarus con todos los componentes de Remobjects instalados.



Espero que les haya gustado.

Namaste

July 14, 2008 01:05 PM

July 13, 2008

ToroOS

Compilando TORO con FPC 2.2.3

He modificado la unidad system.pas para poder se compilada con FPC 2.2.3 partiendo de la RTL para win64 . Esta implementacion se vera en la proxima version.
Saludos .

July 13, 2008 10:54 PM

DonaldShimoda

Ubuntu 8.04 inestable por momentos.

Existen pruebas de que con la combinación de determinado harwdware Ubuntu 8.04 (y otras distros también) están provocando que la caja linux se congele.

Algunos culpan al nuevo kernel (experimental versión 2.6.24-19-generic) otros a los drivers de video y la lista sigue. Yo estoy convencido que es el kernel porque con el previo no había inconvenientes.

Que hacer? Bueno, sabemos que ubuntu es inestable, al menos mas inestable que debian stable, de modo que de nada sirven las quejas, mejor llenar un bug report y confiar en la predisposición de los desarrolladores. Siempre es mejor que confiar en las soluciones de código cerrado, por supuesto :)
De modo que si no quieres pasar por estos temas simplemente tomas debian y serás feliz (aunque tal vez anticuado). A los que nos gusta la emoción y el riesgo seguiremos teniendo sobresaltos, como todo cuando crece.

Pero no se desesperen la solución es bastante simple. Aqui los pasos a seguir.

Abre una ventana de terminal.

sudo gedit /boot/grub/menu.lst

Busca la línea de boot de la imagen que estas ejecutando, se podría ver así

kernel /vmlinuz-2.6.24-19-generic root=/dev/md2 ro quiet splash

Remplazala por

kernel /vmlinuz-2.6.24-19-generic root=/dev/md2 ro quiet splash locksource=acpi_pm nolapic_timer nohz=off

Sal grabando los cambios

Reinicia tu caja linux y a gozar. Los cuelgues de detienen y todo vuelve a la normalidad.

Namaste.

July 13, 2008 09:12 PM

Repositorios Lazarus Testing

Pensando en lo dificil que es a veces para el usuario novato instalar lazarus en un sistema linux, he creado unos repositorios para facilitarles el trabajo.

Aquí las instrucciones.

Repositorio Lazarus/FPC de versiones testing

La versión de Lazarus es la 0.9.25 revisión 15753 compilada con GTK2 en ide y paquetes, que en nuestros labs funciona perfectamente (es un delphi 7 con esteroides) :P

La versión de freepascal es 2.3.1 super testing, solo para arriesgados (aunque confieso no nos ha dado una sola queja, al contrario)

A continuación las instrucciones.

Repositorios lazarus y freepascal testing.
SIN NIGUNA GARANTIA. USELOS BAJO SU PROPIA RESPONSABILIDAD.

Instrucciones de instalación:

Agregue la clave GPG

gpg --keyserver hkp://pgp.mit.edu:11371 --recv-keys F93F2601

Agreguela la clave al sistema APT:

gpg --export F93F2601 | sudo apt-key add -

Revise si la clave fue incorporada:

sudo apt-key list

Agregue el repositorio a su lista de repositorios

Puede usar synaptic o editar /etc/apt/sources.list directamente. Agregue la linea:

deb http://www.petrobox.net/lazarus/ lazarus-testing universe

Instale lazarus

sudo apt-get update
sudo apt-get install lazarus

Namaste.

July 13, 2008 06:27 AM

Bienvenidos a los mundos paralelos de pascal.

Como es eso? Simple, ya les explico.
Para los que no lo conocen pascal es un lenguaje creado por Nicolas Wirth con el específico fin de enseñarle a sus alumnos este maravilloso mundo de la informática.

Ha pasado mucha agua desde el río desde entonces. Lo único que podemos asegurar es que quien lo conoce lo ama.

Este blog tiene la intención de reflejar la actualidad de este poderoso lenguaje en todos sus mundos paralelos, desde OS como windows a mac os x, desde dispositivos microcontrolados a servidores multi core.

Bienvenidos a la fiesta, que la disfruten. ;)

Namaste.

July 13, 2008 06:25 AM

June 09, 2008

llodra

Link : Leer Archivos XML con Lazarus

En este blog hay información muy útil para leer archivos XML desde una aplicacion creada con Lazarus.

desarrollolibre.wordpress.com

compartir:
  • Meneame
  • Digg
  • del.icio.us
  • Google
  • De.lirio.us
  • BarraPunto

June 09, 2008 09:25 PM

June 05, 2008

llodra

Versiones Daily Snapshot de Lazarus + Truco

lazarus Después de probar varias versiones de Lazarus intentando compilar para varias plataformas, he tenido que recurrir a las versiones daily snapshot para conseguirlo. Las versiones oficiales (a día de hoy 0.94) no son capaces de compilar para WinCE de una manera sencilla, hay que reconstruir todo el IDE de Lazarus y aun así, muchos de los widget LCL no funcionan en WinCE. Pero las versiones 0.95 de Lazarus, si permiten utilizar la gran mayoría de widgets LCL, y no ofrecen ninguna dificultad para compilar en las plataformas Win32/64 y WinCE. Descargar daily snapshots.

Instalando para Windows ™ la versión 0.95 de Lazarus y la versión “crosscompiling” correspondiente, sólo hay que configurar las “opciones del compilador” -> “Tipo de Widget LCL” como “WinCE”, y en la pestaña “Código” de esa misma ventana, seleccionar la plataforma del Sistema Operativo (OS Objetivo) como “WinCE” y el Procesador (CPU Objetivo) como “arm”.

Una vez hecho esto, ya se puede compilar para WinCE.

TRUCO : Los ejecutables para WinCE que crea Lazarus, son muy grandes (unos 10MB). Existe una utilidad llamada : arm-wince-strip.exe que se encuentra en el directorio : “\lazarus\fpc\2.2.1\bin\i386-win32″ que reduce el tamaño del ejecutable un 80%. Para que funcione correctamente, se tiene que habilitar la opción “Remover los símbolos del ejecutable” de las Opciones del Compilador” -> “Enlazador/Linker”.

Más utilidades para WinCE. Y para el desarrollo sobre Win-CE.

compartir:
  • Meneame
  • Digg
  • del.icio.us
  • Google
  • De.lirio.us
  • BarraPunto

June 05, 2008 12:09 PM

April 24, 2008

develazarus

Un nuevo proyecto


Luego de una gran ausencia en este recién iniciado blog ( solo llevo unos cuantos posts) el contenido será movido hacia otro blog, en el cual se juntara el conocimiento de un grupo de amigos para ayudar a los recién iniciados en el mundo les software libre a desarrollar software :)

Por lo que este blog pasa a formar parte de desarrollolibre.wordpress.com, donde encontrarán mas información  sobre Lazarus y otros sabores de IDES en el mundo del GNU/Linux :)

Así que todos quedan invitados a visitar el nuevo sitio, éste quedara como archivo hasta que wordpress decida eliminarlo por inactividad :P

Saludos!!

April 24, 2008 06:35 AM

March 26, 2008

llodra

March 25, 2008

ToroOS

Toro 0.03 esta listo!

Se ha implementado el Stack TCP-IP y se ha creado un driver para tarjetas de red ethernet ne2000 , tambien se han solucionado gran cantidad de bugs .
Saludos Matias Vara .

March 25, 2008 08:49 PM

February 19, 2008

Lord_ZealoN

Dos instalaciones de Lazarus/FPC en MacOs

Por fin he conseguido instalar Lazarus/FPC en Leopard. Cosa que me ha costado sudar sangre, ya que no había manera que ni Fink ni MacPorts, me instalasen correctamente las librerías gdk.

Para quien no lo sepa, FreePascal es un compilador libre de Pascal disponible para una infinidad de arquitecturas. La descripción que nos ofrece la wikipedia para FreePascal y Lazarus es:

Free Pascal (o FPK Pascal) es un compilador Pascal portable, libre y de código abierto, que representa una alternativa a los productos comerciales Turbo Pascal y Delphi. Su entorno en modo texto es muy similar al de Turbo Pascal de Borland, pero con más opciones. También existen entornos de desarrollo para Windows con Dev-Pascal de Bloodshed.

Lazarus es una herramienta visual para la programación en lenguaje de programación Pascal, disponible para los sistemas operativos Windows, GNU/Linux y Mac OS X.
Se trata de una alternativa gratuita a Delphi, desarrollada como proyecto de software libre a partir de Free Pascal. La web y la mayoría de la documentación están en inglés, pero el entorno de desarrollo (IDE) sí está traducido al español en gran parte.

Lazarus corriendo sobre MacOS

Una vez hechas las presentaciones, y resuelta mi pequeña incidencia, ahora, necesito tener dos instalaciones distintas.
¿Por qué? Lazarus, actualmente, está compilado por defecto para visualizarse sobre GTK1 (y bajo X11), algo que lo hace algo horrible a la vista, pero ésto, es sólo por defecto, ya que se puede compilar (aunque muchos de los widgetsets no son estables o completos aún, pero trabajan activamente en ello) para GTK2, Carbon, QT, etc…

Mi idea es tener mi instalación de Lazarus “stable” para no tener problemas en el día a día, pero además, tener otra instalación más (o las que hagan falta), para pruebas. Una de ellas, será un Lazarus descargado directamente del svn y tras posterior compilación, “construir” el entorno pero usando Carbon, para que se vea de una manera nativa.

Para aquellos interesados, toda la instalación de Lazarus, es realizada en la carpeta /usr/local/share/lazarus, y según me han comentado, para tener dos instalaciones distintas, es tan sencillo como simplemente copiarlo, fácil, sencillo, y para toda la familia.

Puesto en la oficina no tengo mi MacBook, no puedo probarlo ahora mismo, así que ya contaré mi aventura en otro momento.

De momento, os puedo decir que, puesto necesito una pequeña aplicación para hacer un seguimiento de las incidencias con nuestros clientes (entre otros mil proyectos más), iré comentando su desarrollo para que podáis adentraros en el mundo de desarrollo con este entorno.

ShareThis

February 19, 2008 09:39 AM

January 24, 2008

llodra

Software DICOM

Colección de Software DICOM gratuito para Windows, Linux y Mac OS X.

EzDICOM : Programa Visor de Imágenes DICOM programado en Delphi con código fuente.
MRIcro y MRICron : Conversor a formato Analyze de imágenes médicas.
DICOMWorks : Visor DICOM , puede crear CDs DICOM, exportar a PowerPoint, e-mail, FTP, … A mediados de este año (2008) se espera una nueva versión.
Osirix : Visor exclusivo para Mac, con capacidad de reconstrucción volumétrica de imágenes médicas. El software es Open Source, pero hay varias empresas que dan soporte al programa, una de ellas es Kanteron Systems.
PACS dcm4chee : Este software esta especializado en el almacenamiento masivo de imágenes médicas (PACS). Funciona sobre JBoss y es multiplataforma.
K-Pacs : Workstation DICOM, con funciones de almacenamiento y búsqueda en red (query / retrive). Tienen 2 versiones, una gratuita con algunas funciones avanzadas desactivadas y otras de pago que incorporan reconstrucción en 3D.
Amide : Programa en continuo desarrollo para analizar datos volumétricos en imágenes médicas. Programado en GTK+ funciona sobre múltiples plataformas.
Aeskulap : Otro visor DICOM con funciones de red, permite buscar estudios en PACS. Multiplataforma.
Oviyam : Visor Web para imágenes DICOM, integrado con dcm4chee mediante el protocolo WADO.

compartir:
  • Meneame
  • Digg
  • del.icio.us
  • Google
  • De.lirio.us
  • BarraPunto

January 24, 2008 02:48 PM

December 31, 2007

llodra

HowTo : Lazarus + SQLite + WinCE + KOLCE

lazarus Estupendo tutorial de javivf’s blog y Daniel Rincón, para crear aplicaciones con Lazarus y Freepascal que funcionen en Windows CE, y con soporte para la el motor de bases de datos SQLite.

compartir:
  • Meneame
  • Digg
  • del.icio.us
  • Google
  • De.lirio.us
  • BarraPunto

December 31, 2007 09:38 AM

December 30, 2007

ToroOS

Toro Habla!

Bueno luego de un gran periodo de inactividad debido a mis estudios he retomado el Stack TCP-IP , en el screenshot se puede ver a TORO respondiendo un telnet , ha sido una ardua tarea pero va encaminada , en muy poco tiempo tendre lista la nueva version .
Un saludo Matias E. Vara

December 30, 2007 05:21 PM

December 26, 2007

llodra

Instalar Freepascal + Lazarus en Mac OS X

Logo LazarusDespués de probar varias veces a instalarlo sin leer los foros de Lazarus, me he leído los foros de Lazarus, por que no había manera de hacerlo ir.
Ahí va el “como” del meollo :

- Descargar X11 para Mac OS X 10.2 de aquí e instalarlo. Para las versiones posteriores de Mac OS X lo puedes encontrar en el DVD de Instalación.
- Instalar XCODE del DVD de Instalación de Mac OS X. Si no lo tienes, puedes ir a la página de desarrollo de apple, darte de alta y descargartelo (ocupa mucho, casi un gigabyte).
- Instalar Fink. Fink es un gestor de paquetes apt, que permite descargar infididad de paquetes Open Source preparados/portados para Mac OS X.
- Actualizar o Instalar las librerias GTK. En el terminal del Mac escribir :
sudo apt-get update
sudo apt-get install glib glib-shlibs gtk+-shlibs gdk-pixbuf gdk-pixbuf-shlibs

- Descargarse e Instalar Freepascal y Lazarus. Nota : hay que bajarse las dmg del codigo fuente de Freepascal, además de los binarios de Lazarus y Freepascal.
- Ejecutar Lazarus. Abrir X11 (aparecerá el xTerm) y escribir :
cd /usr/local/share/lazarus/
./lazarus

- Para añadir un icono de lazarus en Applications, hay que añadir una nueva aplicación desde el menu de customización de las aplicaciones poner el nombre y en el comando poner : /usr/local/share/lazarus/lazarus.

Fuente : http://wiki.lazarus.freepascal.org/Installing_Lazarus_on_MacOS_X

compartir:
  • Meneame
  • Digg
  • del.icio.us
  • Google
  • De.lirio.us
  • BarraPunto

December 26, 2007 11:52 AM

October 25, 2007

SiR-HaCk

Lazarus-Es ya tiene lista!!

Lazarus como algunos ya saben es un IDE de programación para Freepascal, cada día me va sorprendiendo mas de las novedades que se le va añadiendo y sobre todo los controles que tanto los desarrolladores como personas allegadas al proyecto van desarrollando, mejorando, si usted es un usuario de lazarus les recomiendo que bajen la [...]

October 25, 2007 05:45 PM

October 02, 2007

ToroOS

Articulo sobre Sistemas Operativos

Aqui les dejo el link a un articulo que he publicado en la Revista SL , espero sus comentarios ,
Un saludo Matias Vara .

October 02, 2007 02:18 AM

September 04, 2007

SiR-HaCk

Lazarus y formularios MDI

Como todos ya sabemos lazarus no tiene implementación de formularios MDI, sobre todo en lo que es GTK1 y GTK2, pero me comentaron que con QT4 si se puede tener formularios MDI. Yo también soy de las personas que le gusta tener formularios MDI y no tener las ventanas sueltas, bueno encontré [...]

September 04, 2007 08:10 PM

August 16, 2007

llodra

Leaf2 : Engine 3D para Delphi y FreePascal

Esta “engine” 3D es compatible con Delphi y Freepascal, se basa en el API de OpenGL para renderizar y es multiplataforma (Win32, Linux, MacOS X en desarrollo). Está orientada a la creación de juegos o aplicaciones en primera persona.

Entre las características más destacables del motor 3D, cabe destacar estas :

  • OpenGL
  • Octrees para manejar escenas
  • Multiplataforma
  • motor de Sprites (escalado, rotación y transparencias)
  • Animación de esqueletos
  • Shaders
  • Efectos físicos
  • Efectos 3D de Sonido
  • Librería Matemática
  • Lenguaje script
  • Texturas (JPEG, TG, BMP, …)
  • Modelos (LMX, 3DS, OBJ, MS3D, MD2, …)
  • Formatos de sonido: WAV, OGG.
  • Servidor/Cliente de Red UDP, incluso soporte HTTP y SMTP (email)
  • Sistema extensible de Interfaz de Usuario (GUI)
  • Soporte para Joystick y Video (sólo win32)

No usa componentes visuales, asi que desde el IDE no se pueden ir agregando componentes a un formulario (TForm). El sistema que utiliza es el de Clases dividas en diferentes unidades (UNIT). Así que si deseas utilizar este motor 3D, tienes que utilizar la clausula USES.

Dispone de varios tutoriales para aprender el funcionamiento del motor 3D. Y se puede descargar el código fuente de aquí.

compartir:
  • Meneame
  • Digg
  • del.icio.us
  • Google
  • De.lirio.us
  • BarraPunto

August 16, 2007 09:05 AM

August 12, 2007

SiR-HaCk

Lenguaje de programación Lazarus FPC multiplataforma

Muchos programadores del entorno Windows están migrando a al espectacular Visual Studio .Net y lo mismo están haciendo sus homólogos de Linux al proyecto MONO o en ambos de los casos aceptando al tan popular Java, pero una de las preguntas que todos se hacen ¿Por qué migran de lenguaje de programación? Y lo [...]

August 12, 2007 12:57 AM

August 11, 2007

llodra

Lazarus + GLScene

Hay un web que ha realizado (hace algún tiempo) un instalador del compilador FreePascal (FPK) + el IDE Lazarus + GLScene : www.skinhat.com/lazarus/.

Las versiones, tanto del compilador e IDE como la de GLScene, son antiguas, pero si alguien se decide a investigar las posibilidades de esta combinación, es un modo rápido para comenzar.

Cabe destacar la licencia OpenSource de todas las aplicaciones y la posibilidad de poder acceder tanto a freepascal como a Lazarus desde Linux o MacOSX.

GLSCene son una serie de componentes para kylix, delphi, borland c++ y lazarus (freepascal), creados para permitir desarrollar rápidamente aplicaciones que utilicen la librería 3D OpenGL. Su diseño modular permite crear una escena en 3D desde el IDE, a la que se le pueden añadir objetos, texturas, efectos y obtener una aproximación del resultado mientras se crea la aplicación. Todos los parámetros son accesibles desde las propiedades del objeto.

Lo mejor de estas librerías es que no tienes que aprender todos los comandos OpenGL para poder empezar a programar en 3D (aunque no te vas a librar de tener que echarles un vistazo). Cada componente encapsula las operaciones básicas de la librería asociadas a un objeto en particular.

Características de GLScene :

  • Estructura Jerárquica de Objetos
  • Escena Interactiva
  • Acceso rápido a las funciones de cada objeto de la escena
  • Objetos predefinidos (cámaras, luces, cubos, meshes, … )
  • Soporte para objetos 2D y 1D
  • Acceso directo a funciones OpenGL
  • Efectos Especiales predefinidos
  • Importación de objetos desde 3DStudio
  • Librerías de Materiales
  • Transparencias, canales alpha, texturas comprimidas
  • Uso automático del hardware acelerador 3D disponible
  • Sombras (dinámicas, mapas)
  • Sistemas de Partículas
  • Animación de objetos, esqueletos, suavizado de la animación.
  • Posibilidad de crear GUI en 3D
  • Soporte para librerías de terceros (ODE Physics, SDL, CG NVIDIA, … )
compartir:
  • Meneame
  • Digg
  • del.icio.us
  • Google
  • De.lirio.us
  • BarraPunto

August 11, 2007 11:29 AM

July 16, 2007

ToroOS

Trabajando con Stack TCP-IP

Hola, dejo este post para comentar por donde ando con TORO, ahora me encuentro desarrollando un driver para la placa de red ne2000 , tambien he desarrollado un Cache para la manipulacion de gran cantidad de paquetes , y me encuentro escribiendo los drivers para los protocolos del stack tcp-ip .
Espero poder liberar todo el Stack TCP-IP para la version 0.03
, un saludo Matias E. Vara .

July 16, 2007 04:01 PM

July 12, 2007

develazarus

Generando un archivo XML


Ahora toca el turno de generar el archivo XML, anteriormente habíamos visto como leer un archivo en formato XML, en el cual habíamos utilizado las librerías proporcionadas por Free Pascal, ahora usaremos otras que son nativas para Lazarus, y aprenderemos como añadir paquetes :D

Primero creemos la Interfaz, colocando los siguientes componentes:

Componente Nombre(Name) Caption
TForm Form1 Creando XML
TButton BtnCrear &Crear
TEdit EdComentario  

Creador de XML

Ahora necesitamos ingresar el código, pero antes llamamos a las librerías que necesitamos para que podamos escribir en XML, que en este caso serán las librerías para lazarus: Laz_DOM y Laz_XMLWrite, para ello debemos añadir un paquete a los requeridos del proyecto, esto lo logramos pulsando el menú Proyecto -> Inspector de Proyecto, con esto nos mostrará una ventana con todos los archivos y paquetes con que se compila nuestra aplicación, pulsamos sobre el botón añadir y luego a la pestaña Nuevo Requerimiento:

Requerimientos

Y seleccionamos CodeTools, que es el paquete que contiene las cabeceras que necesitamos (laz_dom.pas y laz_xmlwrite.pas), esto lo pueden verificar si van a la carpeta components/codetools en donde este instalado lazarus.

Luego de esto, debemos verificar que en la ventana del inspector del proyecto aparezca CodeTools, en la lista de paquetes requeridos:

Ventana del inspector de proyecto

Ahora debemos agregar Laz_DOM y Laz_XMLWrite a la clausula Uses e ingresamos el código para el evento OnClick del BtnCrear:

procedure TForm1.BtnCrearClick(Sender: TObject);
var
  Doc : TXMLDocument;
  DomNodo, DomRaiz, DomDato : TDOMNode;
begin
  //Creamos un documento
  Doc:=TXMLDocument.Create;
  //Creamos la raiz del documento
  //nombrandolo “ejemplo”
  DomRaiz:=Doc.CreateElement(‘ejemplo’);
  //despues de añadir un nodo al documento este es vaciado
  Doc.AppendChild(DomRaiz);
  //por lo tanto recuperamos el puntero
  DomRaiz:=Doc.DocumentElement;
  //Creamos el primer Nodo del documento
  DomNodo:=Doc.CreateElement(‘PrimerDato’);
  //Hacemos un casting a la variable DomNodo
  //de tipo TDOMElement para poder
  //colocarle atributos.
  TDOMElement(DomNodo)['atributo']:=‘algunvalor’;
  //agregamos el nodo al nodo raiz
  DomRaiz.AppendChild(DomNodo);
  //Como la variable DomNodo ha sido vaciada
  //podemos crear otro nodo con la misma
  //variable
  DomNodo:=Doc.CreateElement(’segundoDato’);
  //creamos tambien un nodo de texto
  DomDato:=Doc.CreateTextNode(‘contenido’);
  //asignacion de parametro al nodo
  TDOMElement(DomNodo)['tipo']:=‘cadena’;
  //Añadimos el nodo de texto al nodo DOMNodo
  DomNodo.AppendChild(DomDato);
  //Al primer nodo hijo (PrimerDato) de la raiz
  //le añadimos el nodo contenido en DomNodo
  DomRaiz.ChildNodes.Item[0].AppendChild(DomNodo);
  //creamos otro nodo pero de comentario
  //con el texto del TEdit
  DomDato:=Doc.CreateComment(EdComentario.Text);
  //añadimos directamente el nodo de comentario
  //al mismo nivel que “PrimerDato”
  DomRaiz.AppendChild(DomDato);
  //Escribimos el archivo
  WriteXMLFile(Doc,‘prueba.xml’);
  //Liberamos Memoria.
  Doc.Free;
end;

Compilamos, y estamos listos.

Esto nos creará un archivo prueba.xml como este:

<?xml version=”1.0″?>
<ejemplo>
  <PrimerDato atributo=“algunvalor”>
    <segundoDato tipo=“cadena”>contenido</segundoDato>
  </PrimerDato>
  <!–Escriba su comentario–>
</ejemplo>

Ahora puede probar abrirlo con el proyecto que hicimos anteriormente :)

July 12, 2007 04:29 AM

July 09, 2007

develazarus

Solución de problemas con lecturas de XML


Después de hacer una búsqueda intensiva, he encontrado algunos fallos con lecturas de archivos xml, especialmente cuando contienen caracteres como “ñ” o vocales tildadas.

Simplemente es cuestión de crear un archivo que le indique a las librerías gtk en que codificación deben leer los archivos.

Deben crear o modificar un archivo en su home, llamado .gtkrc.mine si usan gtk y .gtkrc-2.0 si usan gtk2 para Lazarus.

style “default-text” {
fontset = “-*-arial-medium-r-normal–*-100-*-*-*-*-iso8859-1,\
-*-helvetica-medium-r-normal–*-100-*-*-*-*-*-*”
}

class “GtkWidget” style “default-text”

Luego puede compilar de nuevo su código y verán los resultados.

July 09, 2007 05:57 AM

July 02, 2007

DhabyX

Nuevo Blog!!


 Captura develazarus

Recién hace un par de semanas abrí un blog con un amigo, Polux, el cual será dedicado a uno de mis lenguajes favoritos, Object Pascal, y con la IDE que mas me ha gustado para desarrollo de aplicaciones, Lazarus, si están interesados pueden verla en develazarus.wordpress.com; aún va en fase de inicios, pero de a poco ira creciendo :)

July 02, 2007 07:00 PM

develazarus

Leer Archivos XML con Lazarus I


XML es un formato de archivo bastante entendible para guardar documentos estructurados o pasar información de programa a programa, por lo que se hace necesario conocerlo, Free Pascal tiene librerías necesarias para poder leer y escribir en este formato, fáciles de aprender e igualmente de aplicar, en este primer post solo veremos como acceder y leer los archivos XML obteniendo los datos fácilmente.

Abrimos Lazarus y creamos un nuevo proyecto. Luego en el formulario colocamos estos componentes y les colocamos las propiedades siguientes:

Componente Nombre(Name) Caption
TForm FLMXL Lector XML
TButton BtnLeer &Leer XML
TButton BtnCerrar &Cerrar
TMemo Memo

Colocando los componetes tomando como ejemplo la siguiente imágen:

FormularioXML

Y guardamos el proyecto.

Para acceder a las funciones de manejo de XML en Lazarus o Free Pascal solamente debemos llamar a las librerías DOM y XMLRead, añadiéndolas a la lista de librerías en la clausula uses.

Ahora necesitamos un archivo XML para las pruebas, dentro del cual escribiremos lo siguiente:

<?xml version=”1.0″?>
<ejemplo>
  <ejemploinfo>
    <autor>develazarus</autor>
    <fecha>1 de Julio de 2007</fecha>
    <dato>primer dato</dato>
    <dato>Segundo dato</dato>
    <dato>Tercer dato</dato>
    <dato>Cuarto dato</dato>
    <val tipo=“dato cadena”>inspeccionando</val>
  </ejemploinfo>
  <texto>
    <cabecera>Esto es la cabecera</cabecera>
    <linea>Esto es una linea de texto.</linea>
  </texto>
</ejemplo>

lo guardamos con el nombre “ejemplo.xml” dentro de la carpeta donde guardamos el proyecto, para que sea fácilmente accesible desde el código.

El código XML es tratado por las librerías como un conjunto de nodos, por lo que podríamos ejemplificar el archivo anterior de la siguiente manera:

Nodos XML

En XML todo empieza con el nodo raiz, que en el caso de nuestro archivo es “ejemplo”, luego estan los nodos hijos de la raiz, que son ejemploinfo y texto, y estos a su vez son nodos padre de cada uno de los nodos que están abajo.

Cada nodo puede tener datos o atributos, los datos o valores de los nodos que vemos en el archivo ejemplo.xml, como por ejemplo el de autor (develazarus), es otro nodo, un nodo hijo del nodo autor, si obtuviésemos el valor del nodo autor no nos devolvería nada. Los datos y atributos de cada nodo son tratados como nodos hijos, esto es algo que hay que tener en cuenta.

Pero empecemos para ver como funciona ya en Lazarus:

En el evento onClick de BtnLeer colocamos:

procedure TFLXML.BtnLeerClick(Sender: TObject);
var
  //variable de tipo TXMLDocument para cargar documentos XML
  Doc :  TXMLDocument;
  i, j : integer;
begin
  Doc := TXMLDocument.Create;
  //cargando el archivo XML
  ReadXMLFile(Doc, ‘ejemplo.xml’);
  Memo.Lines.Clear;
  //obteniendo el nombre del nodo raiz
  Memo.Lines.Add(‘Archvo tipo : ‘+Doc.DocumentElement.NodeName);
  //trabajando con los nodos inferiores a la raiz
  with Doc.DocumentElement.ChildNodes do
  begin
    {la variable “Count”, propiedad de ChildNodes
     contiene el numero total de nodos hijos que existen
     en este caso en el nodo raiz}
    for i := 0 to (Count - 1) do
    begin
      {Item[i] es el nodo al que vamos a acceder y su propiedad
       NodeName nos devuelve el nombre del nodo}
      Memo.Lines.Add(intToStr(i)+‘. ‘+Item[i].NodeName);
      {ahora usamos la propiedad Count pero ahora de los nodos
       con los que estamos trabajando}
      for j := 0 to (Item[i].ChildNodes.Count - 1) do
      begin
        {ahora entraremos a los nodos hijos de los nodos
         anteriores}
        with Item[i].ChildNodes do
        begin
          {Item[j].FirstChild nos devuelve el primer nodo hijo y
           NodeValue es la propiedad que nos devolvera el valor
           o contenido de ese nodo}
          Memo.Lines.Add(IntToStr(i)+‘.’+IntToStr(j)+‘ ‘
            + Item[j].NodeName + ‘ -> ‘
            + Item[j].FirstChild.NodeValue);
          if Item[j].NodeName = ‘val’ then
            Memo.Lines.Add(‘  Atrbuto “tipo” del nodo val = ‘
            + Item[j].Attributes.GetNamedItem(‘tipo’).NodeValue);
              {Para obtener los atributos de un nodo
               utilizamos la propiedad Attributes}
        end;
      end;
    end;
  end;
  Doc.Free;
  //es necesario liberar la memoria que ocupo la variable Doc
end;

y en evento onClick de BtnCerrar colocamos:

procedure TFLXML.BtnCerrarClick(Sender: TObject);
begin
  Close;
end;

Solo nos resta compilar y ejecutar la aplicación, esto lo podemos hacer fácilmente con la tecla F9 ;)

Luego de esto ya tendremos nuestra aplicación leyendo los datos del archivo XML.

Lector de XML Funcionando

Basado en iformación de:
Homepage Von Thomas Zastrow -> FPC y XML (inglés)
XML Tutorial -> Tutorial explicativo de XML (inglés)
Document Object Model -> Especificación del modelo DOM (inglés)
Lazarus wiki -> Tutorial de Lazarus con XML (inglés)

July 02, 2007 04:41 AM

June 27, 2007

develazarus