Erro ao chamar uma dll: quot;invalid pointer operationquot

Delphi

14/06/2004

oi galera , eu fiz uma dll em delphi e a dll e a seguinte:
library project1;

uses
SysUtils,
Classes;

{$R *.res}
function funcao(text1:string):string; stdcall;export;
var
pos : integer;
begin
for pos := 1 to length(text1) do
text1[pos] := chr(ord(text1[pos]) + 2);

result:=text1;
end;
exports
funcao;
begin
end.
e estou chamndo essa dll na minha aplicação da seguinte forma:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
function encripter(text1:string):string;stdcall;external (´med.dll´)
{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
form1.Caption:=encripter(´aa´);
end;

end.
quando eu clico no botao aparece a seguinte mensagem:´invalid pointer operation´, alguem sabe como eu poderia chamar essa dll e fazer que ela me retorne um resultado? ou alguem tem alguma sugestao ?


Anicetojunior

Anicetojunior

Curtidas 0

Respostas

Beppe

Beppe

14/06/2004

Dicas:
- Não precisa usar a diretiva export na declaração da função: ela é ignorada.
- Não precisa usar a convenção stdcall.

O problema PODE ser este:
acrescente a unit ShareMem na lista de uses, tanto da dll como do programa(deve ser a primeira).

Ex:

program Project1;

uses
  ShareMem,
  Form1...

library Library1;

uses
  ShareMem...



GOSTEI 0
Nildo

Nildo

14/06/2004

O problema pode ser do tipo String. Tente trocar o tipo STRING por PCHAR. Se não funcionar, troque por LONGSTRING. Isso nos parametros


GOSTEI 0
Vinicius2k

Vinicius2k

14/06/2004

acrescente a unit ShareMem na lista de uses, tanto da dll como do programa(deve ser a primeira).


só aproveitando o assunto Beppe e Nildo... essa declaração obriga a distribuir a borlndmm.dll, junto com a aplicação, não obriga?
uso sem isso e nunca tive problemas, mas a verdade é que não tenho muita experiência com DLLs e praticamente só as utilizo para carregar recursos...


GOSTEI 0
POSTAR