ECF: usando a Daruma32.DLL

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

MARINI
Usuário Nível 3
Usuário Nível 3
Mensagens: 288
Registrado em: 06 Jul 2004 08:06
Localização: Pindamonhangaba SP

ECF: usando a Daruma32.DLL

Mensagem por MARINI »

Boa tarde,

Para cadastrar um alíquota via comando no manual da Daruma explica o seguinte:

Método: Daruma_FI_ProgramaAliquota [Índice 302]

Programa alíquota tributária na Impressora Fiscal.
· Parâmetros do Método: (2 Parâmetros)
1. Alíquota: String com o valor da alíquota a ser programada.
2. Vínculo: INTEIRO com o valor 0 (zero) para vincular a alíquota ao ICMS e 1 (um ) para vincular ao ISS.

Este parâmetro 2 tem que um INTEIRO. Estudando os exemplos abaixo:
· Exemplo em Visual Basic 6.0:
Dim Str_Valor_da_Aliquota As String
Dim Int_Tipo_da_Aliquota As Integer
Str_Valor_da_Aliquota = "1800"
Int_Tipo_da_Aliquota = "0"
Int_Tipo_da_Aliquota = CInt(TX_Tipo_da_Aliquota.Text)
Int_Retorno = Daruma_FI_ProgramaAliquota(Str_Valor_da_Aliquota, _
Int_Tipo_da_Aliquota)

· Exemplo em Delphi 7.0:
var
Str_Valor_da_Aliquota: String;
Int_Tipo_da_Aliquota: Integer;
begin
Str_Valor_da_Aliquota := '1800';
Int_Tipo_da_Aliquota :='0'
Int_Tipo_da_Aliquota := StrToInt(Trim(Tipo_da_Aliquota.Text));
Int_Retorno := Daruma_FI_ProgramaAliquota( pchar( Str_Valor_da_Aliquota ), Int_Tipo_da_Aliquota );
cheguei a conclusão que isto seria o mesmo que estivesse dizendo ALLTRIM(1) -- isto não é possivel --, por exemplo, ou
seja o tamanho de caracteres do número teria que ser igual a 1 e não 10 como podemos conferir usando a condição
INT(STR(1))

Analisando os exemplos acima temos em Visual a função CInt e em Delphi StrToInt para fazer esta conversão.
Não encontrei nada em xHarbor que faça isto.
Alguém saberia me dizer qual a solução?
Sds
Marini
DLZ
Usuário Nível 3
Usuário Nível 3
Mensagens: 184
Registrado em: 09 Jun 2008 10:09
Localização: Ibirubá - RS - Brasil

Re: ECF: usando a Daruma32.DLL

Mensagem por DLZ »

A função StrtoInt do Delphi equivale, mais ou menos, a função Val no Clipper ou xharbour.
Portanto, vc pode usar val("0") ou simplesmente passar 0(zero) no segundo parametro da função
DLZ
Usuário Nível 3
Usuário Nível 3
Mensagens: 184
Registrado em: 09 Jun 2008 10:09
Localização: Ibirubá - RS - Brasil

Re: ECF: usando a Daruma32.DLL

Mensagem por DLZ »

esqueci de colocar o exemplo eheheh
ficaria assim:

Str_Valor_da_Aliquota := "1800"
Int_Tipo_da_Aliquota :=0
Int_Retorno := Daruma_FI_ProgramaAliquota( Str_Valor_da_Aliquota , Int_Tipo_da_Aliquota )
MARINI
Usuário Nível 3
Usuário Nível 3
Mensagens: 288
Registrado em: 06 Jul 2004 08:06
Localização: Pindamonhangaba SP

Re: ECF: usando a Daruma32.DLL

Mensagem por MARINI »

Obrigado pela resposta.
Se passar 0, "0" ou VAL("0") cadastra sempre um ISS;
Se passar 1, "1" ou VAL("1") cadastra sempre um ISS;
Ou seja, qualquer parâmetro passado sempre cadastra um ISS e nunca
um ICMS,
Então deduzo que tem alguma coisa de errado justamente
nesta condição de ser INTEIRO e não NUMÉRICO, que consta
no manual da DARUMA.
Se fizer o teste @ 0,0 say LEN(STR(VAL("0"))) retorna 1
e LEN(STR(0))=10. Então se passar VAL("0"), deveria
funcionar:


Str_Valor_da_Aliquota := "1800"
Int_Tipo_da_Aliquota := VAL("0")
Int_Retorno := Daruma_FI_ProgramaAliquota( Str_Valor_da_Aliquota , Int_Tipo_da_Aliquota )

Mas não funciona.

Grato
Sds
Marini
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: ECF: usando a Daruma32.DLL

Mensagem por alaminojunior »

Confirmando a orientação do Dércio:

O comando que uso:

Código: Selecionar todos

ret:=  dllcall(h1,32,"Daruma_FI_ProgramaAliquota","0215", 0)
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MARINI
Usuário Nível 3
Usuário Nível 3
Mensagens: 288
Registrado em: 06 Jul 2004 08:06
Localização: Pindamonhangaba SP

Re: ECF: usando a Daruma32.DLL

Mensagem por MARINI »

Bom dia,
Obrigado pelas respostas.
Descobri onde estava o problema.
Tinha feito uma função com o DllCall e estava passando os
parâmentos por referência @...
Estava tudo funcionando menos neste caso que o valor é numérico.
Tirei o @ dos parâmetros e ficou tudo certo.
Abraços.
Sds
Marini
Responder