Criando DLLs

Delphi

26/07/2003

caros amigos,

É uma prazer juntar-me a vcs nesse fórum. Espero poder contribuir bastante, mas, no momento, preciso de ajuda.

Preciso criar uma dll em delphi para usá-la em uma página ASP. Criei a DLL seguindo as orientações
do artigo ..., mas na hora de registrar está dando um erro:

No MTS a mensagem diz que o arquivo não contem componentes ou biblioteca de tipos. Utilizando o
comando REGSVR32, a mensagem de erro diz que o arquivo foi carregado, mas não pode ser registrado
porque o ponto de entrada DllRegisterServer não foi localizado.

Vcs saberiam informar o que está faltando para que a dll criada possa ser registrada no Windows.

Segue abaixo o código exemplo que estou usando.

abs e desde já obrigado.

André Dantas


CÓDIGO

library Comparar;

uses
SysUtils,
Classes;

function Max(a, b : double): double; export; stdcall;
begin
if (a > b) then
result := a
else
result := b;
end;

exports
Max index 1;

begin
end.


Avfdantas

Avfdantas

Curtidas 0

Respostas

Glauberms

Glauberms

26/07/2003

Dá uma olhada no exemplo abaixo que cria e utiliza funções em dll e atenção na clausula [b:b3b65a8aa3]USES[/b:b3b65a8aa3], talvez esteja faltando declarar [b:b3b65a8aa3]WinTypes[/b:b3b65a8aa3] e [b:b3b65a8aa3]WinProcs[/b:b3b65a8aa3]. Não utilizei o exemplo mas eu já tinha visto e procurei novamente.

Espero que o ajude!

[i:b3b65a8aa3]Edite diretamente no DPR, e depois salve como Funções.dpr:

Library Funções;

Uses SysUtils,WinTypes,WinProcs;

{ Uma função que tira os espaços no início e no final de uma string }
Function Trim(J:String):String; Export;
Begin
While J[Length(J)]=#32 do Dec(J[0]);
If Length(J)>1 then
While (J[1]=´ ´) do
Begin
Delete(J,1,1);
If Length(J)<=1 then J:=´´;
end;
Result:=J;
end;
Exports { Torna visivel para os programas }
Trim;
Begin
End.

Para usar num programa:

Unit Unit1;
Interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Var
Form1: TForm1;
Implementation
{ Declara a funcao }
Function Trim(J:String):String; External ´funcoes.dll´;
{$R *.DFM}
Procedure TForm1.FormClick(Sender: TObject);

begin
Caption:=Trim(´ Visite sempre o Delphi Club ´); { Note os espacos }
end;[/i:b3b65a8aa3]


GOSTEI 0
Avfdantas

Avfdantas

26/07/2003

Glauber,

Obrigado pela ajuda. Realmente funcionou! Porém, apenas quando uso a DLL em outro aplicativo Delphi. Quanto tento registrar a DLL para usá-la em uma página ASP, por exemplo, os erros continuam acontendo.

Talvez o problema seja que a estrutura da DLL que reportei, não possui a separação em classes. Para que seja registrada no windows a estrutura deveria ser, por exemplo:

nome da dll
classe 1
metodo 1
metodo 2
classe 2
metodo 1
metodo 2
metodo 3


Não consegui criar isso em Delphi.

De qualquer forma obrigado pela força


GOSTEI 0
Glauberms

Glauberms

26/07/2003

Foi mal não li a parte sobre ASP mas tem um artigo da borland que demonstra as configurações necessárias para se depurar DLL´s ASP ou ISAPI usando o Delphi e IIS 5.0, pode ser baixado no link abaixo:
[url]http://lib.seven.com.br/arquivos/687/asp.zip[/url]

No link da página onde se faz o download [url]http://lib.seven.com.br/[/url] existe mais artigos.

Tomara que desta vez de certo...

Obs: Vi que ninguém tinha te ajudado e só estou tentando. Como já disse não conheco muito de ASP


GOSTEI 0
Avfdantas

Avfdantas

26/07/2003

obrigado pela ajuda!

Realmente o grande problema é fazer essa DLL ser registrada no Windows. Não acho artigo, livro, exemplos, ... nada que fale sobre isso. Mas vou continuar tentando, se descobrir eu publico no fórum.

abs,


GOSTEI 0
Afarias

Afarias

26/07/2003

|Realmente o grande problema é fazer essa DLL ser registrada no
|Windows.

Vc está criando uma Dll normal?? (é o q me parece)

O que vc quer é uma biblioteca ActiveX (só bibliotecas ActiveX são registrasdas como o REGSVR32)

Arquivo -> Novo -> Aba ActiveX -> selecione ActiveX Library.

Depois, vc pode adicionar seus objetos (como um Active Server Object por ex.)


T+


GOSTEI 0
POSTAR