Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-12-2007
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 20
Enan0 Va por buen camino
Crear una COM DLL

Hola, Buenos dias.

HE creado una DLL Simple DLL, La cual ejecuta una consulta SQL, y luego Desencripta un password. la cual he probado con una aplicacion delphi. y fuiona correctamente. eh aqui en codigo

Código Delphi [-]
uses
  SysUtils,
  Classes,
  Db,
  ADODB,
  windows,
  Xutil,
  Ttpwcryp,
  Scryp,ttid;

{$R *.RES}

   Function DecryptPSw(s:string;Idlow:integer):string;
   var i:integer;
      aux:ShortString;

   begin
      aux:=s;
      RemoveGarbageHex(aux);
      aux:=HexStrToBinStr(aux);
       Decrypt(aux[1],Length(aux));
           for i:=1 to Length(aux) do
              aux[i]:=Char(Ord(aux[i])-IdLow mod i);
           result:=aux;
   end;

   Function Loggin(Usr,Psw:String):boolean; STDCALL;
   var
      Cnx:TADOConnection;
      Query:TADOQuery;
      tmppw:TPasswordString;
      aux:ShortString;
   begin
      if FileExists(ExtractFilePath(ParamStr(0))+'\Connection.udl') then begin
         Cnx:=TADOConnection.Create(nil);
         Cnx.ConnectionString:='FILE NAME='+ExtractFilePath(ParamStr(0))+'\Connection.udl';
         cnx.LoginPrompt:=false;
         Cnx.Open;
         Query:=TADOQuery.Create(nil);
         Query.Connection:=Cnx;
         Query.SQL.Clear;
         Query.SQL.text:='Select SY_ID2,PS_PASSW from t620pers where ps_short=:Short and ps_Type =3';
         Query.ParamCheck :=true;
         Query.Parameters.ParamByName('Short').Value:=Usr;
         Query.Open;
         TmpPw:=UpperCase(Psw);
         if not Query.IsEmpty then begin
            aux:=Query.FieldByName('PS_PASSW').asstring;
            GeneratePw(TmpPw,Query.FieldByName('SY_ID2').AsInteger);
            RemoveGarbageHex(aux);
            aux:=HexStrToBinStr(aux);
             Result:=TmpPw=aux;
         end else result:=false;
         Query.Close;
         Query.free;
         cnx.Close;
         cnx.free;
      end;

   end;

Exports loggin;

end.



E aqui como la ejecuto desde la aplicacion en delphi


Código Delphi [-]

//EdShort.Text,EdPsw.Text son dos Edits en los cuales paso Usuario y password


  Function Loggin(Usr,Psw:String):boolean; stdcall external 'TTLoggin.dll';
implementation

{$R *.DFM}

procedure TForm1.btTestClick(Sender: TObject);
begin
   if loggin(EdShort.Text,EdPsw.Text) then
      ShowMessage('True')
   else
      ShowMessage('False');

end;

end.


El problema que tengo es que dicha DLL quieren ejecutarla desde .net y al parecer no pueden utilizarla.
yo he intentado REgistrarla pero no es posible ya que Luego de ejecutar Regsvr32 me da el sigueitne Error

Cita:

---------------------------
RegSvr32
---------------------------
F:\Download\Pc_San\Programas\Loggin DLL\TTLoggin.dll was loaded, but the DllRegisterServer entry point was not found.

DllRegisterServer may not be exported, or a corrupt version of F:\Download\Pc_San\Programas\Loggin DLL\TTLoggin.dll may be in memory. Consider using PView to detect and remove it.
---------------------------
Aceptar
---------------------------
Alguna iDea de como puedo Crearla Como un objeto COM o como puedo instanciar dicha DLL desde .net?

GRacias
Responder Con Cita
  #2  
Antiguo 07-12-2007
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 21
JXJ Va por buen camino
seguro que la dll esta en el mismo directorio de tu aplicacion dotnet

entonces, ppuedes intentar hacer un activex, o un ocx.

en delphi en el menu File -> New Other

del cuadro de seleccion busca por activex, com, ocx.
Responder Con Cita
  #3  
Antiguo 08-12-2007
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 20
Enan0 Va por buen camino
Si lo hice. Y me abre un asistente en el cual me el nombre de la Clase. y una descripcion y luego me abre una ventana con este codigo..

Código Delphi [-]

unit Unit1;

interface

uses
  Windows, ActiveX, Classes, ComObj, TTLoggin_TLB, StdVcl;

type
  TLoggin = class(TTypedComObject, ILoggin)
  protected
    {Declare ILoggin methods here}
  end;

implementation

uses ComServ;

initialization
  TTypedComObjectFactory.Create(ComServer, TLoggin, Class_Loggin,
    ciMultiInstance, tmSingle);
end.

Y en la unidad anterior (la DLL) tengo una llamada a

Código Delphi [-]

  TTLoggin_TLB in 'TTLoggin_TLB.pas',
  Unit1 in '..\Unit1.pas' {Loggin: CoClass};

Que mas Deberia hacer?

Gracias por su ayuda. pero la verdad que estoy perdido como perro en cancha de bochas. (o caballo arriba de un techo)
Responder Con Cita
  #4  
Antiguo 08-12-2007
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 20
Enan0 Va por buen camino
Bueno ya pude solucionarlo...

tenia que Crear una unidad ActiveX Library, y luego un COM OBject
y luego simplemente utilizar los metodos antes posteados.

Gracias de todos modos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Crear una dll con c# REHome .NET 4 23-12-2006 20:01:56
crear instalador, ejecutar al iniciar i crear desinstalador vivamotos C++ Builder 1 25-08-2006 14:13:01
Crear un PDF? danytorres Varios 0 12-07-2004 17:08:10
Crear un pdf en C++ lomeli_cl C++ Builder 2 01-05-2004 02:47:03
Crear Dll Trigger API de Windows 8 15-12-2003 15:06:09


La franja horaria es GMT +2. Ahora son las 01:46:47.


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