Problema ao usar DLL

Delphi

24/01/2007

Oi Galera Blz!

Bom indo diréto ao assunto Estou desenvolvendo um sistema, e algumas functions estou colocando em dll´s para ficar mais facil de aproveitar o codigo então coloquei a seguinte function em uma dll

library FiltCaracter;

uses
  SysUtils, Classes;
Type
 TCharSet = set of char;

{$R *.res}

function FiltrarCaract(Source :String; Filter :TCharSet) :String; stdcall;
var
  Idx :Integer;
begin
  for Idx := Length(Source) downto 1 do
    if (Source[Idx] in Filter) then
      Delete(Source, Idx, 1);
  Result := Source;
end;
 exports FiltrarCaract;
end.


Éssa é uma função para Filtrar Caracter
Bom eu acho que o erro deve ser algo com o [b:b16daf3381]type[/b:b16daf3381] que eu tive que declarar tanto na dll como no sistema
Eu chamo a dll no systema da seguinte maneira
{$R *.dfm}

function FiltrarCaract(Source :String; Filter :TCharSet) :String; External ´DLL\FiltCaracter.dll´;


O erro que está dando é o seguinte
[b:b16daf3381]Access Violation at address 003A3E16 in module ´FiltCaracter.dll´. write of address 005CAC0E.[/b:b16daf3381]

Será que alguem tem como me dar uma Luz? :roll:
Valeu :wink:


Alecsandro Moura

Alecsandro Moura

Curtidas 0

Respostas

Massuda

Massuda

24/01/2007

Como sua DLL usa o tipo de dado [b:1c6047cd59]string[/b:1c6047cd59], você deve incluir no uses do seu programa e da DLL a unit ShareMem. No esqueleto da DLL que o Delphi gera tem uma comentário sobre isso. Dê uma olhada :arrow: [url=http://forum.clubedelphi.net/viewtopic.php?t=82514]neste tópico[/url] para mais detalhes.


GOSTEI 0
Alecsandro Moura

Alecsandro Moura

24/01/2007

Oi massuda Valeu pela força agora tá tudo certo, mas eu gostaria que vc esclarece-se uma duvida a respeito da DLL BorlandMM.DLL, lendo outros tópicos eu eu li comentarios que eu deveria levar essa dll junto ao meu projeto isso é verdade? e se for onde eu encontro éssa dll para levar junto ao meu projeto?

Valeu cara :wink:


GOSTEI 0
Massuda

Massuda

24/01/2007

[quote:d6fd6d4476=´Alecsandro Moura´]...lendo outros tópicos eu eu li comentarios que eu deveria levar essa dll junto ao meu projeto isso é verdade? e se for onde eu encontro éssa dll para levar junto ao meu projeto?[/quote:d6fd6d4476]Você vai precisar instalar essa DLL junto com o seu executável. Essa DLL geralmente está na subpasta bin da pasta onde o Delphi foi instalado.


GOSTEI 0
Nightshade

Nightshade

24/01/2007

se retornar PChar ao inves de string nao resolve teu problema??


GOSTEI 0
Alecsandro Moura

Alecsandro Moura

24/01/2007

Bom usei a dll BorlandMM.DLL e resolveu meu problema agora surgiu mais uma duvida como eu faria para instalar essa DLL junto com o meu projeto pois onde eu instalo o meu sistema da por causa dessa DLL que não está Instalada.
Como eu faço para instalar essa DLL?

Valeu :wink:


GOSTEI 0
Massuda

Massuda

24/01/2007

[quote:f0f44f1084=´Alecsandro Moura´]Como eu faço para instalar essa DLL?[/quote:f0f44f1084]Basta copiar o arquivo .DLL para a mesma pasta do .EXE do seu programa.


GOSTEI 0
Alecsandro Moura

Alecsandro Moura

24/01/2007

Valeu Cara eu não estava conseguindo pois estava colocando a dll na pasta onde estava minhas outras dll´s :lol: . mas valeu mesmo BRIGADÂO :D


GOSTEI 0
POSTAR