Ir al contenido


Foto

Como crear librerías


  • Por favor identifícate para responder
8 respuestas en este tema

#1 ramiro_md

ramiro_md

    Advanced Member

  • Miembros
  • PipPipPip
  • 84 mensajes

Escrito 19 julio 2012 - 04:09

Buenas, quiero crear lo siguiente, un archivo con algunos procedures comunes en mi aplicación.
Una vez hecho, incluirlo a la unit cuando lo necesite y utilizar los procedures que definí. Algo así como un TAD.
Algo asi como los .h de C.

Saludos y gracias,
  • 0

#2 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 mensajes
  • LocationOaxaca, México

Escrito 19 julio 2012 - 04:18

Que tal ramiro_md, este post en el foro oficial de Lazarus podría apoyarte, con un ejemplo para descarga:

Link:http://www.lazarus.f...hp?topic=8321.0

Saludos
  • 0

#3 ramiro_md

ramiro_md

    Advanced Member

  • Miembros
  • PipPipPip
  • 84 mensajes

Escrito 19 julio 2012 - 04:44

Que tal ramiro_md, este post en el foro oficial de Lazarus podría apoyarte, con un ejemplo para descarga:

Link:http://www.lazarus.f...hp?topic=8321.0

Saludos


Ey muchas gracias, me ha funcionado !.
Comento un poco lo que hice, para futuras consultas mías y de terceros:
Creo una nueva Biblioteca desde "Archivo -> Nuevo -> Biblioteca".
Este es el código:


delphi
  1. library prueba;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. uses
  6.   Classes
  7.   { you can add units after this };
  8.  
  9. {$R *.res}
  10.  
  11. function TestDLL():integer;
  12. begin
  13.     TestDLL := 1;
  14. end;
  15.  
  16. exports TestDLL;
  17.  
  18. begin
  19. end.
  20.      


Muy sencillo, una función que devuelve 1, solo para saber si la inclusión ha sido exitosa.
La compilo y me genera el dll de nombre "prueba".

Lo incluyo a mi unit, luego del USES y antes del TYPE:


delphi
  1. function TestDLL():integer; stdcall; external 'prueba.dll' name 'TestDLL';
  2. { tipo de modulo + nombre + si devuelve algo + ruta del dll + el nombre para invocar en mi unit}



Acá la invoco:


delphi
  1. ShowMessage( IntToStr(TestDLL()) );




Y sale el cartel con el 1.

Saludos y gracias !
  • 0

#4 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 20 julio 2012 - 12:29

Buenas,

Eso es una dll de toda la vida. Si existieran en Lazarus (que lo desconozco), yo me inclinaría por el uso de packages
  • 0

#5 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 mensajes
  • LocationOaxaca, México

Escrito 20 julio 2012 - 07:11

Las dll de este tipo me han funcionado en varias plataformas, incluyendo Firebird con UDF y Linux; es la ventaja principal de Lazaruz aún.

Saludos
  • 0

#6 German

German

    Member

  • Miembros
  • PipPip
  • 40 mensajes

Escrito 21 julio 2012 - 05:12

Ramiro:
Tendrias que contarnos si lo que quieres son librerias de enlace dinamico o de enlace estatico. Si lo que quieres son librerias de enlace dinamico te recomiendo que leas esto http://www.freepasca...198-20800016.6, si lo que quieres son librerias de enlace estatico o modulos te recomiendo que leas esto http://www.freepasca...190-20000016.2.
Igualmente de todas formas te recomiendo que leas toda la la documentacion de fpc http://www.freepascal.org/docs.var, en especial la referencia del lenguaje http://www.freepasca...l/ref/ref.html, de esta forma podras conocer toda la potencia del lenguaje ObjectPascal.
Saludos.
  • 0

#7 ramiro_md

ramiro_md

    Advanced Member

  • Miembros
  • PipPipPip
  • 84 mensajes

Escrito 25 julio 2012 - 10:19

Si bien lo he conseguido con las DLL, creo que mi idea era el uso de la Unit.
Ya leeré todo con más detenimiento.

Saludos y gracias.
  • 0

#8 fajprieto

fajprieto

    Member

  • Miembros
  • PipPip
  • 28 mensajes
  • LocationCapilla del Monte

Escrito 26 julio 2012 - 03:57

A ver...

Segui este ejemplo al pie de la letra...

Sin embargo al compilar se me marca en rojo la ultima linea

begin
end

recuadrado en rojo y end con un fondo rojo como indicando un error.

El ide que estoy utilizando es el provisto por codeTyphon. Ah por otra parte no logro que me aparezca la ventana de mensajes como en el Lazarus común.

Si abro el proyecto desde el Lazarus comun en la ventana de mensajes me dice esto:

Rutinas.lpr(19,1) Error: Can't open resource file "C:\FuentesLazarus\Rutinas\Rutinas.res"

Una cosita mas ... las dll deseo consumirlas desde VFP para realizar una migración progresiva a Lazarus...

Gracias,

Pancho
Argentina
  • 0

#9 fajprieto

fajprieto

    Member

  • Miembros
  • PipPip
  • 28 mensajes
  • LocationCapilla del Monte

Escrito 26 julio 2012 - 06:07

Me respondo parte del problema.

La ubicacion de las ventanas estan pensadas para una resolucion de 1024, pero yo estoy trabajando en una netbook y mi resolucion máxima es 800.

Primero pense que se trataba de un error de no mostrar las ventanas, pero revisando el CodeTyphon Center me tope con una carpeta que maneja los seteos del ide de Lazarus.
En dicha ubicacion (en el archivo environmentoptions) estan las dimensiones y ubicaciones de todas las ventanas que se ven en el ide.

En mi caso estas eran las caracteristicas de la ventana de Mensajes...


      <MessagesView>
        <Caption Value="Ventana de Mensajes"/>
        <WindowPlacement Value="RestoreWindowGeometry"/>
        <CustomPosition Top="357" Left="-146" Width="913" Height="376"/>
        <WindowState Value="Normal"/>
      </MessagesView>

Coloque otras ubicaciones, pero siempre resetea los valores y al salir los valores pasan a ser los mismos...

Sigo investigando para ver como puedo resolverlo.

Saludos,

Pancho
Argentina


  • 0




IP.Board spam blocked by CleanTalk.