Asunto: DLL - Repositorio - Orientación y consejo se solicita
Nuevamente acudiendo a los amigos del foro ... gracias por la paciencia
Debido a que recién estoy dando los primeros pasos, esta vez es para pedirles que me orienten en la forma de encarar lo siguiente ....
Provengo de Clarion, todas mis rutinas comunes, las almacenaba en una DLL.
En Delphi comencé a utilizar la misma metodología, pero quisiera saber si en lugar de utilizar DLL, existe la manera de colocar esas "units" en el repositorio para poder heredarlas en diferentes proyectos.
Otra vez gracias a todos
Guillermo
Publicado:
Dom Ene 04, 2009 11:09 am
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: DLL - Repositorio - Orientación y consejo se solicita
Anuncios
glsaavedra escribió:
Nuevamente acudiendo a los amigos del foro ... gracias por la paciencia
Debido a que recién estoy dando los primeros pasos, esta vez es para pedirles que me orienten en la forma de encarar lo siguiente ....
Provengo de Clarion, todas mis rutinas comunes, las almacenaba en una DLL.
En Delphi comencé a utilizar la misma metodología, pero quisiera saber si en lugar de utilizar DLL, existe la manera de colocar esas "units" en el repositorio para poder heredarlas en diferentes proyectos.
Otra vez gracias a todos
Guillermo
Sí podrías, por ejemplo, podrías tener una Unidad de Delphi llamada "Procedimientos.pas" con las funciones y procedimientos útiles para cualquier proyecto, por ejemplo:
Contenido de ejemplo de la Unidad "procedimientos.pas":
Código:
unit UnidadProcedimientos;
interface
uses inifiles, SysUtils, DateUtils;
var
function anoMesDia (fecha : TDateTime) : string;
procedure esCadINI (clave, cadena, valor : string);
function leCadINI (clave, cadena : string; defecto : string) : string;
implementation
function anoMesDia (fecha : TDateTime) : string;
var
ano, mes, dia, hora, minuto, segundo, milisegundo : Word;
txMes, txDia : string;
begin
DecodeDateTime(fecha, ano, mes, dia, hora, minuto, segundo, milisegundo);
txMes := inttostr(mes);
if Length (txMes) = 1 then
txMes := '0' + txMes;
txDia := inttostr(dia);
if Length (txDia) = 1 then
txDia := '0' + txDia;
Result := inttostr(ano) + '-' + txMes + '-' + txDia;
end;
//Lee una cadena de texto de un INI
function leCadINI (clave, cadena : string; defecto : string) : string;
begin
with tinifile.create (changefileext(paramstr(0),'.INI')) do
try
result := readString (clave, cadena, defecto);
finally
free;
end;
end;
//escribe una cadena de texto en un INI
procedure esCadINI (clave, cadena, valor : string);
begin
with tinifile.create (changefileext(paramstr(0),'.INI')) do
try
writeString (clave, cadena, valor);
finally
free;
end;
end;
end.
A continuación, para que puedas utilizar estos procedimientos y funciones en un proyecto, agrega esta unidad al proyecto, desde "Project" - "Add to project". Luego, en los formularios (Form), unidades (unit) o módulos (DataModule) que quieras utilizar alguna función o procedimiento de la unidad "procedimientos", en el USES tendrás que agregar "procedimientos", desde el menú "File" - "Use unit...":
Código:
.........
public
{ Public declarations }
end;
var
formMenuPrincipal: TformMenuPrincipal;
implementation
uses UnidadProcedimientos;
{$R *.dfm}
procedure TformMenuPrincipal.ejecutarFichero ();
var
resEj : THandle;
parametros, parametrosP1, parametrosP2 : string;
begin
...........
Para usar alguna de las funciones o procedimientos de la unidad "procedimientos" es suficiente con poner su nombre, por ejemplo:
Código:
txtCarpetaDestino.Text :=
leCadINI('Copia', 'Carpeta de destino', '');
Esta es una forma de hacerlo, quizás menos "engorrosa" que utilizar librerías DLL. Aunque tienes que tener en cuenta que la ventaja de utilizar DLL es que lo que contienen no "ocupa memoria" si no la utilizas y, además, el fichero ejecutable del proyecto será más pequeño.
Publicado:
Vie Ene 16, 2009 9:30 am
glsaavedra Buen usuario
Registrado: Dec 25, 2008 Mensajes: 7
Asunto:
Muchas gracias, muy clara tu explicación, en especial para un novato en Delphi como yo
Guillermo
Publicado:
Vie Ene 16, 2009 12:36 pm
glsaavedra Buen usuario
Registrado: Dec 25, 2008 Mensajes: 7
Asunto:
Continúo con el tema ....
Siguiendo tu explicación, generé una Unit, la cual luego incluí en mi proyecto, con esto logré reemplazar la dll.
Mantuve el mismo nombre de procedimiento. No tengo errores de sintaxis, dado que el IDE así lo indica.
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A