Como dice orlando9427 verificas si existe. suponiendo que cambia el current directory al iniciar la aplicacion podrías obtener la ruta donde tienes la dll obteniendo el current directory (ovio si la copias a temp de una cuando inicia el progama)


no tengo el ide a la mano pero deberia funcionar asi
var
  dir : string;

dir := GetCurrentDir;
saludos
Imagen
A ver si me entero bien..

Tienes tu programa y tu dll en el mismo directorio, correcto?
Y quieres que al abrir el programa, compruebe la existencia de la dll en el directorio del proyecto, y si existe, copiarla a %temp%, y por último cargarla con LoadLibrary, cierto?

Primeramente deberías especificar la función a usar de la dll, de eso ya te encargas tú.

Lo principal que pides así lo puedes hacer, no te compliques la vida:
//uses windows, sysutils;

Function mEnviron(VName: string): string;
var Res: array [0..MAX_PATH] of Char;
begin
ExpandEnvironmentStrings(PChar('%' + VName + '%'), Res,
ExpandEnvironmentStrings(PChar('%' + VName + '%'), Nil, 0));
Result:= Res;
end;

var
  LibH: THandle;
  TempLib: string;
Const
DllName = 'midll.dll';
begin
  LibH:= 0;
  TempLib:= mEnviron('temp') + '\' + DllName;
  if fileexists(DllName) then
    if copyfile(DllName, PChar(TempLib), True) then
      LibH:= LoadLibrary(PChar(TempLib));
  if LibH <> 0 then
    begin
      {Aquí las acciones a realizar si
      la librería se ha cargado desde %temp% ...}
    end;
end;
Con esto que pusiste antes:

Edit1.Text := SetCurrentDirectory (Pchar(GetTempDir2));

Me mataste vivo compañero, No puedes asignar a edit1.text el resultado de tipo [Enlace externo eliminado para invitados] que devuelve la función [Enlace externo eliminado para invitados]

Si lo que quieres es mostrar en el edit el directorio actual, usa [Enlace externo eliminado para invitados]

Un saludo.
UDTools.net
GitHub: https://github.com/MetalUDT
Responder

Volver a “Delphi”