Fórum Dúvida na criação de DLL. #209316

25/01/2004

0

Galera do Fórum, li o artigo no portal do assinante do Tiago de como criar Dll. O exemplo que ele deu até que deu certo, então tentei criar a minha própria dll, mas esta dando erro. Gostaria de ajuda para resolve-la.


O código da Dll.
library Objetiva;

uses
ShareMem, SysUtils, Windows;

function ZeroEsquerda(const I: integer; const Casas: byte): string; stdcall; overload;
var
Ch: Char;
begin
Result := IntToStr(I);
if Length(Result) > Casas then
begin
Ch := ´*´;
Result := ´´;
end
else
Ch := ´0´;
while Length(Result) < Casas do
Result := Ch + Result;
end;

exports
ZeroEsquerda(const I: integer; const Casas: byte);

end.

Até aqui tudo bem.

O código da minha aplicação de exemplo usando a Dll.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;

type
TForm1 = class(TForm)
Edit1: TEdit;
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
function ZeroEsquerda(const I: integer; const Casas: byte): string; stdcall; external ´Objetiva.DLL´;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
edit1.text := ZeroEsquerda(strtoint(edit1.text),13);
end;

end.

O erro é o seguinte:

Project Project1.exe raised exception class EInvalidPointer with message ´Invalid pointer operation´. Process stopped...

Não sei como resolver isto, onde esta o erro, se alguem puder me ajudar a entender as Dll, ficarei muito grato a todos.

Obrigado
Valnei


Objetivacreator

Objetivacreator

Responder

Posts

25/01/2004

Beppe

Você colocou ShareMem na lista uses do .dpr? Deve ser a primeira.

OBS: Não use stdcall, o padrão(register) é mais eficiente.


Responder

Gostei + 0

25/01/2004

Beppe

Você colocou ShareMem na lista uses do .dpr do programa principal? Deve ser a primeira.

OBS: Não use stdcall, o padrão(register) é mais eficiente. A não ser que você queira chamar a dll de outra linguagem, como C++.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar