Fórum Erro Invalid pointer operation ao criar data module #553661

10/05/2016

0

olá amigos, tenho uma dll feita em delphi 2010, e as vezes ocorre o erro de "Invalid pointer operation" ao criar o data module, o qual contém componentes de conexão dbexpress (simpledataset, sqlconnection, clientdataset, etc, assim como alguns componentes do rave report). A dll funciona 90% das vezes, mas vez ou outra gera o erro.

A aplicação que chama afunção da dll tb é feita em delphi 2010. Pesquisei bastante no google, mas nunca vi dar esse erro ao criar um data module, geralmente o pessoal encontra esse erro ao dar um .free ou ao sair da aplicação, mas no meu caso é ao CRIAR data module.

As mensagens não são sempre iguais, isso que me intriga:

- invalid pointer operation, OU
- error reading sqlTable1FIELD1.FieldName: invalid pointer operation, OU
- error reading sqlTable1FIELD1.SQLConnection: property 0RAVECOMPLETED does not exist

Alguma sugestão?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function Imp1(vEmp: Integer): boolean; export; stdcall;
var Registry: TRegistry;
begin
  with dmNFD2 do
  begin
    try
      p_NumEmp := vEmp;
      result := True;
      if not(Assigned(dmNFD2)) then
         //Application.CreateForm(TdmNFD2,dmNFD2); // erro aqui ou
         dmNFD2 := TdmNFD2.Create(nil); // erro aqui
      if not(dmNFD2.sqlConn.Connected) then
      begin
        ConnectBD; // le o registro do windows (path, user e password database)
      end;
      if dmNFD2.sqlConn.Connected then
      begin
        qryGen.Close;
        qryGen.SQL.Text := 'select NFFCEN from DWGAS024 where PARNUM = :PARNUM';
        qryGen.Params.ParamByName('PARNUM').AsInteger := p_NumEmp;
        qryGen.Open;
        // insert or update in other table
        // ....
      end;    
    except
      on e:Exception do
      begin
        result := False;
      end;
    end;
end;   
Fernando

Fernando

Responder

Post mais votado

13/05/2016

Declarei em USES >>Registry ,U_dmNFD2

E realizei os testes, funcionou normal.

Imagem do Teste

Raimundo Pereira

Raimundo Pereira
Responder

Gostei + 1

Mais Posts

13/05/2016

Fernando

Já tentei colocar o SimpleShareMem como 1a. declaração do uses, tanto no fonte da dll como no fonte do exe que chama ela, mesmo erro...
Responder

Gostei + 0

16/11/2017

Fernando

olá amigos, ainda continuo com esse problema, ainda não resolvido! Mais alguma sugestão?
Responder

Gostei + 0

16/11/2017

Luiz Vichiatto

Eu tive este problema por não testar o database no datamodule, e crio o datamodule na abertura, depois nem testo mais se ele existe, pois exceto a instrução terminate que encerra a aplicação e consequentemente liberar o formulário do datamodule.

Já verificou se os parâmetros que estão sendo passados nas consultas estão corretos p_NumEmp é um inteiro na tabela e no parâmetro da consulta?

att
Responder

Gostei + 0

17/11/2017

Fernando

Luiz, o erro ocorre na criação do data module e não numa consulta sql. Já tentei das 2 formas, porém ambas dão erro. A questão toda é que esse erro de "invalid pointer operation" vem ocorrendo após ter adicionado o SimpleShareMem na unit da dll. Precisei fazer isso, pois nosso sistema trabalha com várias dlls, e outras dlls precisam do SimpleShareMem (trabalham com string em parãmetros).

Se eu retiro o SimpleShareMem da dll, outros erros vem ocorrendo na aplicação (access violation genéricos, e aleatórios).

1
2
3
if not(Assigned(dmNFD2)) then
   //Application.CreateForm(TdmNFD2,dmNFD2); // erro aqui ou
   dmNFD2 := TdmNFD2.Create(nil); // erro aqui
Responder

Gostei + 0

17/11/2017

Luiz Vichiatto

Se você remover o esta parte do código, que tipo de erro ocorre?
1
2
3
if not(Assigned(dmNFD2)) then
         //Application.CreateForm(TdmNFD2,dmNFD2); // erro aqui ou
         dmNFD2 := TdmNFD2.Create(nil); // erro aqui
Responder

Gostei + 0

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

Aceitar