Jump to content

Gilmar Piccin

Pessoal da TecnoSpeed
  • Contagem de Conteúdo

    4
  • Ingressou

  • Última visita

Informações Pessoais

  • Cidade
    tubarão
  • Estado
    Santa Catarina (SC)

Clientes & Parceiros

  • Você é um cliente TecnoSpeed?
    Não
  • Você é um parceiro da Casa do Desenvolvedor?
    Não

Visitantes Recentes do Perfil

O bloco de visitantes recentes está desativado e não está sendo mostrado a outros usuários.

Conquistas de Gilmar Piccin

  • Positividade Raro

Emblemas Recentes

7

Reputação na Comunidade

  1. Olá, pessoal! Quero compartilhar com vocês uma novidade: o Gerenciador de Suíte de Componentes da Tecnospeed! Esse produto foi criado para tornar a instalação e atualização de componentes uma tarefa simples e eficiente. Vamos mostrar como você pode usá-lo para melhorar a gestão dos seus produtos. 😊 O que é o Gerenciador de Suíte de Componentes? O Gerenciador de Suíte de Componentes é uma ferramenta dedicada a simplificar o processo de instalação e atualização de componentes. Com ele, você pode: Receber notificações sobre novas versões disponíveis. Realizar downloads automáticos das versões dos produtos. Facilitar downgrades para versões anteriores, se necessário. Integrá-lo à sua aplicação para atualizações automáticas.🤩 Quem Pode Usar o Gerenciador de Suíte de Componentes? Este recurso está disponível para clientes que possuem o módulo "Suíte Componentes TecnoSpeed". contrate Agora, vamos mergulhar no guia passo a passo para aproveitar ao máximo esse recurso: Faça o download do executável do Gerenciador de Suíte de Componentes na Central do Cliente. Instalação - Agente Suíte de Componente Inicie o instalador e siga as etapas: Escolha o local de instalação. Escolha entre "Aplicação modo desenvolvedor" ou "Aplicação modo cliente". Aplicação modo desenvolvedor: nesse modo o Agente será voltado ao desenvolvedor cliente da Tecnospeed, onde de modo visual permitirá que os componentes sejam instalados, atualizados, etc, receberá alertas de atualizações disponíveis, dentre outras funcionalidades. Aplicação modo cliente: nesse modo o Agente será voltado para o cliente final do produto desenvolvido. Esse modo funciona inteiramente de forma programática, sem interface visual, e permite realizar o download e instalação das dependências dos componentes da Tecnospeed. Ative a inicialização com o Windows, se desejar. Informe o CNPJ da empresa desenvolvedora e o Token de licença. Clique em "Instalar" para concluir a instalação. Aguarde a finalização e o Agente do Gerenciador de Suíte Componentes será inicializado de acordo com o modo escolhido. Existe a possibilidade de instalar por linha de comando Modo Desenvolvedor: Neste modo, você terá uma interface gráfica para interagir com o Gerenciador: Na tela inicial, você verá uma lista de componentes oferecidos pela Tecnospeed. Os componentes habilitados no seu contrato estarão na seção "Habilitado" e podem ser instalados ou atualizados. Selecione um componente não instalado e clique em "Instalar". Se o componente já estiver atualizado, a Suíte Componentes informará. Caso haja uma nova versão, você pode atualizá-lo. se você já possui algum de nosso componentes instalados já é possível gerencia-los Nessa tela é possível realizar as seguintes ações: Atualizar: o componente será baixado e instalado na sua máquina. O processo é interativo e portanto é possível cancelar a atualização caso deseje. Pular Versão: escolha essa opção caso escolha manter o componente na versão atual, mas não receber mais notificações de atualização. Caso seja publicada uma próxima versão a Suíte Componentes irá voltar a notificar a atualização. Outras Versões: caso deseje instalar uma versão intermediária (ou mesmo anterior) do componente, essa opção irá exibir uma lista onde pode-se escolher a versão desejada para download e instalação. Modo Cliente Final: Este modo, não há interface gráfica. Tudo é programático e você pode interagir com o Gerenciador através de chamadas à rotina "AtualizarVersao". É uma ótima solução para integrar em seu software que utiliza os componentes tecnospeed, de modo que você terá total controle para instalar/atualizar/voltar versões de componentes sem a necessidade de intervir no ambiente de seu cliente final Exemplo de uso (Delphi): try if spdNFCe.AtualizarVersao(spdNFCe.Versao, [auNFCeReiniciarAplicacao, auNFCeNaoAtualizarRTMs]) then Encerrar; // Encerrar aplicação except on e: Exception do Log('Ocorreu um erro durante a verificação das atualizações de dependências: ' e.Message); // Apenas logar o erro e continuar end; Método "AtualizarVersao" Por Produto: métodos de atualização automática disponíveis para produto específico: NF-e NFC-e CT-e CT-e OS MDF-e CF-e SAT MF-e SAT GNRE Esocial Reinf SPED Agora, você tem um guia para usar o Gerenciador de Suíte de Componentes da Tecnospeed. Não hesite em fazer perguntas ou compartilhar suas experiências para ajudar a comunidade! 😄
  2. Ola Carlos Antonio tente da seguinte maneira utilizando chr(13) procedure HeaderBeforePrint; begin RichText1.seltext := 'meu texto' + chr(13) + 'texto segunda linha' end;
  3. O objetivo deste artigo é apresentar a estrutura de um regex e aprofundar em cada aspecto e que possa lhe servir como um guia podendo sempre consultar para compreender um regex ou cria-lo do zero. Servindo como um complemento ao artigo: Para facilitar e organizar nosso pensamento é importante que definamos alguns passos: 1º Precisamos definir um alvo (Target) é o nossa fonte de dados bruta; 2º Definir qual a nossa necessidade (ex: extrair uma data); 3º Aplicarmos o padrão (pattern) baseado na nossa necessidade; Exemplo: Target = 1233P86949A9822R1A165B568E22N35S Necessidade = descriptografar esse conteúdo desconsiderando os dígitos Pattern = [^\d] Resultado = 8 matchs P | A | R | A | B | E | N | S Para testar essa solução podemos utilizar https://www.regextester.com/ Agora vamos nos aprofundar em cada aspecto das expressões regulares para entender como chegar nesse resultado Quantifier Usamos quantifier para dizer quantas vezes determina expressão deve aparecer em sequência ? - zero ou uma vez. * - zero ou mais vezes. + - uma ou mais vezes. {n} - exatamente n vezes. {n,} - no mínimo n vezes. {n,m}- no mínimo n vezes, no máximo m vezes. . - o "ponto" significa qualquer char { e }- as chaves servem para definir uma quantidade de caracteres específicas que é desejado encontrar. Por exemplo: a{3} - letra a 3 vezes. \d* - um dígito zero ou mais vezes. Se quisermos procurar pelo . ou * literalmente (sem significado especial), devemos utilizar o caractere \ \ - podemos escapar meta-chars, por exemplo \.. | - “Pipe” é usado como operador lógico OR Classe de caractere Definimos classes de caracteres dentro de [ ] existem várias classes prontas que nos auxiliam [A-Z] - significa de A até Z, sempre maiúscula. [a-z] - significa de a até z, sempre minúscula. [A-Za-z] - significa A-Z ou a-z. [abc] - significa a, b ou c. [123] - significa 1,2 ou 3 \d - (minúsculo) significa todos os dígitos e é atalho para [0-9] \w - (minúsculo) significa word char e é um atalho para [A-Za-z0-9_]. \s - significa whitespace normalmente é um atalho para [ \t\r\n\f] onde: O primeiro caractere é um espaço branco. \t - é um tab. \r - é carriage return. \n - é newline. \f - é form feed. Obs: as classes \w ou [A-Za-z] não retornam caracteres com acento, para tal é necessário adicionar os caracteres desejados exemplo: Target = 123JoãoCaçula4567 Pattern = [A-Za-zãç] isso serve para qualquer caractere com acento Uma maneira mais simples para resolver esse problema é usar a classe [À-ü] Pattern = [A-Za-zÀ-ü] Combinando classes com quantifier Podemos combinar classes com quantifier para especificar cada vez mais nossa regex [.-]* - ponto ou hífen zero, uma ou mais vezes. [.-]{1} - ponto ou hífen uma vez. [.-]? - ponto ou hífen zero ou uma vez. Âncoras Quando precisamos que encontrar determinada informação delimitando uma parte da informação podemos usar as âncoras: \b - (minúsculo) é uma âncora que seleciona um word boundary, isso é o início ou fim da palavra. ^ - Garantir que nada vem antes. $ - Garantir que nada vem depois. \B - (B maiúsculo) non-word-boundary comportamento inverso a sílaba alvo deve aparecer dentro de uma palavra, nunca no início ou fim. Exemplos de uso do \B : Target = 123aaa456 Pattern = \Baaa\B ou usando quantifier \Ba{3}\B Grupos Quando queremos retornar alguma parte dentro da nossa expressão podemos colocar dentro de grupos para isso usamos ( ) () - Declarar um grupo ?: - Non-Capturing group, não retornar deste grupo Exemplo remover a palavra teste de uma frase Target = este é um teste de grupo Pattern = (?:teste\s+) Backreferences Quando queremos que um comportamento seja replicado dentro de um grupo podemos usar a sua referência invés de duplicar o mesmo padrão, para isso usa-se um \ seguido pelo número do grupo, começando com 1 Exemplo: Suponhamos que temos que extrair o conteúdo de dentro de uma tag de um arquivo xml <tag1 id="teste">teste</tag1> <tag2 id="teste">teste2</tag2> <tag1 id="teste">teste3</tag2> - não deve capturar Podemos solucionar da seguinte forma: Pattern = <(tag1|tag2).+?>([\w]+)</(tag1|tag2)> ou então podemos usar a referencia desse grupo: Pattern = <(tag1|tag2).+?>([\w]+)<\/\1> Negação As vezes é mais vantajoso selecionarmos a informação que não queremos e para isso podemos utilizar \W - (maiúsculo) é a non-word char , ou seja tudo que não é um word char. \W é um atalho para [^\w]. \D - (maiúsculo) é um non-digit, sendo \D um atalho para [^\d] Repare também que não usamos a meta-char ^ como âncora pois aparece dentro de uma classe [^\d] seu significado nesta situação é de negação Exemplos comuns Validar CPF Pattern= (\d{3})[.]?(\d{3})[.]?(\d{3})[-]?(\d{2}) Validar CNPJ Pattern = (\d{2})[.]?(\d{3})[.]?(\d{3})[/]?(\d{4})[-]?(\d{2}) Validar CPF e CNPJ ao mesmo tempo Pattern = ((\d{2})[.]?(\d{3})[.]?(\d{3})[/]?(\d{4})[-]?(\d{2}))|((\d{3})[.]?(\d{3})[.]?(\d{3})[-]?(\d{2})) Validar Inscrição Estadual Pattern = (?=\d)(?![\d/\-.]*[/\-.]{2})[\d/\-.]{1,16}\d Validar CEP Pattern= (\d{2}[.]?\d{3})[-]?(\d{3})
  4. Ola Furjala, tudo certo? Se entendi corretamente, você precisa que retorne um match sempre que atender as condições citadas se esse for o caso, você pode usar a seguinte expressão: ^[1-9]{1}(\d{3}|\d{8})$ Vamos entender por partes: Não permitir zero a esquerda: [1-9]{1} - criar uma classe de dígitos de 1 a 9 e usar o quantifier para pegar exatamente 1 caractere Limitar no máximo 4 ou 9 dígitos \d{3} - usar \d é um atalho para [0-9] e usamos o quantifier {3} para selecionar exatamente 3 caracteres pois o 1º digito nós já resolvemos \d{8} - apenas dígitos e selecionar exatamente 8 caracteres (trazer apenas os restantes) | - Significa condicional para o OR () - Agrupamento para nossa condição ^ - Ancora para garantir que nada vem antes $ - Ancora para garantir que nada vem depois Espero ter ajudado
×
×
  • Create New...