Envio de parâmetro do tipo Double
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.
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
Curtidas 0
Melhor post
Dorivan Sousa
22/06/2015
GetHostaHostPortType
posta o codigo dessa funcao que fica mais facil ter uma ideia
posta o codigo dessa funcao que fica mais facil ter uma ideia
GOSTEI 1
Mais Respostas
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?
qual o valor q vc ta passando?
GOSTEI 0
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
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
22/06/2015
verificou se nao é outro paramentro?
colocou sem as casas decimais, somente 1?
colocou sem as casas decimais, somente 1?
GOSTEI 0
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.
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
22/06/2015
Esta é a procedure que foi criada pelo WSDL Importer:
const valorParcela: Double, representa o parâmetro que estou passando naquela chamada.
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
22/06/2015
qual versao do delphi?
voce tentou debugar?
voce tentou debugar?
GOSTEI 1
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?
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
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";
Acima esta a função GetHostaHostPortType
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
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
Qualquer eventualidade eu posto aqui novamente.
Muito obrigado pela atenção Dorivan.
Abraços
GOSTEI 0
Rafael Santos
22/06/2015
Acabei de fazer a atualização do WSDL Importer do Delphi 7, executando o código abaixo:
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.
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
22/06/2015
tenta fazer essa comunicacao com uma versao mais atual do delphi. xe5 talvez
GOSTEI 1
Rafael Santos
22/06/2015
Estava pensando exatamente nisso. Vou usar esta versão.
Muito obrigado pela dicas!
Muito obrigado pela dicas!
GOSTEI 0
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
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
22/06/2015
e ai Rafael...
resolveu no delphi 7 ou no xe?
se foi no delphi 7 resolveu com a atualizacao do SOAP?
resolveu no delphi 7 ou no xe?
se foi no delphi 7 resolveu com a atualizacao do SOAP?
GOSTEI 1
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
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