Tema: Sobre dll
Ver Mensaje Individual
  #3  
Antiguo 22-08-2007
dtomeysoto dtomeysoto is offline
Miembro
 
Registrado: dic 2005
Posts: 173
Reputación: 19
dtomeysoto Va por buen camino
Ya revisé el hilo anterior y de ahi me fui metiendo en los otros hilos y aunque he ganado en conocimiento me quedan algunas dudas.

Por ejemplo hice la siguiente dll:

Código:
library ParadoxUtils;

uses SysUtils, BDE, DBTables, DB;

{$R *.res}

procedure PackTable(aAliasName, aTableName: PChar); export;
var
  PxStruct: CRTblDesc;
  db:TDataBase;
begin
  with TTable.Create(nil) do
  try
    DatabaseName := aAliasName;
    TableName := aTableName;
    Exclusive := True;
    Open;
    Db := Session.FindDatabase(aAliasName);
    Db.KeepConnection := True;
    Close;
    FillChar(PxStruct, SizeOf(PxStruct), 0);
    StrPCopy(PxStruct.szTblName, aTableName);
    PxStruct.bPack := True;
    if DbiDoRestructure(Db.Handle, 1, @PxStruct, nil, nil, nil, False) <> DBIERR_NONE
       then raise EDatabaseError.Create('Error en tabla' + aTableName);
    Db.Connected := False;
  finally
    Free;
  end;
end;

exports
  PackTable;

begin
end.
Este procedimiento lo que hace es hacerle un pack a una tabla paradox (lo tomé prestado de los trucos)

Ahora en mi aplicación hice la siguiente declaración:

Código:
interface
...
procedure PackTable(AliasName, TableName: PChar); far; external 'ParadoxUtils.dll';
...
y más adelante:

Código:
...
PackTable(PChar('GasTel'), PChar('REGISTRO.DB'));
...
Hasta aquí todo me ha funcionado bien pero me ha surgido la duda al revisar los hilos y ver el uso de las funciones LoadLibrary y FreeLibray en unos ejemplos para poner formas dentro de una dll. Estas funciones se usan solo en estos casos o yo en mi aplicación tendría que hacer algo parecido para usar el procedimiento que escribi en la dll.

Es decir cuando mi aplicación se está ejecutando y llego al punto de llamar a PackTable ella carga en memoria la dll, o cuando compilé mi aplicación se le incorporó el código desde la dll?

Es responsabilidad del programador o eso lo hace el SO?

Disculpe si soy extenso pero lei
Cita:
Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita