PRG Converter Minúscula para Maiúscula

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

kristo
Usuário Nível 2
Usuário Nível 2
Mensagens: 78
Registrado em: 21 Set 2004 16:19

PRG Converter Minúscula para Maiúscula

Mensagem por kristo »

Boa tarde, estou aqui novamente abusando da vontade dos amigos.

Tenho um banco de dados onde o campo "NOME" "ENDERECO" e "CIDADE" os dados estão inseridos apenas com a inicial maiúscula eu precisava converter para todas as letras maiúscula, so que não tenho a mínima ideia de como fazer isso.
Ex.

"campo nome" Antonio Rodrigues = ANTONIO RODRIGUES
"campo cendereco" Rua Jose = RUA JOSE
"campo cidade" sao paulo/sp = SAO PAULO/SP

A DBF se chama "CADASSO" existe uma série de campos dentro dela, mais o que eu preciso realmente é apenas dos campos "NOME, ENDERECO, CIDADE, se possível é claro, caso contrário somente o campo "NOME" já estaria de bom tamanho.

Pesso desculpas aos moderadores pois não tive tempo de ler os tópicos me perdoem se já tiver um tópico parecido, mais estou extremamente enrolado com isso.

Um forte abraço a todos, fiquem com Deus.
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 acentuados

Mensagem por Pablo César »

Segue abaixo um exemplo (que fiz exclusivamente para você), este utilitário não converte somente as minúsculas como também todos os caracteres acentuados (inclusive C cedilha). Do contrário, bastaria fazer um replace com mediante a função UPPER do Clipper. Espero que ajude.
Anexos
UPPERS.PRG
Converte os acentos
(1.64 KiB) Baixado 358 vezes
Editado pela última vez por Pablo César em 03 Jan 2008 14:00, em um total de 1 vez.
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

Mensagem por gvc »

use cadasso

while !eof()

cadasso->nome := upper(nome)
cadasso->endereco := upper(endereco)
cadasso->cidade := upper(cidade)

dbskip()

end

// boa sorte
"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}
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 »

gvc essa sua indicação não iria garantir a conversão de caracteres acentuados nem o c cedilha, conforme eu tinha mencionado.
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
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Pablo César escreveu:

Código: Selecionar todos

          FOR U=1 TO VQTAM
              VSUB:=SUBSTR(VGET,U,1)
              VP:=ASCAN(CAR_OLD,VSUB)
              IF VP>0
                 VCAR:=CAR_NEW[VP]
                 VPOE:=.T.
              ELSE
                 VCAR:=VSUB
              ENDIF
              VTXT:=VTXT+VCAR
          NEXT
Se for realmente o caso de tratar os caracteres acentuados, eu trocaria essa parte pela função STRanslate(cSource,cTable1,cTable2), que foi feita em C puro e, portanto, é muito mais rápida. Talvez, dependendo do tamanho dos arquivos, um ganho de velocidade desses pode fazer uma grande diferença.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
kristo
Usuário Nível 2
Usuário Nível 2
Mensagens: 78
Registrado em: 21 Set 2004 16:19

Paulo

Mensagem por kristo »

Tento compilar sua PRG mais não estou tendo resultado, onde vc pede para colocar o nome da dbf e o nome do arquivo, poderia explicar pra mim, desculpe a minha falta de conhecimento, tento aprender fuçando mesmo, não tenho curso ou algo parecido, o básico que sei é porque eu gosto muito de clipper aprendi a gostar com um amigo que programava, mais nunca tive a oportunidade de aprender mesmo, e isso é uma coisa que em faz muita falta, mais um dia chego lá.
Forte abraço!!!

Quanto a outra PRG do nosso amigo deu certo, mais realmente os caracteres acentuados não são convertidos, mesmo assim agradeço a atenção de todos.

Fiquem em paz

