Página 1 de 2

Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa

Enviado: 21 Ago 2006 21:45
por Pablo César
Segue abaixo uma rotina para converter os caracteres paradrão OEM para ANSI e gera arquivo que pode ser aberto no Excel como planilha. Também foi adicionado outro exemplo que precisa converter caracteres padrão ANSI/Windows para OEM/DOS:

O exemplo está em anexo: CONVERTE.PRG. Foi anexado o arquivo original, pois colando com editor de texto como o NOTEPAD ou outro editor padrão Windows, não dá certo pois converte o "á" para " ". Por isso decidí anexar arquivo, copie e cole de lá mesmo, após baixá-lo.

Se a base de dados estiver no formato WIN/ANSI, pode ser usado a opção WINCAR("W2D",<texto>) que transformará de WIN/ANSI para DOS/OEM. Bom proveito !

Enviado: 06 Mar 2008 20:44
por Manuel Luis Modernel
Pablo Cesar,

A Rotina que VC me mandou está escrita em que Versão do Clipper ?

E só fiz algumas coisas no Clipper Sumer 87, quando foi para migrar para o 5.2 em 1994 (eu) preferí ir para o VB3, depois VB4 e agora VB6 mas nunca me aprofundei demais em nenhum deles !!.

VC trabalha profissionalmente com que linguagem nos dias de hoje ??.

Meu filho (22 anos) esta trabalhando com ".NET 2.0" e no momento está fazendo um curso em SP-Capital para obter a certificação MS nesta nova tecnologia, e pasmen ele quer que eu inicie nela largando tudo o que já aprendi de lado, pode ...???.

Enviado: 07 Mar 2008 09:30
por Pablo César
Legal Manuel, conhecimento não ocupa espaço. é bom para você aprender outras linguagens e contar com um filho no ramo. Quanto a versão do Clipper, foi feita para trabalhar na versão 5, creio que em Summer iria ter alguns erros por causa da utilização de ":=", "!" e "(1->)" ahh e pelas FUNCTION que em Summer acho que é PROCEDURE no lugar, mas também creio que não seja possível retornar um valor dessa PROCEDURE. Daí uma solução seria colocar a variável "VRET" publica para obter o resultado. Demais acho que é perfeitamente possível compilar na versão summer, é só adaptar.

Enviado: 07 Mar 2008 21:40
por Manuel Luis Modernel
Pablo pode deixar que amanha vou estudar ela e fazer as devidas alterações para ela funcionar, e depois te informo !.

Pensei em primeira instancia colocar no Autoexec.bat e no Config.sys da máquina aquelas velhas instruções que determinam a linguagem que deve ser usada, agora não lembro como escrevia mais tenho copia da forma de setar estas linguagens e que talvez possa funcionar.

Sabes o que eu tenho ainda comigo ?? Um verdadeiro Museu !!

.- Os discos de instalação do DOS 6.0 onde tenho e consigo acessar o Help dele na boa. Lembra dele ?? Uma tela com duas carreiras de funções em letras verdes e cheia de informações ótimas.
.- A instalação completa do DBU
.- O FoxBase + 2.10 de 1988 - utilitário de Bancos de Dados tipo DBF
.- O SideKick 1.56 de 1984 - Utilitário para escrever .PRG´s
.- Instalação do Win 3.1 e do 3.11 for WorkGroup
.- Os primeiros zipadores DOS : PKU e PKZ e para completar
.- The Norton Commander de 1986 aplicativo para gerenciar arquivos no disco rígido, ainda hoje acho ele melhor do que o Windows Explorer.

um abraço colega e obrigado pela atenção que estas me dando.

Re: Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa

Enviado: 27 Fev 2010 13:30
por Laudelino Scarmagnani
Boa tarde!
tem como alguem postar um exemplo para chamada da funcção WINCAR(VQFAZ,VTXT)? Tentei usá-la, porem não deu certo.
Usei da seguinte forma:
w_descr=WINCAR('X',WNOME), onde WNOME continha LAUDELINO SÇáRMAGNANI. Nao consegui captar o retorno.
Laudelino.

Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa

