Procedure Call in DLL receiving unknown value

Asked

Viewed 17 times

0

I’m studying the use of DLL, I created one by sending two integer variables, specifically 3 and 10536. Debugging the DLL verifies that in the process I am calling and that receives these two variables, they are with completely different values than the ones I sent.

Calling for Explicitly

idMestre := 3;
idFunc   := 10536;

if (qryMvFol_M.RecordCount > 0) then
begin
   Handle := LoadLibrary('Calc_Encargos.DLL');
   if (Handle = 0) then
   begin
      Informando('Calc_Encargos.DLL não encontrada.');
      Exit;
   end
   else
   begin
     mPrepara_Para_Calcular := GetProcAddress(Handle, 'Prepara_Para_Calcular');
     mPrepara_Para_Calcular(idMestre, idFunc);
     FreeLibrary(Handle);
   end;
end;

Procedure DLL

procedure Prepara_Para_Calcular(idMestre, idFunc:Integer); stdcall;
begin
{  Aqui chega idMestre = 1524722
              idFunc   = 54771

Não estou entendendo  
}
  try
     Ler_Conecao_Banco;

     qryWork := TFDQuery.Create(nil);

     strSQL := ' select MF.ID_PD, MF.TOTAL'+
               '   from FOLHA_MOV_F MF'+
               '  where MF.ID_REG_MESTRE  = '+FmtInt(idMestre)+
               '    and MF.ID_FUNCIONARIO = '+FmtInt(idFunc)+
               '  union all'+
               ' select MV.ID_PD, MV.TOTAL'+
               '   from FOLHA_MOV_V MV'+
               '  where MV.ID_REG_MESTRE  = '+FmtInt(idMestre)+
               '    and MV.ID_FUNCIONARIO = '+FmtInt(idFunc);

     Prepara_wQuery(qryWork, 'RH', strSQL, '');

     if (qryWork.RecordCount > 0) then
        Erro(IntToStr(qryWork.RecordCount))
     else
        Erro('Sem registro neste filtro');

  finally
     qryWork.Destroy;
  end;
end;

What could be causing this?

1 answer

0

Apologies

In the typification of Procedure in my application I forgot to inform the reserved word stdcall at the end of the definition, thus:

type Tprepara_para_calculate = Precedent (idMestre, idFunc:Integer); stdcall;

Solved

Browser other questions tagged

You are not signed in. Login or sign up in order to post.