Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
Moderador: Moderadores
- Pablo César
- 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
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 !
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

- Mensagens: 66
- Registrado em: 02 Mar 2008 20:40
- Localização: São José do Rio Preto - SP
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 ...
.
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
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
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.
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

- Mensagens: 66
- Registrado em: 02 Mar 2008 20:40
- Localização: São José do Rio Preto - SP
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.
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

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Re: Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
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.
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.
- Pablo César
- 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
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.
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.
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

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Re: Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
Pablo, boa tarde!
Rodei o aplicativo teste13 que voce mandou, e continua o problema.
Laudelino
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
Só para constar, no [x]Harbour:
HB_OemToAnsi() e HB_AnsiToOem()
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}
{POG - Programação Orientada a Gambiarra}
-
Laudelino Scarmagnani
- 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
Tenho que incluir as funções acima no meu programa? Em que momento isto deve ser incluído?
Laudelino
Laudelino
- Pablo César
- 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
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:Tenho que incluir as funções acima no meu programa? Em que momento isto deve ser incluído?GVC escreveu:Só para constar, no [x]Harbour:
HB_OemToAnsi() e HB_AnsiToOem()
Não sei qual é o resultado que você espera, pois eu fiz os dois exemplo e para mim funcionou, veja a tela capturada:Laudelino escreveu:Rodei o aplicativo teste13 que voce mandou, e continua o problema.
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.
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.
Re: Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
[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).
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}
{POG - Programação Orientada a Gambiarra}
-
Laudelino Scarmagnani
- 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
Boa tarde!
Acho que me expressei mal. Preciso eliminar estes caracteres especiais, por causa da NFe. E substiruir Ç po C, etc.
Uso XHarbour.
Laudelino
Acho que me expressei mal. Preciso eliminar estes caracteres especiais, por causa da NFe. E substiruir Ç po C, etc.
Uso XHarbour.
Laudelino
- Pablo César
- 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
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().Laudelino escreveu:Preciso eliminar estes caracteres especiais, por causa da NFe. E substiruir Ç po C, etc.
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.
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.
- Toledo
- 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
Laudelino, acho que você precisa é de uma função para retirar acentos e ç (Ç), então veja se esta vai resolver.
Exemplo de uso:
Abraços,
Exemplo de uso:
Código: Selecionar todos
vTexto:="PAULO CÉSAR TOLEDO"
vTexto:=RemoverAcentos(vTexto)- 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
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
- Pablo César
- 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
É 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.
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.
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.
