Fórum Envio de parâmetro do tipo Double #523710

22/06/2015

0

Boa Tarde caros colegas, tudo bem??

estou enfrentando um problema para consumir um serviço via WSDL, mas especificadamente, com relação à alguns procedimentos que possuem parâmetros do tipo DOUBLE, no Delphi 7.

Abaixo segue um dos procedimentos, cujo estou tendo problemas:

GetHostaHostPortType(true, '', HTTPRIO2).consultarMargem('AAAA', 'AAAA-BBBBBBBBB', 'aaaa_xml', '12345', '10057900', '123.456.789-00',
'001', '001', **valor, 'abc12345', '', '', '420', '420', false,
s, retorno, mensagem, serv, se, info);

Obs.: O campo **valor é do tipo double;

Quando realizo a execução desse procedimento, me é retornado o seguinte erro:

"no valid a floating point value";

Existe alguma maneira de passar o valor double para uma procedure para que este erro não seja retornado???

Grato.
Rafael Santos

Rafael Santos

Responder

Post mais votado

22/06/2015

GetHostaHostPortType

posta o codigo dessa funcao que fica mais facil ter uma ideia

Dorivan Sousa

Dorivan Sousa
Responder

Gostei + 1

Mais Posts

22/06/2015

Dorivan Sousa

"no valid a floating point value" ocorre quando coloca '' ou virgula no lugar de pontos no valor.
qual o valor q vc ta passando?
Responder

Gostei + 0

22/06/2015

Rafael Santos

Passei este valor de duas formas:

1ª - 1.00
2ª - 1,00

Obs.: Na onde esta o parâmetro **valor, já experimentei passar o valor direto, ou seja, 1.00. Porém percebi que o decimal separator do delphi é ',' ao invés de '.';

Obrigado
Responder

Gostei + 0

22/06/2015

Dorivan Sousa

verificou se nao é outro paramentro?

colocou sem as casas decimais, somente 1?
Responder

Gostei + 0

22/06/2015

Rafael Santos

Sim sim, colocando somente 1 como valor ocorre o mesmo erro.

GetHostaHostPortType(true, '', HTTPRIO2).consultarMargem('AAAA', 'AAAA-BBBBBB', 'aaa_xml', '12345', '10057900', '123.456.789-00',
'001', '001', 1, 'abc12345', '', '', '420', '420', false,
s, retorno, mensagem, serv, se, info);

E fiz um teste passando 0(Zero) também, dessa forma ele envio os dados para o webservice e o erro foi retornado pelo próprio webservice acusando que o valor é obrigatório.

Já tentei passar 1,25 para não deixar zeros após a vírgula.

Porém nada de dar certo.
Responder

Gostei + 0

22/06/2015

Rafael Santos

Esta é a procedure que foi criada pelo WSDL Importer:

procedure consultarMargem(const cliente: WideString; const convenio: WideString; const usuario: WideString; const senha: WideString; const matricula: WideString; const cpf: WideString; const orgaoCodigo: WideString; const estabelecimentoCodigo: WideString; const valorParcela: Double; const senhaServidor: WideString; const tokenAutServidor: WideString; const loginServidor: WideString; const codVerba: WideString; const servicoCodigo: WideString; const matriculaMultipla: Boolean; out sucesso: Boolean; out codRetorno: WideString; out mensagem: WideString; out servidores: Servidor;  out servicos: Servico; out infoMargem: InfoMargem); stdcall;


const valorParcela: Double, representa o parâmetro que estou passando naquela chamada.
Responder

Gostei + 0

22/06/2015

Dorivan Sousa

qual versao do delphi?

voce tentou debugar?
Responder

Gostei + 1

22/06/2015

Dorivan Sousa

li agora no topico principal a versao do delphi é 7... o delphi 7 tem um prblema com os webservices mais atuais... tem uma solucao atualizando o SOAP e usando uma outra versao do wsdl importer

