Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: LeetCode :: Comparando Implementações Harbour e TLPP para o Desafio Longest Palindromic Substring

_Créditos das imagens: ChatGPT_ ### LeetCode :: Comparando Implementações Harbour e TLPP para o Desafio Longest Palindromic Substring Resolver o problema do [Longest Palindromic Substring](https://leetcode.com/problems/longest-palindromic-substring/description/) é um exercício clássico de programação, que desafia desenvolvedores a encontrar a maior substring palindrômica dentro de uma string. Recentemente, exploramos soluções tanto em Harbour quanto em TLPP (Total Language Protheus Programming). Neste artigo, comparamos as implementações nessas duas linguagens, destacando suas semelhanças, diferenças e funcionalidades específicas. #### Implementações em Harbour ##### Versão 5.1 Essa solução utiliza a técnica de expansão a partir do centro do palíndromo. Cada caractere ou par de caracteres consecutivos é considerado um possível "centro". O algoritmo expande em ambas as direções enquanto os caracteres forem iguais, retornando o maior palíndromo encontrado. ##### Versão 5....

Protheus :: Advpl :: tSocketClient

Classe: tSocketClient. Segundo o tdn: “Estabelece uma conexão client de socket do tipo TCP genérica. Através desta classe, é possível enviar e receber dados por meio de um socket genérico e utilizar como base para implementação de protocolo não suportado pela aplicação.”

O tdn, como sempre, incompleto e com exemplo “rústico”. Então um exemplo mais sofisticado seria:

Criar o Objeto do tipo tSocketClient

image

Tentar conectar-se ao live.sysinternals.com

image

Verifico se a conexão foi bem sucedida, e elaboro a mensagem para envio

image

Envio e mensagem e Obtenho o Retorno.

image

No Exemplo conectaremos, via SocketClient, usando HTTP GET.

image

Obtendo os seguintes resultados:

image

image

Para obter o código usado no exemplo, clique aqui.

As dependências para o funcionamento do exemplo poderão ser obtidas em:

Protheus :: Advpl :: Usando GetFuncArray, GetApoInfo e VarInfo : para tVarInfo.

[]s

иαldσ dj

Comentários

  1. Naldo,

    Muito bom esse blog.
    Tenho uma duvida:
    A empresa trabalha com reciclagem de lixo.
    tem uma balança onde os caminhoes sao pesados tanto na entrada quanto na saida (pra encontrar o peso do lixo). E essa balança está conectada a um endereço ethernet (ip/porta) onde, hoje, existe um aplicativo que captura esse peso pra gerar um pedido de compra.
    Gostariamos de descatar esse aplicativo e fazer via protheus a captura do peso dos caminhoes.
    O caminho seria essa funcao TSOCKETCLIENT()?

    Grato,

    Carlos/COMETAIS.

    ResponderExcluir
  2. Naldo,

    Muito bom esse blog.
    Tenho uma duvida:
    A empresa trabalha com reciclagem de lixo.
    tem uma balança onde os caminhoes sao pesados tanto na entrada quanto na saida (pra encontrar o peso do lixo). E essa balança está conectada a um endereço ethernet (ip/porta) onde, hoje, existe um aplicativo que captura esse peso pra gerar um pedido de compra.
    Gostariamos de descatar esse aplicativo e fazer via protheus a captura do peso dos caminhoes.
    O caminho seria essa funcao TSOCKETCLIENT()?

    Grato,

    Carlos/COMETAIS.

    ResponderExcluir
  3. Naldo,

    Suas dicas são ótimas ... mas estou com uma dúvida ...

    Existe uma forma nessa classe TSOCKETCLIENT ou algo parecido de enviar hexadecimal ao invés de String ?

    Grato

    Daniel

    ResponderExcluir
  4. A ideia era a comunicação com o relógio de ponto da Henry "PRISMA SUPER FACIL" que só aceita hexadecimal, porem consegui com a henry um esquema para enviar chr(), mas estou empacado na limitação de caracteres na função "Receive" desta classe, na hora de baixar o arquivo AFD que não está aceitando mais do que 70.000 caracteres e no meu caso está com mais de 120.000. Eu pretendia baixar o aquivo do relógio e usar a sua função u_PonScheduler( que esta funcionando), ficando pendende a limitação da classe. Se quiser posso passar o que já fiz, abrass Daniel.

    ResponderExcluir
    Respostas
    1. Naldo, por acaso você tem alguma ideia de como aumentar o limite de caracteres do método Receive da classe tSocketClient? É o que falta para eu terminar essa rotina.

      Abrass Daniel.

      Excluir
    2. envie-nos o código para análise.

      Excluir
    3. envie para mail do domínio blacktdn.com.br

      Excluir
    4. Naldo fiz m outro procedimento... usando a captura por NSR linha a linha e no Protheus vem faltando linha, utilizei um proxy na porta do relogio para ver os dados que estão sendo enviados e a linha q não está no protheus está no proxy dizendo que enviou, não sei o que fazer... tem como me dar uma ajuda ? ... te enviei no e-mail alguns dados ... abrass Daniel

      Excluir
    5. estou atras de documentacao para comunicacao com henry para importar direto para o protheus. alguem tem?

      Excluir
    6. Daniel, vc poderia disponibilizar a documentação da Henry ?

      Excluir
  5. Tenho um equipamento para colher informacoes e nao estou conseguindo. ate consegui comunicacao mas nao estou conseguindo enviar os comandos.

    manual do equipamento é esse. ftp://199.115.148.44/Standard/mPro/open%20protocol%20fep%20specification.pdf

    voce consegue me ajudar?

    ResponderExcluir
    Respostas
    1. Como você está enviando as mensagens? Está finalizando corretamente a mensagem: Message End Data NUL (ASCII 0x0)?

      Excluir
  6. consegui! no final da string tinha que colocar +chr(0)

    ResponderExcluir
  7. Bom dia,

    Estou precisando integrar com o relógio Henry Super Fácil para buscar o registro do ponto. Alguém tem algum exemplo para compartilhar?

    Obrigado.

    ResponderExcluir
  8. Alguém poderia me explicar qual a necessidadedo tSocketClient? estou criando um extrator e trabalhando com dois bancos de dados. Porém, quando uso direto o TCLINK não estabelece a comunicação, porém, em uma rotina em que importo o sx3 para o banco de BI, ele fez normalmente usando o tSocketClient. Mas estou usando porque vi um exemplo. Não sei o conceito e agora quando iniciei um programa para extrair os dados do faturamento, quando uso este comando ele retorna 5 e não 0 e ai não consigo a conexão com o banco de BI. Alguma dica ? Muito obrigada....

    ResponderExcluir

Postar um comentário

Postagens mais visitadas