Enviado: 27 Fev 2010 20:32
por Pablo César
Oi Laudelino, notei graças a sua mensagem que o conteúdo do meu código ao colá-lo foi modificado o "á" para " " (espaço) o que deixava de funcionar corretamente. Por isso decidí anexar a função do meu arquivo original. Usei editor de texto padrão DOS (QEdit).

Mas também anexei aqui o exemplo que você pede. Note que tem duas formas, não sei qual delas você precisa. Mas se for alterar tente usar um editor que não transforme tais caracteres. Acho que irei transaformar em LIB essa rotina WINCAR para não ocorrer outra riscos que aconteça novamente.

Espero ter ajudado, qq poste sua dúvida.

Re: Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa

Enviado: 28 Fev 2010 17:43
por Laudelino Scarmagnani
Pablo, boa tarde!
Rodei o aplicativo teste13 que voce mandou, e continua o problema.
Laudelino

Re: Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa

Enviado: 01 Mar 2010 13:19
por gvc
Só para constar, no [x]Harbour:
HB_OemToAnsi() e HB_AnsiToOem()

Re: Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa

Enviado: 01 Mar 2010 19:34
por Laudelino Scarmagnani
Tenho que incluir as funções acima no meu programa? Em que momento isto deve ser incluído?
Laudelino

Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa

Enviado: 02 Mar 2010 11:01
por Pablo César
Laudelino escreveu:
GVC escreveu:Só para constar, no [x]Harbour:
HB_OemToAnsi() e HB_AnsiToOem()
Tenho que incluir as funções acima no meu programa? Em que momento isto deve ser incluído?
O que o colega GVC quis dizer, é que existe solução em xHarbour ou até mesmo em Harbour (e pelo que eu sei também pode ser utilizado com FIVEWIN) mas esta solução não se aplica para Clipper, pois são funções da biblioteca rtl.
Laudelino escreveu:Rodei o aplicativo teste13 que voce mandou, e continua o problema.
Não sei qual é o resultado que você espera, pois eu fiz os dois exemplo e para mim funcionou, veja a tela capturada:

Imagem

Explique o que você espera e me mande o texto original mas coloque em anexo para eu entender.

Re: Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa

Enviado: 02 Mar 2010 14:32
por gvc
[Laudelino Scarmagnani]
Vc não postou se esta em Clipper ou [x]Harbour.
Essas são funções nativas do [x]Harbour.
Vc usaria como qq outra: nova_str := HB_OemToAnsi(velha_str).

Re: Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa

Enviado: 02 Mar 2010 15:36
por Laudelino Scarmagnani
Boa tarde!
Acho que me expressei mal. Preciso eliminar estes caracteres especiais, por causa da NFe. E substiruir Ç po C, etc.
Uso XHarbour.
Laudelino

Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa

Enviado: 02 Mar 2010 16:38
por Pablo César
Laudelino escreveu:Preciso eliminar estes caracteres especiais, por causa da NFe. E substiruir Ç po C, etc.
Ahh mas esta rotina não tem essa finalidade. Serve para mudar de padrão OEM x ANSI. As acentuações em modo DOS são diferentes as do editor de texto em modo gráfico. Nesse caso você poderia montar uma tabela e atribuir para vetores como eu fiz. Daí mandar ler tudo que contiver Ç para C e assim por diante. outra forma simples é utilizando a função STUFF().

Re: Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa

Enviado: 02 Mar 2010 17:01
por Toledo
Laudelino, acho que você precisa é de uma função para retirar acentos e ç (Ç), então veja se esta vai resolver.

Exemplo de uso:

Código: Selecionar todos

vTexto:="PAULO CÉSAR TOLEDO"
vTexto:=RemoverAcentos(vTexto)
Abraços,

Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa

Enviado: 02 Mar 2010 18:14
por Pablo César
É uma boa função apresentada pelo Toledo, mas tomei a liberdade de fazer algumas implementações adicionando mais outros caracteres (mesmo que na lingua portuguesa não sejam utilizados, mas que existem mesmo assim) e considerando a situação dos dois padrões ANSI (quando padrão Windows, ou modo gráfico do Windows) e OEM (para caracteres gerado em modo DOS).

Então como no primeiro exemplo meu, disponibilizo pela questão de manter o padrão OEM na compilação, sem interferências de qualquer editor gráfico do Windows.