Dll - Retornar valor :: Obrigatório???
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
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
Curtidas 0
Respostas
Tatuweb
27/10/2004
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:
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.
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.
GOSTEI 0