Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: LeetCode :: Zigzag Conversion: Implementando Soluções em xBase (Harbour) e TL++

_Créditos das imagens: ChatGPT_ ### LeetCode :: Zigzag Conversion: Implementando Soluções em xBase (Harbour) e TL++ A ["Zigzag Conversion"](https://leetcode.com/problems/zigzag-conversion/description/) é um problema popular do LeetCode que desafia desenvolvedores a transformar uma string em um padrão zigzag com base no número de linhas especificado, para então reconstruir a string seguindo a leitura linha a linha do padrão. Aqui, apresento soluções desenvolvidas em Harbour (XBase) e TL++ com melhorias e detalhes adicionais. --- ### **O Problema** Dado uma string e um número de linhas, distribua os caracteres em um padrão zigzag. Leia as linhas do padrão sequencialmente para obter o resultado: Exemplo: **Input:** String: "PAYPALISHIRING" Linhas: 3 **Padrão Zigzag:** ``` P A H N A P L S I I G Y I R ``` **Output:** "PAHNAPLSIIGYIR" --- ### **Implementação em Harbour** As soluções estão organizadas em dois arquivos principai...

BlackTDN :: ADVPL & Harbour MiniGui Extended ~ GPEWriter

open_office

Muitos são os clientes que utilizam a “suíte OpenOffice” em detrimento da “suíte Office” da Microsoft e, em função disto, não conseguem utilizar alguns recursos do protheus como o programa GPEWord, disponível no módulo de Gestão de Pessoal, para a impressão de documentos (Contrato de Trabalho, Termo de Prorrogação de Contrato de Trabalho, Acordo de Compensação de Horas de Trabalho,Termo de Vale-Transporte, Declaração de Dependentes dentre outros).

Em função disto, e atendendo a uma necessidade pontual, combinei GPEWord e Harbour MiniGui Extended para criar um “mini aplicativo” para permitir a impressão dos documentos WORD, disponibilizados no SIGAGPE, no Writer.

Para que isso seja possível algumas alterações se fazem necessárias:

  1. Conversão dos documentos do Microsoft Office para OpenOffice;
  2. Substituição das DOCVariables do WORD por Constantes que serão substituídas por seus respectivos valores (1);
  3. Criação do programa GPEWriter (baseado no GPEWord);
  4. Compilação do programa em Harbour MiniGui Extended gpe_word.prg; e
  5. Criação do diretório C:\gpe_writer

(1) A técnica utilizada no WORD para substituição das DOCVariables deu muito trabalho no OpenOffice e por isso preferi substituir essa técnica por outra.

Tive que utilizar o Harbour MiniGui Extended para “integração” com a suíte OpenOffice porque ADVPL, infelizmente, não suporta OLE e COM de forma nativa. A idéia básica é a seguinte:

Através do GPEWriter será gerado um arquivo CSV com cabeçalho (campos GPE_?) e item (Conteúdo atribuído a cada campo). Esse arquivo será delimitado com “Pipe” |, após a geração do arquivo e utilizando WaitRun o programa compilado no Harbour gpe_writer.exe será executado para instanciar os componentes OLE/COM do OpenOffice, carregará o conteúdo do arquivo gerado pela GPEWriter e fará a busca e substituição das variáveis pelos seus respectivos valores (semelhante ao que faz OLE_SetDocumentVar() e OLE_UpDateFields()) e, logo após, irá efetuar a impressão do documento. Não implementei a parte de salvar o arquivo, então, para este caso, recomendo utilizar uma impressora virtual que gera arquivo PDF.

O código, dividido em duas partes, uma em Harbour e outra em ADVPL poderá ser obtido ao clicar aqui.

Para utilizar o GPEWriter proceda da seguinte forma:

  1. Baixe o arquivo disponibilizado acima e descompacte em C:\;
  2. Compile o programa em ADVPL GPEWriter;
  3. Adicione a chamada ao Menu do SIGAGPE conforme abaixo;

<MenuItem Status="Enable">
    <Title lang="pt">Writer</Title>
    <Title lang="es">Writer</Title>
    <Title lang="en">Writer</Title>
    <Function>GPEWRITER</Function>
    <Type>03</Type>
    <Access>xxxxxxxxxx</Access>
    <Module>07</Module>
    <Owner>0</Owner>
</MenuItem>

Obs.: O arquivo gpe_wcontrato.odt, um exemplo de DOC convertido para ODT,  será encontrado em c:\gpe_writer e será utilizado como base para teste.

Alguns “ScreenShots”:

GPEWriter : Exportar Variáveis

GPEWriter : Exportar Variáveis : Variáveis ExportadasApesar do Título “Integração com MS-Word” leia-se “Integração OpenOffice-Writer” (não me dei ao trabalho de alterar a string de tradução).

O botão Exportar variáveis tem por finalidade exportar as variáveis GPE_? para um arquivo .csv que será utilizado como modelo para a elaboração dos documentos.

GPEWriter : Exportar Variáveis : Imprimir Documento

Impr. Documento irá exportar os dados reais para .csv e executar o programa gpe_writer.exe que efetuará a comunicação como OpenOffice, abrirá o documento modelo, substituirá as constantes GPE_? ali definidas pelos seus respectivos valores imprimindo ao final.GPEWriter : Exportar Variáveis : OpenOffice Writer

Obs.:

  1. Diferente do GPEWord o GPEWriter poderá ser executado no Linux (bastando, para isso, alguns ajustes e recompilar o código gpe_writer.prg nessa plataforma);
  2. Caso necessite recompilar e gerar um novo executável para o gpe_writer.prg baixe o Harbour MiniGui Extended clicando aqui

[]s
иαldσ dj

Comentários

  1. Depto de Tecnologia Totvs..

    ..um pouco atrás do BTDN.

    ResponderExcluir
  2. Tem algumas alterações a serem feitas, como por exemplo: deixar dinâmica a escolha do arquivo de modelo e permitir a escolha de arquivo .ODT além de .DOT e ou .DOC.

    ResponderExcluir
  3. Gran trabalho... é uma lástima que a TOTVS nao profece o Software Libre!

    ResponderExcluir
  4. É uma pena que a TOTVS nao pense em usar Software Libre para seus aplicativos.

    ResponderExcluir
  5. Olá... ainda hoje tenho problemas porque o Prothues nao e compativel com Office 2013... PUAHH!!! Éste trabalho do usar o OpenOffice trabalha com as ultimas vercoes?

    ResponderExcluir
  6. Voce tem um exemplo da criacao de um documento con cabelho e itens?

    ResponderExcluir

Postar um comentário

Postagens mais visitadas