Página 1 de 1

Três Boas Dicas (A 3ª Dica Achei Fantástica!)

Enviado: 21 Jan 2005 01:53
por Spitzer
Olá!

Pessoal, vão aí três dicas:

1) Função de Conversão do Padrão OEM para ANSI:
Devido a uma necessidade minha onde precisei gravar um arquivo texto e abrir este arquivo com aplicativos Windows (Word, Bloco de Notas, etc.), construí uma função que converte o padrão de caracteres OEM (DOS) para ANSI (Windows).
Para fazer a conversão, utilizei a função STRANSLATE() do arquivo objeto stransla.obj, que baixei da página do Maligno:
http://www.buzinello.com/prg/stransla.zip
A função STRANSLATE() é similar à STRTRAN() do Clipper, mas muito mais eficiente e mais rápida (escrita em C).
Nota 1: meu teclado está configurado para ABNT2. Para outras configurações, não sei se a conversão funcionará a contento.
Nota 2: Caso alguém se interesse, peça a função a mim em private que envio. Estou postando a função aqui, mas creio que os caracteres não aparecerão da forma como deveriam aparecer no MS-DOS.

Código: Selecionar todos

/* ──────────────────────────────────
OemToAnsi()
Converte os caracteres do padrão OEM (MS-DOS) para ANSI (Windoes)
Parâmetros: Texto a ser convertido
────────────────────────────────── */
FUNCTION OemToAnsi

PARAMETERS pcTexto

RETURN STRANSLATE(pcTexto,;
                  "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÖÜø£Ø×ƒá"+;
                  "íóúñѪº¿®¬½¼¡«»ÁÂÀ©¢¥ãäðÐÊËÈÍÎÏ"+;
                  "¦ÌÓßÔÒõÕµþÞÚÛÙýݯ´­±¾¶§÷¸°¨·¹³²",;
                  "óÚÔõÓÕþÛÙÞ´¯ý─┼╔µã¶÷‗¹¨Í▄°úÏÎâß"+;
                  "ݾ·±Ð¬║┐«¼¢╝í½╗┴┬└®óÑÒ├ñ­ð╩╦╚═╬¤"+;
                  "ª╠Ë▀ÈʧıÁ■Ì┌█┘²¦»┤¡▒¥Âº¸©░¿À╣│▓")

* Fim de [OemToAnsi]
2) Um Pequeno Manual Sobre Blocos de Código:
Está 100% em inglês, mas para quem conhece pouco sobre eles (e como eu, nada!), é um bom começo.
O endereço para baixar é:
http://www.karland.com/code/clipper/files/codeblck.zip
O autor da dissertação (Tom Leylan) inicia o texto com um pouco de humor:
"Eles são misteriosos".
"Eles são divertidos".
"Freqüentemente, eles são mal entendidos".
"Eles são blocos do código".
hehehehehehehe

Interessante também o site http://www.karland.com/code/clipper
Muita coisa lá já vimos, mas tem algumas novidades.
E uma das novidades é a dica que eu mencionei ter achado fantástica, logo abaixo:

3) Exibir Relatório em Tela com TBrowse Direto do Arquivo Texto:
Que tal exibir o relatório na tela e se livrar do arquivo temporário?
Pois taí!
Baixem o fonte de:
http://www.karland.com/code/clipper/files/browtext.zip
Imagino que quem souber manipular arquivos (que não é o meu caso [ainda]) com FOPEN(), FCLOSE(), FREAD(), FREADSTR()... poderá criar pesquisas no relatório.
Apesar de não ter explorado bem o fonte, ele pareceu-me relativamente fácil de entender, portanto, fácil de fazer as modificações.

Três Boas Dicas (A 3ª Dica Achei Fantástica!)

Enviado: 16 Ago 2018 18:43
por alxsts
Olá!

Não sei qual das dicas mais interessaria ao amigo mas:
1) Função de Conversão do Padrão OEM para ANSI:
O tópico é de 2005 e realmente o site do amigo Maligno já não mais existe mas já temos isto no Harbour.
2) Um Pequeno Manual Sobre Blocos de Código:
Outro site fora do ar. Não sabemos o que havia no link citado mas, pode-se encontrar material deste autor e assunto no site Viva Clipper: Codeblocks - by Tom Leylan - 30 June 1996
3) Exibir Relatório em Tela com TBrowse Direto do Arquivo Texto
Mesmo site do anterior, fora do ar. Não sabemos o que tinha lá mas, talvez seja a rotina de TBrowse() em arquivos texto, do livro do Rick Spence. Usei muito esta rotina e outras, principalmente o TBrowse() condicional.
Estas rotinas, assim como todo o conteúdo do disquete que acompanhava o livro, podem ser encontradas aqui mesmo no fórum, graças à contribuição do colega Josivan Nascimento. Veja o tópico Quem Gosta de Reliquias como Eu e baixe o arquivo Fontes disquete Rick Spence.rar

Três Boas Dicas (A 3ª Dica Achei Fantástica!)

Enviado: 16 Ago 2018 23:12
por JoséQuintas
Sobre bloco de código, cheguei a postar por aqui.
O mais prático é comparar com uma função, mas sem nome.

Código: Selecionar todos

FUNCTION Maior( a, b )
 
   IF a > b
     RETURN a
   ENDIF

   RETURN b

Código: Selecionar todos

bCode := { ;
     | a, b | ;
    iif( a > b, a, b ) ;
   }
? Eval( bCode, a, b )

Três Boas Dicas (A 3ª Dica Achei Fantástica!)

Enviado: 17 Ago 2018 09:54
por janio
O tópico é de 2005 e realmente o site do amigo Maligno já não mais existe mas já temos isto no Harbour.
Alguém sabe por onde anda o Maligno?

Três Boas Dicas (A 3ª Dica Achei Fantástica!)

Enviado: 17 Ago 2018 16:27
por asimoes
Olá,

Como temos a lib HwGui pode-se criar um relatório em tela (GUI) bem bonito, tem exemplos no fórum.

Três Boas Dicas (A 3ª Dica Achei Fantástica!)

Enviado: 21 Ago 2018 17:25
por rubens
E melhor ainda, pode-se gerar um pdf do relatório e exibir na tela, exatamente como será impresso, com comandos chr emulados e tudo o mais... dando ao usuário a opção de saber quantas páginas, zoom, se da visualização quiser imprimir é só mandar e ainda escolher a página que quer imprimir... direto do harbour usando a harupdf..

Rubens

Três Boas Dicas (A 3ª Dica Achei Fantástica!)

Enviado: 24 Ago 2018 00:34
por alxsts
Olá!
JoséQuintas escreveu:Sobre bloco de código, cheguei a postar por aqui.
O mais prático é comparar com uma função, mas sem nome.
Sim, e o código postado deve ser o da função Max(). Mas este tipo de dado é muito poderoso. Pode-se colocar um prg inteiro dentro dele, não só com chamada a funções mas também com comandos e, inclusive definir variávei. Veja estes exemplos mostrados no manual da HwGui (imagem extraída de um post do Itamar M. Lins):
CodeBlock.png

Quanto ao Maligno, suponho que tenha enriquecido e esteja velejando pelos mares do sul...