-
Total de ítens
23 -
Registro em
-
Última visita
Contact Methods
-
Website URL
https://claytonaalves.github.io/
Últimos Visitantes
1.542 visualizações
Clayton Alves's Achievements
-
O que significa "CD" no ACBrPIXCD ?
Clayton Alves replied to Clayton Alves's tópico in Dúvidas Gerais sobre o ACBr
@Cleber Ferreira sim, pode fechar... achei que marcando a resposta como solucionada já fechava automaticamente. -
O que significa "CD" no ACBrPIXCD ?
um tópico no fórum postou Clayton Alves Dúvidas Gerais sobre o ACBr
Pergunta meio boba mas não achei em lugar nenhum. Qual o significado de "CD" no nome do componente ACBrPIXCD ? -
Boa tarde @Pedro Frayman, Muitos dos meus clientes utilizam a Verifone C680. Alguns com a Stone. Outros com a cooperativa Sicredi. Então pensei que era possível integrar meu sistema com essas maquininhas utilizando o ACBrPOSTEF. Sabe me dizer se existe documentação disponível para esses outros equipamentos? sem ser SmartPOS. Fiz uma busca na internet mas não achei nada.
-
Outras maquininhas que suportam integração POSTEF além da PAX S920 ?
um tópico no fórum postou Clayton Alves Dúvidas sobre TEF
Existem outras "maquininhas" que suportam integração POSTEF além da PAX S920 ? Vi algumas empresas utilizando integração do sistema comercial com a Verifone C680 e também com a Q92. Essas máquinas são compatíveis com o ACBrPOSTEF ? Existem outros modelos compatíveis ? -
Clayton Alves changed their profile photo
-
Especificamente no caso do TMedCollection não teriam memory leak já que o TMedCollection é uma TObjectList que é dona de seus itens, ou seja, os itens serão liberados junto com a coleção no momento da liberação. Por fim o trecho abaixo resolveu meu problema de AV, mas é um "workaround" e acredito que a não duplicação desses itens possa ocasionar problemas no futuro. FProd.Assign(ItemXML.Prod); // Ajuste técnico FProd.med.OwnsObjects := False; FProd.med.Clear; FProd.med.OwnsObjects := True; Agradeço o tempo de vocês.
-
@BigWings sim, o TDetCollection dispara o AV da mesma forma. Veja o projeto de exemplo em anexo. Na minha interpretação, a semântica do método Assign é de Copiar e não de Mover. Conforme consta na documentação do Freepascal: "Assign copies the contents of Source to Self, if the classes of the destination and source classes are compatible." E da embarcadero: "Copies the contents of another, similar object." Sim, as documentações falam do método Assign da classe TPersistent mas não estou me referindo a implementação e sim a semântica. Exemplo que dispara o AV: program Project1; {$APPTYPE CONSOLE} uses //FastMM4, SysUtils, pcnNFe; var Det1, Det2: TDetCollection; begin Det1 := TDetCollection.Create; Det2 := TDetCollection.Create; Det1.New; Det2.Assign(Det1); // Move algumas referências, quando na verdade deveria copiar. WriteLn('Liberando Det1'); Det1.Free; WriteLn('Liberando Det1'); Det2.Free; // <- Access Violation WriteLn('Fim'); end. Project1.dpr
-
Entendo. Mas o exemplo que dei foi bem simplificado propositalmente para deixar mais claro o problema. No caso real, eu não instancio um TMedCollection. Eu tenho uma instancia de TDetCollectionItem, que por sua vez tem uma instância de TProd que por sua vez tem uma instancia de TMedCollection. Neste cenário, utilizar o Assign de TDetCollectionItem com outro TDetCollectionItem e posteriormente realizar o Free irá disparar o AV da mesma forma.
-
Sim, TList possui um método Assign que não cria cópias das Instâncias de TMedCollectionItem, causando o problema. Em outras palavras, o Assign do TList não chama o Assign de cada TMedCollectionItem. Realmente não estou com os fontes atualizados, mas basicamente o que está faltando é esta implementação: procedure TMedCollection.Assign(Source: TMedCollection); var I: Integer; begin Self.Clear; for I := 0 to Source.Count - 1 do Self.New.Assign(Source.Items[I]); end;
-
Violação de Acesso ao utilizar método Assign no Grupo de Medicamentos da NFe
um tópico no fórum postou Clayton Alves ACBrNFe
Ao trabalhar com cópias de TMedCollection utilizando o método Assign da forma que está atualmente obtenho uma Violação de Acesso ao liberar minha cópia. Isso acontece porque não existe implementado um método Assign na classe TMedCollection, o que faz com que a cópia utilize a referência de TMedCollectionItem e não uma cópia da instância. Segue anexo código corrigido. pcnNFe.pas -
Imagem Captcha Consulta Receita CNPJ
Clayton Alves replied to alex_porthal's tópico in Dúvidas Gerais sobre o ACBr
@alex_porthal estou utilizando a versão mais recente do código do ACBr e a consulta está funcionando normalmente. -
Gravação incorreta do campo COD_GRUPO_TENSAO no registro C500
um tópico no fórum postou Clayton Alves ACBrSPEDFiscal
Ao gravar o registro C500 o campo COD_GRUPO_TENSAO está sendo gravado incorretamente (acrescentando 1). Ex. correto, grupo de tensão gtA1: |C500|0|1|F000001|06|00|150||02|000002568|01012017|01012017|55,00|5,00|50,00|0,00|0,00|0,00|12,00|15,00|10,00|10,00||5,00|5,00|1|01| Ex. incorreto, grupo de tensão gtA1: |C500|0|1|F000001|06|00|150||02|000002568|01012017|01012017|55,00|5,00|50,00|0,00|0,00|0,00|12,00|15,00|10,00|10,00||5,00|5,00|1|02| Aparentemente o problema está na unit ACBrEFDBlocos na função GrupoTensaoToStr. Segue anexo unit corrigida. ACBrEFDBlocos.pas -
Algumas units foram salvas utilizando o encoding UTF-8 com os bytes de marcação (BOM) no início do arquivo. Essa codificação impede a compilação com compiladores antigos (Delphi 7), retornando o seguinte erro: ACBrDFe\ACBrXmlDocument.pas(1) Error: Illegal character in input file: 'ï' ($EF) Os arquivos são: ACBrDFe/ACBrNF3e/PCNNF3e/ACBrNF3eXmlReader.pas ACBrDFe/ACBrNF3e/PCNNF3e/ACBrNF3eXmlWriter.pas ACBrDFe/ACBrXmlWriter.pas ACBrDFe/ACBrNFe/DANFE/NFe/LazReport/ACBrNFeDANFeLazReport.pas ACBrDFe/ACBrNFe/PCNNFe/ACBrNFeXmlReader.pas ACBrDFe/ACBrXmlDocument.pas Salvando os arquivos com o encoding latin-1 resolve o problema.
- 1 reply
-
- 1