Wednesday, 8 July 2009

Importando librerías externas a Delphi

Muchas veces tendremos que trabajar con componentes de terceros y no es un trabajo fácil. Delphi permite realizar la importación de librerias registradas en el sistema o directamente añadirlas a su registro y luego crea una unit TLB (Borland Type Library) que genera toda las llamadas a los métodos de la librería. De ésta manera nosotros vemos unas interfícies en delphi y podemos hacer las llamadas a sus métodos de una manera más transparente. Aquí os dejo un ejemplo bastante simple, con el cuál creare el TLB de la librería "Facebook photo Uploader 5". Para ello, crearemos un proyecto nuevo, un VCL Forms Application, y luego nos dirigiremos a Component -> Import Component.

Seleccionaremos Import Type Library y continuaremos con "Next".

Ahora seleccionamos la librería mencionada anteriormente y continuamos con el "Next".

Generamos los component Wrappers y luego importamos la unit TLB dentro de nuestro proyecto:

Una vez creada la clase wrapper, la podemos ver en el editor de delphi:

Ahora, para utilizar ésta librería qué tenemos que hacer?.

Normalmente al final de la librería viene creada la clase envoltorio para las interfaces, pero sino sabemos como hacerlo, lo tenemos que hacer de ésta manera:

Imaginad que queremos utilizar la interfaz IImageUploader que es la que nos permite subir las fotos a facebook. Pues bien, para poder utilizar ésta interfaz, debemos crear una clase y construir un objeto que envuelva ésta interfaz.

ésto lo conseguimos de la siguiente forma:




uses
comObj;

type
TFacebookCOMUploader = Class
class function Create: IImageUploader;
End;

class function TFacebookCOMUploader.Create: IImageUploader;
begin
Result := CreateComObject(CLASS_ImageUploader) as IImageUploader;
end;




Ahora, para utilizarlo solo tenemos que hacer:




uses
comObj, ImageUploaderControlLibrary_TLB;

procedure TForm1.Button1Click(Sender: TObject);
var
MyFacebookCOMUploader: IImageUploader;
begin
MyFacebookCOMUploader := TFacebookCOMUploader.Create;
Edit1.text := MyFacebookCOMUploader.GuiGraphicsVersion;
end;




En éste ejemplo sencillo simplemente recupero el valor de la versión del GUI, y lo vuelco en el edit1.text para mostrarlo por pantalla. Hay que tener en cuenta que tiene que coincidir la interfaz a llamar con su TGUID que es el valor que hay en el registro de windows. (Lo podemos buscar mediante el regedit).

Una vez hecho todo ésto, ya podemos trabajar con la librería externa utilizando un wrapper en delphi. En otro post os explicaré mejor lo de los COM Objects y como trabajar con ellos en Delphi, y de los DCOM también.
  • Enlaces de interés:
Programación COM.

3 comments:

  1. y para importar una libreria que yo hice en Visual estudio como le hago

    ReplyDelete
  2. hola necesito como importar una libreria que esta echo en VB.NET EN delphi como puedo hacer esto

    ReplyDelete
    Replies
    1. De la misma manera. Selecciona import .net assembly.
      Jordi

      Delete