GARANTIR DESCONTO

Fórum Erro ao rodar DLL com Form e Memo #273371

21/03/2005

0

Olá pessoal, tudo bem?
Estou fazendo um editor bem simples, no Delphi 7, que será invocado por um programa escrito em Cobol. Para isso, criei uma DLL para tal função. O problema é que nos testes que estou fazendo, no próprio Delphi, ao chamar o Form que contém o editor aparece o seguinte erro:

Access violation at address 0036CD6E in module ´minhadll.dll´. Read of address 000002F8.

Abaixo inseri o trecho da função que existe dentro da dll.

function capxedit(s: String): String; stdcall; export;
var
TXT: TextFile;
RDR: String;
begin
AssignFile(TXT, s);
Reset(TXT);
FrmXEDITOR.MemoXEDITOR.Clear;
FrmXEDITOR.Show;
while not eof(TXT) do
begin
ReadLN(TXT, RDR);
FrmXEDITOR.MemoXEDITOR.Lines.Add(RDR);
end;
CloseFile(TXT);
end;

Exports
capxedit;

O erro dá no ponto da instrução:
FrmXEDITOR.MemoXEDITOR.Clear;

Declarei na Unit as cláusulas ShareMem, SysUtils e Classes, além da unit que está o form. Será que falta alguma cláusula na Unit para eu declarar?

Obrigado pelas dicas! :-)


Jorgeolimpia

Jorgeolimpia

Responder

Posts

21/03/2005

Biohazard

Você está utilizando string como parâmetro, você tem que criar um tipo por exemplo:

type
tyString = string[255];

e na sua função declare assim:

function Exemplo(S: tyString) : tyString;

qualquer dúvida mande-me um email


Responder

Gostei + 0

21/03/2005

Kapak

Se vc utiliza strings como parâmetros de funções em dlls, vc tem que declarar Sharemem no uses dos dois .dpr e não na unit.


Responder

Gostei + 0

21/03/2005

Jorgeolimpia

Caro BioHazard, tudo bem?
A questão da string é que ela existe ali só para capturar o txt que o programa vai enviar, ou seja, lá no Cobol vou executar o comando

CALL$ minhadll.dll ´capxedit(C:\teste\relatorio.txt)´

O caminho que está dentro do capxedit é o que vai para a string, aí faço aquela leitura básica do arquivo texto. Acredito que seja alguma rotina do form pois se troco por um ShowMessage() por exemplo, as linhas são mostradas uma a uma.

Obrigado pela dica!


Responder

Gostei + 0

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

Aceitar