http://www.activedelphi.com.br/forum/viewtopic.php?t=57184

aqui fala justamente do decimal separator
http://www.tecnospeed.com.br/forum/componente-nfe/componente-soap-do-delphi7-altera-o-decimalseparator/

vc ja fez esse procedimento?
Responder

Gostei + 1

22/06/2015

Rafael Santos

Estou usando o Delphi 7, sim, e durante o debug quando passei o mouse em cima da variável o valor apresentado foi: "1,00" e não "1.00";

function GetHostaHostPortType(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): HostaHostPortType;
const
  defWSDL = 'https://www.econsig.com.br/central_homologa/services/HostaHostService?wsdl';
  defURL  = 'https://www.econsig.com.br/central_homologa/services/HostaHostService/';
  defSvc  = 'HostaHostService';
  defPrt  = 'HostaHostHttpPort';
var
  RIO: THTTPRIO;
begin
  Result := nil;
  if (Addr = '') then
  begin
    if UseWSDL then
      Addr := defWSDL
    else
      Addr := defURL;
  end;
  if HTTPRIO = nil then
    RIO := THTTPRIO.Create(nil)
  else
    RIO := HTTPRIO;
  try
    Result := (RIO as HostaHostPortType);
    if UseWSDL then
    begin
      RIO.WSDLLocation := Addr;
      RIO.Service := defSvc;
      RIO.Port := defPrt;
    end
    else
      RIO.URL := Addr;
  finally
    if (Result = nil) and (HTTPRIO = nil) then
      RIO.Free;
  end;
end;


Acima esta a função GetHostaHostPortType
Responder

Gostei + 0

22/06/2015

Rafael Santos

Não cheguei a tentar realizar estes procedimentos não, mas vou tentar realizá-los agora.

Qualquer eventualidade eu posto aqui novamente.

Muito obrigado pela atenção Dorivan.

Abraços
Responder

Gostei + 0

22/06/2015

Rafael Santos

Acabei de fazer a atualização do WSDL Importer do Delphi 7, executando o código abaixo:

GetHostaHostPortType(true, '', HTTPRIO).consultarMargem('AAAA', 'AAAA-BBBBBB', 'aaa_xml', '12345', '10057900', '123.456.789-00',
'001', '001', 1.00, 'abc12345', '', '', '420', '420', false,
s, retorno, mensagem, serv, se, info);


Esto tendo o seguinte erro:

[img]http://arquivo.devmedia.com.br/forum/imagem/438187-20150622-180753.png[/img]

Obs.: Já tentei reimportar o WSDL novamente.

Desde já agradeço pela atenção.
Responder

Gostei + 0

23/06/2015

Dorivan Sousa

tenta fazer essa comunicacao com uma versao mais atual do delphi. xe5 talvez
Responder

Gostei + 1

23/06/2015

Rafael Santos

Estava pensando exatamente nisso. Vou usar esta versão.

Muito obrigado pela dicas!
Responder

Gostei + 0

23/06/2015

Rafael Santos

Boa Tarde Dorivan, tudo bem???

Olha muito obrigado pela dica deu certo! Acredito que eu estava cometendo algum erro na verdade de implementação. Na qual havia um try para tratar o campo valor.

Após remover esta codificação passou a dar certo!

Muito Obrigado pela sua atenção.

Abraços
Responder

Gostei + 0

23/06/2015

Dorivan Sousa

e ai Rafael...

resolveu no delphi 7 ou no xe?

se foi no delphi 7 resolveu com a atualizacao do SOAP?
Responder

Gostei + 1

23/06/2015

Rafael Santos

Dorivan, resolvi o problema usando o Delphi 7 mesmo com a atualização do SOAP!

Seguindo os passos descritos no link abaixo:
http://www.tecnospeed.com.br/forum/componente-nfe/componente-soap-do-delphi7-altera-o-decimalseparator/


Abraços
Responder

Gostei + 1

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

Aceitar