Envio de parâmetro do tipo Double

Delphi

22/06/2015

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

Curtidas 0

Melhor post

Dorivan Sousa

Dorivan Sousa

22/06/2015

GetHostaHostPortType

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

Mais Respostas

Dorivan Sousa

Dorivan Sousa

22/06/2015

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

Rafael Santos

22/06/2015

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
GOSTEI 0
Dorivan Sousa

Dorivan Sousa

22/06/2015

verificou se nao é outro paramentro?

colocou sem as casas decimais, somente 1?
GOSTEI 0
Rafael Santos

Rafael Santos

22/06/2015

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.
GOSTEI 0
Rafael Santos

Rafael Santos

22/06/2015

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.
GOSTEI 0
Dorivan Sousa

Dorivan Sousa

22/06/2015

qual versao do delphi?

voce tentou debugar?
GOSTEI 1
Dorivan Sousa

Dorivan Sousa

22/06/2015

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?
GOSTEI 1
Rafael Santos

Rafael Santos

22/06/2015

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
GOSTEI 0
Rafael Santos

Rafael Santos

22/06/2015

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
GOSTEI 0
Rafael Santos

Rafael Santos

22/06/2015

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.
GOSTEI 0
Dorivan Sousa

Dorivan Sousa

22/06/2015

tenta fazer essa comunicacao com uma versao mais atual do delphi. xe5 talvez
GOSTEI 1
Rafael Santos

Rafael Santos

22/06/2015

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

Muito obrigado pela dicas!
GOSTEI 0
Rafael Santos

Rafael Santos

22/06/2015

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
GOSTEI 0
Dorivan Sousa

Dorivan Sousa

22/06/2015

e ai Rafael...

resolveu no delphi 7 ou no xe?

se foi no delphi 7 resolveu com a atualizacao do SOAP?
GOSTEI 1
Rafael Santos

Rafael Santos

22/06/2015

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
GOSTEI 1
POSTAR