naugustijr
-
Total de ítens
7 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Posts postados por naugustijr
-
-
Caro Josevaldo,
a sua resposta não consta aqui no Forum.
Se você não se solidarizar com minhas duvidas explicitamente temos menos chance de sermos correspondidos.
Se tem uma dúvida semelhante faça-a constar aqui tambem.
Eu também tenho interesse em ajudar no projeto mas preciso de algo mais mastigado visto que todos temos pouco tempo disponivel.
-
Me desculpem. Esqueci de perguntar.
No tópico a seguinte informação: O próprio componente a extrai numa pasta temporária e a utiliza sem que o usuário saiba.
Como o arquivo ACBrFramework32.dll faz/pode fazer manipulações de arquivos (deve utilizar o path da aplicação ou de onde se encontra) e o mesmo é extraído em uma pasta temporária será
que os arquivos que ele tenta ler (exemplo: acbrecfmemo.ini) nunca serão encontrados pois não estão nesta pasta temporária?
Criamos uma DLL nativa a partir do ACBr, essa ACBrFramework32.dll que você viu.
Como essa DLL é muito complexa para ser utilizada diretamente, um modelo de objetos semelhante ao ACBr original é criado tanto em C# quando em Java (chamamos isso de wrapper).
A partir desse wrapper você manipula a DLL seja em C# ou em Java da mesma forma que um programador Delphi usa o ACBr, ou seja, você pode usar um exemplo escrito em Delphi ou fazer uma pergunta em qualquer área do fórum que o comportamento e modo de usar será exatamente o mesmo em qualquer linguagem.
Por isso não há razão para usar a DLL nativa ou as classes de interop diretamente. Elas são apenas para fins de desenvolvimento.
A DLL é embutida no ACBrFramework.Net, de forma que você não precisa copiá-la para nenhum lugar. O próprio componente a extrai numa pasta temporária e a utiliza sem que o usuário saiba.
Caso queira estudar o fonte, está incluído no SVN do ACBrFramework, é o projeto feito em Lazarus.
-
Pessoal,
como ninguém respondeu e precisava de uma solução,
recompilei o ACBRFramework32.dll no Lazarus, (com a alteração do parâmetro HTML=1 para HTML=0)
compilei novamente o ACBrFramework.Net.dll (ACBrFramework.Net.tlb) e usei
no aplicativo feito em Visual Basic 6.0.
Funcionou da forma que eu precisava.
O problema é que os dados da empresa que ficam na propriedade MemoParams são genéricos e se quiser uma
solução alternativa tenho que gerar um arquivo ACBRFramework32.dll (e descendentes) para cada cliente.
Preciso resolver a questão da atualização (em tempo de execução) do campo MemoParams.
Pensei em algumas alternativas:
1) Gerar um arquivo ACBRFramework32.dll para cada cliente (dito acima)
2) Criar uma propriedade com o local do arquivo ACBrMemoParams.ini (que no ACBrECF.pas é acbrecfmemo.ini, e não consegui ler com este nome tambem)
e criar um método (procedure) e encapsulá-lo no ACBrFramework para carregar o arquivo;
3) Encapsular a procedure MemoLeParams no ACBrFramework. É possível, viável?
4) Tentar alterar o código fonte do ACBrFramework para que a propriedade MemoParams aceite ser escrita, assumindo que atualmente ela não está funcionando corretamente.
Documentos associados:
http://blogs.msdn.com/b/aszego/archive/2009/10/12/visual-basic-6-and-net-com-interop.aspx
Se alguém puder ajudar, agradeço muito..
-
Pessoal,
não preciso repetir que tanto o projeto ACBr como o ACBrFramework são fantásticos, mas estou encontrando alguns problemas em usá-lo no VB6.
Tenho um aplicativo funcional que utiliza o ACBrX do pessoal do EasyTef. O pessoal sempre me deu um bom suporte mas depois que vocês lançaram o ACBrFramework eles
não me responderam mais. Acho que perderam o interesse pelo produto.
Dessa forma, estou fazendo uma avaliação para trocar o ACBrX pelo ACBrFramework. Ja baixei o projeto, compilei e consigo fazê-lo funcionar PARCIALMENTE.
------------
Para fazê-lo funcionar tive que fazer algumas alterações no aplicativo de exemplo:
Trocar:
Private Sub ACBrECF_OnBobinaAdicionaLinhas(ByVal e As ACBrFramework_Net.BobinaEventArgs)
Por:
Private Sub ACBrECF_OnBobinaAdicionaLinhas(ByVal e As ACBrFramework_Net.BobinaAdicionaLinhasEventArgs)
--------------
Percebi que várias funções que eu usava estão marcadas como PENDENTES:
Exemplo:
Private Sub mniAchaAliquotaValor_Click() 'PENDENTE 'Dim Aliquota As Aliquota 'Dim Valor As String ' ' Call ACBrECF.LerTotaisAliquota ' Set Aliquota = ACBrECF.AchaICMSAliquota(Valor, "") 'função que usava em minha aplicação
Neste caso específico não preciso mais da função visto que a função de programação de aliquota não cria aliquotas já existentes.Mando programar a aliquota e se ela ja existir nada acontecerá.Não entendi (não encontrei na documentação) porque algumas das propriedades do ACBrECF não existem mais (ou, pelo menos, não funcionam no ACBRFramework).Propriedades inexistentes:ReTentar BloqueiaMouseTeclado ExibeMensagem MsgAguarde MsgTrabalhando
Objetos Inexistentes:ACBrRFD
Metodos Inexistentes:ACBrECF.CarregarMemoParams
Algumas das mudanças (incluo em mudanças as pendencias e melhorias em algumas funções) não tiveram grande impacto mas tem umaque está me atrapalhando muito (por enquanto, é a única).No meu aplicativo mostro na tela o retorno do processamento dos comandos em um componente do tipo textbox, utilizando a propriedadeLinhas do evento ACBrECF_OnBobinaAdicionaLinhas. Para que saida seja satisfatoria o conteudo da propriedade Linhas deve estar emmodo texto (HTML=0, na propriedade MemoParams) e nao HTML (HTML=1, na propriedade MemoParams). Com o ACBrX eu carregavaesta informação de um arquivo .INI e atualizava a propriedade MemoParams. Agora não consigo fazer o mesmo com o ACBrFrameworke o retorno da propriedade Linhas está cheio de tags HTML. Eu preciso realmente resolver este problema. Irei fazer a migração doaplicativo para C# (tenho outros ja rodando) mas não tenho tempo para fazer isso agora.Tecnicamente falando.O objeto ACBrECF tem uma propriedade que é um array de string (Propriedade MemoParams) e que não ser alterada mesmo tendoo método SET no ACBrFramework.Net.dll. Ela pode ser lida (GET) mas não pode ser alterada. A mensagem que retorna é a seguinte:Function or interface marked as restricted, or the function uses an Automation Type not supported in Visual Basic.Acredito que o problema não seja "restricted" visto que a propriedade é publica e outras propriedades da mesma classe são acessadase alteradas normalmente. O problema deve ser o "Automation Type not supported in Visual Basic".Vocês já tentaram alterar a propriedade MemoParams dentro do VB6?Façam este teste no Aplicativo ECFTeste.vbp. Substituam o inicio do codigo da procedure CarregarACBrECF por
Private Sub CarregarACBrECF() Set ACBrECF = New ACBrECF Dim memoparams As Variant 'Atribuo tranquilamente sem erros memoparams = ACBrECF.memoparams 'Altero a variavel local memoparams(1) = "LIN000=<center><b>RARARARRARAR</b></center>" memoparams(22) = "HTML=0" 'Trecho de codigo que da erro de compilação ACBrECF.memoparams = memoparams 'Utilizar o AAC 'Set ACBrAAC = New ACBrAAC 'ACBrAAC.NomeArquivoAuxiliar = "C:\teste.txt" 'Set ACBrECF.AAC = ACBrAAC
Desde já agradeço muito a atenção.
Ficarei feliz se puder ajudar no projeto também.
-
Caro EasyTEF,
ja tinha visto o trabalho de voces. No entanto, no seu site não existe telefone, email de contato, etc.
Como faço para entrar em contato como você?
-
Estou com problemas ao criar o activex do ACBR para utiliza-lo no visual basic 6.
O exemplo que tem no projeto esta bastante incompleto e comecei, entao, a ampliá-lo.
No entanto estou com problemas com relação as funções que passam "estruturas" de dados por parâmetro,
conforme levantei neste post. http://www.forumweb.com.br/foruns/topic ... ge__st__60 .
Nao estou consiguindo carregar as aliquotas corretamente.
Ainda faltam as formas de pagamento e outros.
Como alternativa a sugestao do post, tentei usar outra funcao:GetAliquotaSStr .
Ao usar a funcao ECF_GetAliquotaSStr percebi que nao tinha na versão da ACBr32.dll (922KB) da pasta C:\SVN\ACBR\Projetos\ACBr32_DLL\ACBr_ActiveX.
Usei a outra dll que estava na pasta C:\SVN\ACBR\Projetos\ACBr32_DLL\ACBr32 (1608 kb) mas ai surgiu outro erro
"BAD DLL calling convention."
Pesquisei e se refere a questoes de compilacao encontradas no mesmo post.
http://support.microsoft.com/kb/153586
http://www.codeguru.com/forum/showthread.php?t=373600
Check these threads:
http://www.codeguru.com/forum/showthread.php?t=356338
http://www.codeguru.com/forum/showthread.php?t=352701
http://www.codeguru.com/forum/showthread.php?t=371639 __________________
A sugestao seria recompilar utilizando a diretiva "STDCALL".
Baixei o Delphi 2010 e tentei recompilar. Nao consegui.
Ocorreu o seguinte erro:
[DCC Error] ACBrPAFClass.pas(496): E2010 Incompatible types: 'TListSortCompare' and 'Pointer'
O que eu faço?
TFA.
Erro Disk Full
em .Net (C# e VB.Net)
Postado
Pessoal,
acabei de encontrar o problema e a solução.
Juntei os argumentos de cada um de vocês, consegui simular o problema, diagnostica-lo e achar uma solução (que está vinculada ao design da minha aplicação).
Cenário:
Cliente
Windows XP
Impressora fiscal MP 4000 TH FI
Bobina com pouco papel
Aplicativo desenvolvido em Visual Basic 6.0 utilizando ACBrFramework
Histórico:
Aplicativo instalado ontem no cliente.
Hoje apresentou problemas ao ativar a impressora (ACBR.ATIVAR), retornando a mensagem DISK FULL.
Ao utilizar o formulario de configuração da impressora (no mesmo aplicativo) a impressora ativava normalmente e retornava a mensagem POUCO PAPEL.
Eu desativava a impressora e ativava novamente e nada de aparecer a mensagem DISK FULL.
Saia da configuração da impressora e quando retornava recebia novamente a mensagem DISK FULL.
Ainda no cliente, pedi para que o mesmo trocasse a bobina (com pouco papel) por uma nova.
Ele trocou e resolveu o problema.
O que não tinha sentido (POUCO PAPEL e DISK FULL) confirmou ter alguma relação obscura.
Para encontrar a solução precisava simular o problema no meu ambiente de desenvolvimento.
Simulação em Ambiente de Desenvolvimento:
Sempre uso o emulador da SWEDA, connectsim, e tentei simular pouco papel com ele.
Em todos os aplicativos que tinha em mãos nao retornava o status e nem a mensagem.
Instalei o emulador novo da bematech e tambem nao funcionou direito com o com0com que tenho funcionando aqui.
Instalei emulador antigo da Bematech.
Este sim me retornou o status de pouco papel e fez com o erro acontecesse em ambiente de desenvolvimento.
Depois de vários testes e tentativas de alteração de código percebi que:
Eu tento no sistema ativar a impressora em 2 locais diferentes:
a) para verificar somente se a impressora esta configurada corretamente e funcionando e
para trabalhar efetivamente com a impressora.
As diferenças entre os 2 locais de ativação eram a existência( ou não (a) de um formulário (form) associado.
Concluí então, que o fato do ACBr disparar eventos como o de POUCO PAPEL exigia um tratamento (ou pelo menos um ambiente-form- em que pudesse se "expressar")
para o evento disparado.
Para não alterar muito meu código criei um formulário (que fica invisivel o tempo todo) com uma variavel do ACBR que será setada para a instância global e que trata
os eventos emitidos pelo ACBrECF.
Com esta solução o problema não mais ocorreu.
Resumindo, o cenário de ocorrência foi identificado, uma solução viável foi apresentada. Fica faltando a explicação do porque da mensagem DISK FULL.
É com vocês agora.