Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-04-2014
webmasterplc webmasterplc is offline
Miembro
 
Registrado: mar 2008
Posts: 274
Poder: 17
webmasterplc Va por buen camino
Pasar Esta Funcion de Calculo de edad a dll

Buenas la consulta es como hago para pasar una función a una dll aca esta la funcion es especificamente para calcular antiguedad o la edad, es para hacer una dll y colocarla a los proyectos y solo pasarle parametros de fecha y ella regrese la edad la funcion es esta.

Código Delphi [-]function anosMesesDias(fechaInicio : TDate; fechaFin : TDate) : string; var anos, meses, dias, m : Integer; begin anos := YearOf (fechaFin) - YearOf (fechaInicio); if MonthOf (fechaInicio) > MonthOf (fechaFin) then anos := anos - 1; if MonthOf (fechaFin) < MonthOf (fechaInicio) then meses := 12 - MonthOf (fechaInicio) + MonthOf (fechaFin) else meses := MonthOf (fechaFin) - MonthOf (fechaInicio); if DayOf (fechaFin) < DayOf (fechaInicio) then begin meses := meses - 1; if MonthOf (fechaFin) = MonthOf (fechaInicio) then begin anos := anos - 1; meses := 11; end; end; dias := DayOf (fechaFin) - DayOf (fechaInicio); if dias < 0 then begin m := MonthOf (fechaFin) - 1; if m = 0 then m := 12; case m of 1, 3, 5, 7, 8, 10, 12 : dias := 31 + dias; 4, 6, 9, 11 : dias := 30 + dias; 2 : begin if ((YearOf(fechaFin) mod 4 = 0) and (YearOf(fechaFin) mod 100 <> 0)) or (YearOf(fechaFin) mod 400 = 0) then dias := 29 + dias else dias := 28 + dias; end; end; end; result := IntToStr (anos) + ' años, ' + IntToStr (meses) + ' meses, ' + IntToStr (dias) + ' días'; end;
Responder Con Cita
  #2  
Antiguo 09-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola webmasterplc.

No es muy complicado, declara la DLL de este modo:
Código Delphi [-]
library FuncFechDLL; // (el nombre que desees)

{$R *.res}

uses
  SysUtils, Classes, 
  Controls, DateUtils; // las necesita tu código

// Aquí pone el código de tu función (Fijate que cambié el resultado de string a PChar)
function AnosMesesDias(fechaInicio: TDate; fechaFin: TDate) : PChar; stdcall;
var
  anos, meses, dias, m : Integer;
begin
  ...
  Result:= PChar(IntToStr(anos)+' años, '+IntToStr(meses)+' meses, '+IntToStr(dias)+' días');
end;

exports AnosMesesDias;

begin

end.
y compilala.

Ejemplo de uso:
Código Delphi [-]
...
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;

implementation {$R *.dfm}

// Esta linea declara a AnosMesesDias como una función  
// externa que deberá ser buscada en la DLL
function AnosMesesDias(fechaInicio: TDate; fechaFin: TDate): PChar; 
  stdcall external 'FuncFechDLL.dll'

procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption:= AnosMesesDias(StrToDate('15/08/2003'), StrToDate('09/04/2014'));
end;
El ejemplo supone la dll en el mismo sitio que el ejecutable, también podes ubicarla en la ruta del sistema para que pueda ser accedida desde cualquier ruta.

No voy a explayarme mas en detalles ya que desde hace años exísten muchos artículos, tutoriales y videos que lo hacen de manera excelente. Te pongo algunos enlaces externos ya que supongo que has buscado en nuestros foros y no hallaste al respecto...
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 09-04-2014
webmasterplc webmasterplc is offline
Miembro
 
Registrado: mar 2008
Posts: 274
Poder: 17
webmasterplc Va por buen camino
Gracias hermano ya este ejemplo me sirve para extenderme saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Alternativas a esta funcion JuanOrtega Varios 4 14-07-2013 21:25:47
Ayuda con esta Función Ledian_Fdez Varios 11 30-04-2010 18:03:45
Que hace esta función en VB? mqm Varios 1 15-10-2007 20:30:15
consulta y calculo de edad gmontes SQL 3 06-04-2005 22:24:54
Sintaxis de esta Función cmgenny Varios 5 11-05-2003 06:43:01


La franja horaria es GMT +2. Ahora son las 13:58:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi