Ir para conteúdo
  • Cadastre-se

bylaardt

Membros
  • Total de ítens

    28
  • Registro em

  • Última visita

Tudo que bylaardt postou

  1. A relação dos nomes das impressoras instaladas no sistema você encontra em: printer.printers ele retorna um TStrings com todas elas. Era o que você precisava?
  2. Qual distro? algumas distros já vêm com o FPC pré-instalado que conflita com a compilação do ppcx recomendo instalar o lazarus através do fpcupdeluxe, ele já reconfigura o fpc.cfg e você pode instalar todos os compiladores cruzados que precisar, sem alterar o fpc instalado em /usr/bin ou /usr/local/bin, não conflitando com a distro e permitindo instalar várias versões diferentes do lazarus e dp FPC em diretórios distintos. A versão mais atual você pode baixar daqui: https://github.com/LongDirtyAnimAlf/fpcupdeluxe/releases
  3. A divisão decimal sempre deve ser evitada, não importa a linguagem! E quando possível, primeiro multiplique, depois divida, veja o exemplo teórico: 3*(10/3) = 3* (3.33333333333) = 9.99999999999 3*10/3 = 30 / 3 = 10 creio que você resolveria o problema sem gambiarras se removesse os parêntese e apenas multiplicasse: 11000,00 * 0.022215 É importante também você converter para o formato correto do número, preferencialmente usando Currency ao invés de Extended: Lembre-se que a estrutura do Currency é basicamente um Int64 com quatro casas decimais
  4. procedure SetControlUpperCase(MyComponent:TWinControl); Var i:Integer; begin if MyComponent is TCustomComboBox then TCustomComboBox(MyComponent).CharCase:=ecUppercase else if MyComponent is TCustomEdit then TCustomEdit(MyComponent).CharCase:=ecUppercase; for i:=0 to MyComponent.ControlCount-1 do if MyComponent.Controls[i] is TWinControl then SetControlUpperCase(TWinControl(MyComponent.Controls[i])); end; depois é só chamar a procedure uma vez, exemplo: procedure TForm1.FormCreate(Sender: TObject); begin SetControlUpperCase(Self); end; com a vantagem de poder controlar por Tform, por Tpanel, ou qualquer outro TWinControl ou seus descendentes
  5. porque utf8 não é apenas 8bits (note que você usa [1] para limitar ao primeiro byte). não use OnKeyPress, caso queira colocar no evento apropriado, coloque em OnUTF8KeyPress e não limite à um byte a alteração com Uppercase Mas ainda acredito que apenas setar corretamente a propriedade Charcase deve resolver no seu caso.
  6. O Bug já foi corrigido em versões posteriores (trunk review 62806), mandei o patch em março. https://bugs.freepascal.org/view.php?id=36815 O problema só ocorre com compilação GTK2, se compilar para Qt não ocorre o erro.
  7. Outra opção é setar ecUpercase na propriedade Charcase de qualquer objeto derivado de TCustomEdit
  8. Eu entendi um evento para cada fornecedor, limitado à 100 eventos por lote. Tem certeza que é um arquivo para cada fornecedor / cliente?
  9. Eu estou usando Linux e resolvi o único problema de validação alterando o nome do arquivo "envioLoteEventos-v1_03_02.xsd" para "EnvioLoteEventos-v1_03_02.xsd".
  10. Quanto ao estudo da ACBrNFe, a minha intenção é realmente verificar como ocorre a evolução do componente, os remendos, as gambiarras, os processos de revisão: o desenvolvimento em si, não apenas o estudo do código fonte. Ainda vejo deficiência na documentação: acharia muito mais interessante comentar o código para poder gerar a documentação por aplicativos como o pasdoc, mas isso é opinião. Imagino que possa haver muito mais contribuições quando o material está documentado, mas ao mesmo tempo, sei que isso demanda recursos. A documentação ajudaria muito no processo de revisão. Quanto à modificação: Agora faz todo o sentido do mundo! Reitero: "... fica o agradecimento pelo pronto atendimento, é raro encontrar uma equipe tão dedicada! " Grato à todos os Moderadores, em especial ao Sr. Italo.
  11. Com certeza! eu apenas tive dificuldades em entender o que LoadFromString deveria fazer, e a rotina não fazia sentido (aliás, ainda não faz) para mim. Eu ainda não me sinto apto a ajudar por enquanto já que, como eu disse, ainda estou estudando os fontes e entendendo a dinâmica dos desenvolvedores. Quando digo que sou muito fã do ACBr, não o digo porque os componentes são bons ou fáceis de usar. Digo isso pela filosofia de trabalho compartilhado. Pessoalmente ainda não usei os componentes, e nem vejo necessidade imediata de fazê-lo, mas isso não significa que eu não possa contribuir num futuro próximo. Também percebo que alguns os códigos são bem confusos e outros bem limpos. isso demonstra claramente a pluralidade dos desenvolvedores, e isso é o que mais me encanta no projeto. Não há excesso de conservadorismo ou privação de idéias. Para ajudáa-los, talvez a minha maior dificuldade seja a de adptar os fontes para serem compatíveis com o Delphi (preferência por {$mode objfpc} ), já que não o uso mais desde a versão 5 porém, pelo que vejo, é bastante comum os fontes serem adaptados para ficarem compatíveis.
  12. Oi Italo, Grato! Era isso que eu precisava saber. Presumo que o componente será revisto, certo?
  13. Oi Juliomar, pronto, esvaziei a mente e me deparo com um código assim: Abaixo o do arquivo ACBrReinf.pas function TEventos.LoadFromString(AXMLString: String): Boolean; var AXML: AnsiString; P, N: integer; function PosReinf: integer; begin Result := pos('</Reinf>', AXMLString); end; begin Result := False; N := PosReinf; while N > 0 do begin P := pos('</Reinf>', AXMLString); if P > 0 then begin AXML := copy(AXMLString, 1, P + 9); AXMLString := Trim(copy(AXMLString, P + 10, length(AXMLString))); end else begin AXML := copy(AXMLString, 1, N + 6); AXMLString := Trim(copy(AXMLString, N + 6, length(AXMLString))); end; Result := Self.ReinfEventos.LoadFromString(AXML); N := PosReinf; end; end; o mesmo código se replica em TLoteEventos, em ACBrReinfLoteEventos.pas. E eu fiquei me perguntando se havia alguma explicação pra essas variáveis N e P, ou eu simplesmente poderia reescrever o código assim (já comentado para usar com o pasdoc): {Alimentação de XML em TItemLoteEventos com o conteúdo de evento XML já assinado para posterior envio. IMPORTANTE: o conteúdo de AXMLString já deverá estar assinado e desprovido de cabeçalhos} function TLoteEventos.LoadFromString(AXMLString: String): Boolean; Const ReinfSearchTag = '</Reinf>'; var AXML: AnsiString; P: integer; begin P := pos(ReinfSearchTag, AXMLString); while N > 0 do begin AXML := copy(AXMLString, 1, ifthen(p>0,p+9,6) ); AXMLString := Trim(copy(AXMLString, ifthen(p>0,P + 10,6) length(AXMLString))); Add.FXML := AXML; P := pos(ReinfSearchTag, AXMLString); end; Result := Self.Count > 0; end; O projeto já é muito grande, e cheio de copia-e-cola, sinal claro que a documentação era necessária e não foi usada. O Código é confuso, no exemplo que citei, é inclusive deselegante, salvo se o código acima não puder ser reduzido e N e P realmente tinham alguma razão de ser que eu desconhecia. E sem os devidos comentários, é mais confuso ainda, porque temos que recorrer ao fórum para entender a intenção do desenvolvedor, porque o código pode ainda não estár concluído, certo? PS: Redigir a documentação base para o pasdoc pode ser um bom exercício para a criatividade literária, veja isso como algo positivo! Quanto à citação " quer melhor documentação que os fontes? " minha resposta seria: Quero fontes passiveis de serem documentadas, por exemplo, pelo pasdoc, portanto sim: a documentação ideal estaria nos fontes ?. Logo, se você discorda, é porque eu me expressei mal, desculpe-me mais uma vez. Voltando ao assunto original: note que eu ainda estou no campo da opinião, o comentário (cabeçalho para pasdoc) que eu fiz na reescrita da função é meramente especulativa, pode não ser isso, por isso estou pedindo ajuda para entender o que são essas funções, e o que a variável N e P representam. Já tive retorno de 3 moderadores e ainda não consegui me expressar ? de modo a conseguir me fazer entender. Mas fica o agradecimento pelo pronto atendimento, é raro encontrar uma equipe tão dedicada!
  14. Oi Rafael, não vou poder ajudar enquanto não entender a metodologia. Como você pode ver, a falta de documentação e os fontes pouco comentados me impedem de saber o que vocês já têm pronto. Minha dúvida específica era em relação à função LoadFromString presente em Teventos e TloteEventos, que ainda não foi solucionada: não sei qual o objetivo dessa função. só isso! ela me parece confusa: veja os fontes, as variáveis N e P não fazem sentido. meu objetivo não é usar o reinf, e sim estudar os fontes. Escolhi o Reinf justamente por ser uma tecnologia que precisa ser implantada agora e estou avaliando como ocorre todo o processo de divulgação dos fontes, correção dos eventuais bugs, mas a dúvida permanece: o que é essa função? Ela é usada em TLoteEventos.CarregaXMLEventos, mas a função por si só não faz sentido, especialmente em relação à busca da posição por '</Reinf> ' nas variáveis N e P. e um IF que, se considerarmos que N e P sempre terão o mesmo valor. veja N é atribuido antes do loop while e no seu final, e P é atribuído dentro do loop while já no seu início. Achou confuso? pois é!... eu também, por isso que pergunto!
  15. Oi Italo, na verdade eu ainda estou estudando os componentes, não exatamente usando-os ainda. E eu sou muito fã do ACBr, mas também sou muito fã de projetos OpenSource porque permitem à você adaptar, melhorar, personalizar. Acho que nada não possa ser melhorado e a rigidez de um componente pode não ser a melhor forma de evoluir. Acho importante ter todos os recursos, mas nem sempre eu preciso de um caminhão para ir à panificadora para trazer apenas um pãozinho... Minha dificuldade está em entender o que a função LoadFromString deveria fazer. pelo nome parece-me que deveria ler um evento baseado num XML já gerado anteriormente, mas a rotina, ao estudá-la me pareceu sem sentido, só isso! A falta de documentação ou de comentários nos fontes dificulta muito esse tipo de estudo. Peço ajuda para entender porque quero evitar suposições erradas, não gostaria de presumir que essa função era pra fazer algo que na verdade faz outra e, ao final, chegar a conclusão de que o componente era ruim ou bugado se na verdade ele é ótimo e eu apenas não soubia como usá-lo durante minha avaliação. Peço desculpas se não consegui me expressar de forma adequada da primeira vez. e agradeço desde já a sua pronta atenção. Sei que não é fácil responder a todos, mas eu ainda estou confuso com a rotina: Ela serve para carregar os XML já gerados anteriormente? as variáveis N e P na função realmente estão corretas?
  16. estudando os fontes, eu simplesmente não consigo entender as funções derivadas de TEventos.LoadFromString(AXMLString: String): Boolean; (linha 224 de acbrreinfeventos.pas e seguintes) explico: qual a função das variáveis N e P já que ambos procuram pela mesma posição com a função "pos('</Reinf>', AXMLString)" ? cada evento não deveria estar entre as posições de <Reinf> e </Reinf>? Eu já possuo um gerador de XML, caso eu gere os eventos por essa rotina que não faz parte do tAcbrReinf, seria essa função (TEventos.LoadFromString) que eu devo usar para enviá-los?
  17. RenatoE, maio ainda é especulativo. A obrigação do EFD-Reinf é a janeiro de 2018. a IN RFB 1701/2017 ainda está vigente e sem previsão de revogação. http://normas.receita.fazenda.gov.br/sijut2consulta/link.action?visao=anotado&idAto=81226
  18. Creio que o Tópico foi para uma direção que o Daniel não esperava, mas vamos à minha visão: 1) Quanto à postura do Sr. Marchetti: Também sou de Santa Catarina, um estado que trabalha, que produz, de gente orgulhosa e promissora, que não está acostumado a pedir ajuda sem dar nada em troca. e também não está acostumado a dar ajuda para pessoas ingratas. Isso é cultural para nṍs. Se você quer ajuda, nós ajudaremos, mas se quiser criticar nossa ajuda difamando o nosso trabalho ou achando que a ajuda que fornecemos é uma obrigação e não um favor, culturalmente entenderemos que você não é mais merecedor dos nossos esforços. O que o Sr. Marchetti fez é apenas um reflexo da nossa cultura (e de outros estados, alguns inclusive do norte, como por exemplo Rondônia, que teve muitos imigrantes gaúchos). Somos diretos, objetivos, não usamos pronomes de tratamento, (segunda pessoa e TU ), mas isso não significa que somos agressivos, apenas que possuímos culturas diferentes. Tenho certeza que muitos vão achar meu texto agressivo ou chamá-lo de "textão" ou achar que também estou dando "patadas" mas não... quero apenas mostrar as diferenças culturais e se você não é programador delphi e acha que por isso não pode contribuir com o projeto, você provavelmente está errado. 2) Quanto ao "que eu uso", citado pelo Sr. douglaswf : Eu não uso nada por enquanto. Estou na fase de estudar os códigos. Apaixonei-me pelos códigos e pela organização usada pelo ACBr. Não sou programador Delphi, uso Object-pascal. Muito similar, porém diferentes. meus códigos são sempre cheios de helper types que são incompatíveis com a proposta do ACBr de manter a compatibilidade com o Delphi desde a versão 7 em diante, mas isso não me impede de querer entender e aprimorar cada vez mais. Minhas primeiras metas pessoais são: 2.1) Fazer com que o ACBr se torne compilável por cross-compile (FPC) de linux para windows. Atualmente não é possível porque os os fontes não estão em UTF8 e os caracteres acentuados deverão estar para que funcione o crosscompile no FPC em linux (espero fazer isso colocando constantes do tipo TTranslateString em arquivos .inc com diretivas de compilação {$IFDEF FPC} ou similar) 2.2) Fazer com que os componentes ACBr possam ser traduzido por arquivos .po através dessas constantes dos arquivos UTF8. Mas para isso acontecer, preciso de estudo e tempo. Já até sugerido pelo Daniel Simoes que fosse feito um fork. Mas ainda estou estudando a possibilidade de fornecer alterações ao projeto ACBr ou fazer um refactoring do que realmente me interessei. segue o link da sugestão do Daniel. 3) Quanto ao tópico original. Vi que algumas opiniões são pontuais e querem resolver seus problemas pessoais. Esperava ver mais contribuições nos sentidos de: 3.1) Manter a longevidade do projeto; 3.2) Criar formas de arrecadação consistentes; 3.3) Viabilizar para o projeto economicamente e intelectualmente ; 3.4) Promover e divulgar o projeto profissionalmente e academicamente; 3.5) Agregar novos recursos. 4) Quanto à outras linguagens: Apesar de conhecer diversas linguagens, eu possuo preferências de desenvolvimento, exemplo, projetos comerciais que demandam manutenção, precisam de códigos organizados e de fácil manutenção. por isso opto por object pascal, mas para Android, apesar de já ser possível desenvolver por pascal, uso o java. A maior parte do código livre escrito no planeta são de linguagens c like, mas isso não significa que você precisa aprender apenas uma linguagem. Caso você seja especialista em outra linguagem, provavelmente poderá contribuir construindo cabeçalhos das bibliotecas descritas no vídeo do Daniel Simoes nas linguagens que você esteja familiarizado. opinião pessoal: Github melhor que SourceForge que é melhor que Launchpad, Google Code ou CodePlex.
  19. Oi Daniel, vejo que você está trilhando um caminho visando o cliente, o que é muito bom e não perca esse foco. mas também vejo que você não está focando o Consumidor. o projeto ACBr pode crescer ainda mais se focar o consumidor. Por favor, se tiver algum fornecedor ou fabricante de produtos estudem a proposta de colocar um selo com ou sem QRcode estampado no produto: "Parceiro projeto ACBr" "Apoiamos o projeto ACBr" "Compatível com projeto ACBr" "Testado por ACBr" O selo é algo que os consumidores já conhecem em brinquedos infantis , produtos orgânicos, o famoso "designed for" da Microsoft, responsabilidade ecológica, emissão de carbono, aferimento, etc... Tenho certeza que a o Daniel vai olhar com mais carinho os primeiros fornecedores parceiros que fizerem propostas reais nesses sentido. E claro, os meus clientes não vão mais se constranger em perguntar para os vendedores comissionados de lojas de varejo se o produto vai funcionar e deixar que estes mesmos vendedores "empurrem" produtos diferentes com a intenção de ganhar premiações de vendas de produtos encalhados. Ah! sim, Não esqueça de divulgar os fornecedores,os produtos, as lojas e as software houses que receberem esses selo, quero indicá-los aos meus clientes.
  20. Como eu não tenho acesso às respostas nos ítens ACBr new, posto aqui. Favor reclassificar se prudente. Em complemento ao tópico do Daniel Simões : Eu acredito que o seu foco está muito voltado ao Desenvolvedor, o que eu considero ruim para a expansão dos negócios. As principais fontes de renda que você pode ter são justamente com o consumidor dos equipamentos compatíveis com o ACBr. Explico: Quando Daniel Simões colocou o tópico , especificamente Slide "Falta de outras receitas/Solução/Principais produtos/Marketing cooperado com fabricante", percebi que o seu público alvo está errado, o ACBr não é um produto para os desenvolvedores, e sim para os que querem vender outros produtos, como os fabricantes de hardware. Minhas sugestões para implementar as ideias do Daniel Simões: - Crie um processo de certificação de equipamentos com a marca registrada do "Compatível com ACBr" ou "Compatível com ACBr/Plus" que poderá ser atestado por modelo/marca de produto no estilo selo holográfico. Motivo: A maior dificuldade de quem compra um equipamento, é saber se o software "vai rodar" para esse equipamento. A escolha é sempre do software para o hardware, raramente o contrário. Detalhe, essa dúvida ocorre por modelo, não por marca. - Crie um certificação para desenvolvedores, com o tempo, desenvolvedores com Certificação ACBr poderão ser selecionados como um diferencial na contratação. - Suporte compartilhado contratado pelo fabricante do equipamento pelo período de garantia do produto. Explico: Você plugou o equipamento, instalou os softwares, bibliotecas, o software distribuído pelo fabricante funcionou mas no seu PDV não, por quê? Seleção - Suporte para consumidores finais de software houses conveniadas: O ACBr tem consultores que eu acredito resolvam os problemas de diversos tipos. Grande parte do trabalho dos consultores é entender o que o cliente está tentando dizer para só então direcionar uma resposta. Problemas que vão de equipamento plugado na porta errada à falta de serviço dos servidores do fisco não são dependem de soluções do ACBr propriamente dito, mas tenho certeza que o SAC já atendeu inúmeros chamados nesse sentido. Mensagens de erro de falta de DLL também são facilmente resolvidos. Para isso, basta criar um controle de chamadas de clientes terceirizados para que eu possa repassar (acrescido dos impostos,etc... ) o custo do suporte na fatura dos clientes (sim, cobra-se por chamada, não por mensalidade). - Consultoria fiscal especializada e SPED. Produto raro no Brasil. - Palestas acadêmicas ou cursos para áreas distintas do TI, como Direito (principalmente fiscal) Contabilidade e Economia. As universidades do país, em sua maioria, exigem carga extra-curricular, por que não explorar esse mercado? - Firmar convênios com agências (não funcionários) para vender os selos, palestras ou cursos. -Transformar o ACBr em franquia, para que possa estar presente em todo o país, especialmente em cidades universitárias. Importante: Isso são apenas ideias que precisam ser avaliadas para fins de viabilidade.
  21. O ambiente de testes está preparado apenas para a versão v1.01.01. foi disponibilizado quando a v1.01.02 ainda não estava disponível, veja: http://sped.rfb.gov.br/pagina/show/2247 O layout da v1.01.02 foi disponibilizado em 12/09. Ainda não é a versão final. A RFB havia prometido divulgar o novo layout ainda em outubro (que não aconteceu), e um novo esquema/layout para o evento R-2070 que foi postergado ainda sem data prevista, conforme http://sped.rfb.gov.br/pagina/show/2331 As informações que obtive, são extra-oficiais, até porque os funcionários da SRF são completamente despreparados para responder e os integrantes do comitê do e-social estão se distanciando do Reinf, e não largam mais notas sobre o Reinf. Sabe-se apenas que o Reinf e o E-Social precisam entrar em funcionamento ao mesmo tempo por causa da forma como serão geradas as guias de recolhimento.
  22. Pena que esse site não é tão confiável assim. Dia 11 de agosto não é feriado em Santa Catarina como indica o site: Conforme previsão legal, o feriado é sempre transferido para o domingo seguinte.
  23. O Synapse tem a função FtpGetFile na unit ftpsend. pelo que eu sei, o ACBr usa o synapse. Não precisa reescrever uma função que já existe.
  24. Oi Juliomar e Daniel, Sim, ele funciona para linux, o que não funciona é quando faz a compilação cruzada. Não irei fazer um Fork. Percebi que o ACBr não me atende no que eu preciso de curto prazo, apenas continuarei estudando o código que, aliás, parabenizo à toda a equipe pelo excelente trabalho. Gostei muito do projeto, e concordo com o Daniel: Se há motivação para manter a compatibilidade com o D7, mantenha o Código compatível com o D7. Não há necessidade de manter uma equipe para satisfazer uma necessidade tão pontual. Eu procurava soluções para o Reinf e optei em usar o WebService ToolKit e fazer a assinatura pelo xmlsec. Importante: Minha decisão não foi baseada na falta de qualidade do ACBr, pelo contrário, admiro o trabalho feito aqui, e com uma qualidade muito alta. Minha decisão foi apenas por uma questão de atender a minha necessidade pontual a curto prazo. Quanto à submeter fontes para a análise. Para converter para UTF8, está mais para um refactoring que um Fork.
  25. Quanto ao ACBr.inc, ele está correto, somente converti para UTF8. MSWINDOWS precisa estar definida na compilação cruzada. Mas corrigi usando as diretivas MSWINDOWS em arquivos inteiros dos fontes. Em compilação cruzada de linux para windows, a diretiva MSWINDOWS precisa estar definida, mas os arquivos que você diz que "não compilariam em linux" precisam ser compilados, mas eles não estão instalados nos pacotes, apenas apontados pelo diretório. As únicas rotinas que eu estou estudando e possivelmente precisarei são as classes para a assinatura e transmissão do REINF: TACBrDFe TWebServices Para gerar os arquivos, eu uso as classes da unit DOM. Mas para que essas duas classes (assinatura e transmissão) funcionem, precisei instalar os pacotes: ACBrComum ACBrDiversos ACBrDFeComum laz_synapse (removendo o synapse original) PCNComum Para conseguir instalar a ACBrDiversos, precisei adequar algumas funções, dentre elas a TiraAcentos, e excluir a função tiraacento, conforme descrito acima. Incluir o arquivos em pacotes, e encher de diretivas de compilação e alterar todos os arquivos com acentuação gráfica para UTF8. Minha solução, por hora, é estudar o código e ver se ACBr pode vir a ser útil e se a decisão de manter a compatibilidade com o D7 pode vir a aumentar as chances da morte prematura do projeto ACBr. Sei que Código aberto não fornece garantias, mas ainda assim sempre obtive melhores resultados do que com código proprietário, por isso estou propenso a apostar mais na sobrevida do ACBr do que do D7. Vou continuar estudando os código. Creio que até o final do mês eu entenda a real dimensão do projeto, mas até lá. não posso simplesmente dizer que decisão tomarei. Para saber quais as modificações tive que fazer, tente a compilação cruzada de linux para windows do projeto DJPDV. você entenderá o que eu estou tentando dizer.
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.