Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-01-2004
jac000y jac000y is offline
No confirmado
 
Registrado: may 2003
Posts: 14
Poder: 0
jac000y Va por buen camino
me parece que lo que esta fallando es ExtractFileDir,

no conozco bien como funciona, pero FileExists no te daria ese error
Responder Con Cita
  #2  
Antiguo 29-01-2004
darkone2k3 darkone2k3 is offline
Miembro
 
Registrado: oct 2003
Ubicación: Frente al Computador.
Posts: 29
Poder: 0
darkone2k3 Va por buen camino
El problema no está en ExtractFileDir, porque cambié un poco el código para que me mostrara un mensaje si existe el archivo o no, y aún así me aparece el error de que no existe el archivo Funciones.dll, ni si quiera me muestra el mensaje "existe" o "no existe", que he puesto en los ShowMessage.

Código:
   If FileExists( ExtractFilePath( Application.ExeName ) + 'Funciones.dll' ) Then
      ShowMessage( 'existe' )
   Else
   Begin
      ShowMessage( 'no existe' );
      Directory := ExtractFileDir( ParamStr( 0 ) );
      mxStorage1.ExtractTo( Directory );
   End;
Responder Con Cita
  #3  
Antiguo 29-01-2004
uhilari uhilari is offline
Miembro
 
Registrado: ene 2004
Posts: 21
Poder: 0
uhilari Va por buen camino
Talking

Hola

Me parece que el enlace a la Dll es el problema, si es un enlace estatico pues piensa en cargarlo mejor en forma dinamica, ya que si es un enlace estatico al inicializar la aplicación y antes de que se ejecute cualquier linea de codigo el mismo windows verifica la existencia del Dll y si no existe entonces bota ese error. Si cambias a la asignación dinamica no tendras ningun problema.

Suerte
Responder Con Cita
  #4  
Antiguo 29-01-2004
darkone2k3 darkone2k3 is offline
Miembro
 
Registrado: oct 2003
Ubicación: Frente al Computador.
Posts: 29
Poder: 0
darkone2k3 Va por buen camino
Y cómo se hace eso?, porque yo la declaro de esta forma:
Código:
Function ValRut( Rut: String ): String; StdCall; External 'Funciones.dll' Name 'ValRut';
Me podrías explicar como se hace por favor.
Responder Con Cita
  #5  
Antiguo 29-01-2004
Descendents Descendents is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 396
Poder: 22
Descendents Va por buen camino
Si yo por el error que dices yo creo que uhilari tiene razon.

Por ejemplo

ESTATICA
//declaracion
procedure DllMessage(s:string); external 'dll.dll'

//La llamas
procedure TForm1.Button1Click(Sender: TObject);
begin
DllMessage('hola');
end;

----------------------------------------------------

DINAMICA
//declaracion
type
GetFunc = procedure( Param: string ); register;

var GF : GetFunc;
H : Thandle;

//La llamas

procedure TForm1.Button1Click(Sender: TObject);
begin
h := LoadLibrary( 'dll.dll' );
If H <> NULL then begin
@GF := GetProcAddress( h, 'DllMessage' );
GF('hola');
FreeLibrary( h );
end;
end;

Saludos
__________________
La victoria tiene cien padres. La derrota es huérfana (Napoleón).
Responder Con Cita
  #6  
Antiguo 30-01-2004
darkone2k3 darkone2k3 is offline
Miembro
 
Registrado: oct 2003
Ubicación: Frente al Computador.
Posts: 29
Poder: 0
darkone2k3 Va por buen camino
Muchas gracias a todos los que me respondieron.

Tenías razón uhilari el problema se debía a que la carga de la dll era estática.
Me sirvió bastante tu código Descendents con ese código solucioné el problema.

Muchas gracias.
Responder Con Cita
  #7  
Antiguo 30-01-2004
uhilari uhilari is offline
Miembro
 
Registrado: ene 2004
Posts: 21
Poder: 0
uhilari Va por buen camino
Hola de nuevo

Vaya Descendens me gano la publicación del codigo; pero para ser sinceros no me gusta la forma como lo hizo, me refiero a la utlización de las Variables globales GF y h yo prefiero variables locales o en todo caso un atributo de la clase TForm1; pero como dije antes el codigo funciona aunque les aconsejo en la medida de las posibilidades no usar las variables globales siempre traen problemas.

Suerte a Todos
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


La franja horaria es GMT +2. Ahora son las 14:26:35.


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