Kristo
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Na linha de comando do DOS informe o nome do programa e, separado por espaço, o nome do DBF a converter.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
ABeltrani
Usuário Nível 2
Usuário Nível 2
Mensagens: 54
Registrado em: 09 Nov 2007 10:05
Localização: Porto Ferreira-SP

Mensagem por ABeltrani »

Bom dia amigos clippeiros !

Um ótimo 2008 a todos !


Com relação a duvida do amigo, é possível apenas com a função upper() converter todos os caracteres acentuados e o cedilha para maiusculo. Isso eu consegui utilizando o clipper 5.3b. Não sei se nas versões anteriores é possivel.

Clipper programa
Blinker fi programa, ntxpo850
kristo
Usuário Nível 2
Usuário Nível 2
Mensagens: 78
Registrado em: 21 Set 2004 16:19

Agora sim!!

Mensagem por kristo »

Obrigado a todos, deu tudo certo graças a Deus e a vocês, valeu mesmo.

Kristo
kristo
Usuário Nível 2
Usuário Nível 2
Mensagens: 78
Registrado em: 21 Set 2004 16:19

Apenas uma observação!!

Mensagem por kristo »

Mandei converter os caracteres e notei que eles estavam ficando todos juntos com a letra "A" no local dos espaços. ex:
JOÃO CARLOS = JOÃOACARLOS

Então como sou curioso notei algo que pensei ser ali a causa do problema ex:
na prg do nosso amigo estava assim:
CAR_OLD:={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"," ","‚","¡","¢","£","Æ","ä","ƒ","ˆ","Œ","“","–","…","Š","
ABeltrani
Usuário Nível 2
Usuário Nível 2
Mensagens: 54
Registrado em: 09 Nov 2007 10:05
Localização: Porto Ferreira-SP

Mensagem por ABeltrani »

Boa tarde amigo Kristo !

Se vc usa o clipper 5.3, acho válido seguir meu exemplo, pois assim, vc utiliza uma função do proprio clipper, sem precisar escrever codigo algum.
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 »

Caro ABeltrani,

Você tem certeza que a utilização da função UPPER() do Clipper irá GARANTIR a conversão de caracteres acentuados como por exemplo "á", "é", "õ",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.
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 »

Maligno escreveu:Se for realmente o caso de tratar os caracteres acentuados, eu trocaria essa parte pela função STRanslate(cSource,cTable1,cTable2), que foi feita em C puro e, portanto, é muito mais rápida.
Ainda mesmo sendo uma função feita em C puro, não acredito que venha a obter uma ganho muito considerável, pois o que deixa lento é a gravação do DBF com o REPLACE ou FIELDPUT (como eu mesmo utilizei) e não a procura e tradução de string ja que eu utilizei a função ASCAN que ora é extremamente rápida (na minha opinião mais rápida que outra função em C que possa se apresentar para este fim).

Bem mas esta é a minha opinião. Cabe fazer testes e medir... eu ja fiz meu teste com o meu exemplo. Só faltou comparar com o STRanslate(), mas como não me convence... então deixei de lado.
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.
ABeltrani
Usuário Nível 2
Usuário Nível 2
Mensagens: 54
Registrado em: 09 Nov 2007 10:05
Localização: Porto Ferreira-SP

Mensagem por ABeltrani »

Você tem certeza que a utilização da função UPPER() do Clipper irá GARANTIR a conversão de caracteres acentuados como por exemplo "á", "é", "õ",etc... ?
Certeza absoluta amigo Pablo. Mas como disse, tem que incluir o OBJ ntxpo850 que está na pasta OBJ do clipper. Sem o ntxpo850, realmente não converte estes caracteres. Pode testar se quiser.
ABeltrani
Usuário Nível 2
Usuário Nível 2
Mensagens: 54
Registrado em: 09 Nov 2007 10:05
Localização: Porto Ferreira-SP

Mensagem por ABeltrani »

Inclusive, tem mais uma dica: Se incluir o OBJ MSGPO850 no blinker, as funções cdow() e cmonth() retornam dia e mes em Portugues.
Responder