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: 3108
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: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 3108
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