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

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

Moderador: Moderadores

Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

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

Mensagem 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 !
Anexos
CONVERTE.PRG
(1.7 KiB) Baixado 875 vezes
Manuel Luis Modernel
Usuário Nível 2
Usuário Nível 2
Mensagens: 66
Registrado em: 02 Mar 2008 20:40
Localização: São José do Rio Preto - SP

Mensagem 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 ...???.
OI Aqui é o Veio Modernel
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem 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.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Manuel Luis Modernel
Usuário Nível 2
Usuário Nível 2
Mensagens: 66
Registrado em: 02 Mar 2008 20:40
Localização: São José do Rio Preto - SP

Mensagem 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.
OI Aqui é o Veio Modernel
Laudelino Scarmagnani
Usuário Nível 3
Usuário Nível 3
Mensagens: 303
Registrado em: 07 Fev 2007 10:54

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

Mensagem 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.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

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

Mensagem 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.
Anexos
teste.zip
(73.29 KiB) Baixado 650 vezes
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Laudelino Scarmagnani
Usuário Nível 3
Usuário Nível 3
Mensagens: 303
Registrado em: 07 Fev 2007 10:54

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

Mensagem por Laudelino Scarmagnani »

Pablo, boa tarde!
Rodei o aplicativo teste13 que voce mandou, e continua o problema.
Laudelino
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

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

Mensagem por gvc »

Só para constar, no [x]Harbour:
HB_OemToAnsi() e HB_AnsiToOem()
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Laudelino Scarmagnani
Usuário Nível 3
Usuário Nível 3
Mensagens: 303
Registrado em: 07 Fev 2007 10:54

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

Mensagem por Laudelino Scarmagnani »

Tenho que incluir as funções acima no meu programa? Em que momento isto deve ser incluído?
Laudelino
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

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

Mensagem 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.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

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

Mensagem 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).
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Laudelino Scarmagnani
Usuário Nível 3
Usuário Nível 3
Mensagens: 303
Registrado em: 07 Fev 2007 10:54

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

Mensagem 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
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

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

Mensagem 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().
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

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

Mensagem 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,
Anexos
removeacentos.prg
Função para remover acentos e Ç
(1.72 KiB) Baixado 652 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

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

Mensagem 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.
Anexos
REMACENT.PRG
(4.72 KiB) Baixado 639 vezes
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Responder