Pergunta

Eu tenho um objeto COM, Configurar/criar/trabalhar a partir de um datamodule.

Criar/executar/liberar o datamodule a partir de um aplicativo funciona sem um problema.

Mas colocar o datamodule em uma DLL funciona bem na primeira vez, executando o objeto COM etc. mas depois de algumas chamadas sem reiniciar o aplicativo, esse erro aparece.

Mensagem de erro Imagem http://darkaxi0m.name/so/errormessage.gif

Há um pedaço de código no aplicativo, então não posso postar tudo, tentei o Madexcept no aplicativo e na DLL, sem sorte. O IDE quebra em um ponto que não parece muita ajuda ...

TEXTO DE ALT HTTP://DARKAXI0M.NAME/SO/CPUBREAK.GIF

Este é o código que lida com o datamodule, a mesma função é usada no aplicativo e a DLL nos dois testes

function GetAmount( Amount : integer; var Info: PChar): integer; stdcall;
 var
  tempInfo: string;
   workerDM : TworkerDM;
 begin
  Result := 0;    
  workerDM := TworkerDM.Create(nil);
    try      
      tempInfo:= Info;
      Result := workerDM.GetAmount(Amount, tempInfo);
      StrPCopy(Info, tempInfo);
    finally
      workerDM.Free;
    end;
 end;

Eu gostaria de culpar o objeto OLE, mas funciona bem fora da DLL

Estou sem pensar em onde começar a procurar.

Foi útil?

Solução 2

Não acredito mais que essa pergunta possa ser respondida. O projeto foi raspado e o objeto que produz o erro não é mais usado.

Meu Excluir Os pedidos ficaram sem resposta.

Então esta agora é minha resposta.

Outras dicas

No finally, você está ligando Free, mas deveria ligar workerDM.Free.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top