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

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Spitzer
Usuário Nível 2
Usuário Nível 2
Mensagens: 60
Registrado em: 15 Ago 2003 04:56
Localização: Nova Fátima - PR

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

Mensagem 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.
Abraços,
Ademir Spitzer
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

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

Mensagem 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
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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

Mensagem 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 )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

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

Mensagem 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?
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

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

Mensagem por asimoes »

Olá,

Como temos a lib HwGui pode-se criar um relatório em tela (GUI) bem bonito, tem exemplos no fórum.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

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

Mensagem 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
"Eu e minha casa servimos ao Senhor e você ???"
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

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

Mensagem 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...
[]´s
Alexandre Santos (AlxSts)
Responder