Fórum Dll - Retornar valor :: Obrigatório??? #256165

27/10/2004

0

sempre que se trabalha com dll é necessario que a mesma retorne algum valor para o programa que fez a chamada da dll ou isso não

influencia em nada ... pois tenho uma dll que quando eu coloco assim da um erro:

procedure GeraRelatorio( Cod_Cliente : integer; DtBase : TIBDataBase ); Export
begin
if Fm_Principal = nil then Fm_Principal := TFm_Principal.Create( nil );
Qry_Cliente.Close;
Qry_Cliente.Open;
Fm_Principal.ShowModal;
end;

mas se eu colocar assim não da erro algum:

function GeraRelatorio( Cod_Cliente : integer; DtBase : TIBDataBase ) : boolean; Export
begin
Result := true;
if Fm_Principal = nil then Fm_Principal := TFm_Principal.Create( nil );
Qry_Cliente.Close;
Qry_Cliente.Open;
Fm_Principal.ShowModal;
end;

porque isto ocorre ??? não tenho muito a manha de trabalhar com dll´s estou começando agora ....

valeww
Marcelo MS


Mmoreira

Mmoreira

Responder

Posts

27/10/2004

Tatuweb

Colega,

Faltou dizer que tipo de erro está retornando. A função funciona? Está sendo levantada alguma exceção? Independente disso existe um erro na segunda função na linha:

[b:70f3e42d54]Result := true; [/b:70f3e42d54]

Ela sempre vai retorna verdadeiro. O ideal seria vc fazer como está abaixo:
try
  if Fm_Principal = nil then Fm_Principal := TFm_Principal.Create( nil ); 
  Qry_Cliente.Close; 
  Qry_Cliente.Open; 
  Fm_Principal.ShowModal; 
  Result := TRUE;
except
  Result := FALSE;
end;

Pelo que eu sei não vai fazer diferença, em termos de execução da rotina, optar entre criar uma procedure (que não retorna valor) ou uma function (que retorna valor). A vantagem é que numa function como a acima você tem maior controle pois pode exibir, por exemplo, uma mensagem de erro caso algo de errado ocorra.


Responder

Gostei + 0

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

Aceitar