Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

AndersonF

Problemas com acentuação no Free Pascal

Mensagens Recomendadas

AndersonF

Bom, sou do Brasil e esse é meu primeiro post.

A questão é a seguinte: na criação de programas eu utilizo o editor de código Notepad++, e compilo o programa na IDE Free Pascal. Porém quando o programa executa nas palavras que contem acentos os acentos são substituídos por outros caracteres. Gostaria de saber se teria alguma solução para esse problema?.

Desde já Obrigado!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

O teu problema é que no Notepad estas a usar um charset diferente do charset em uso quando executas o programa.

Experimenta editar com o MS-DOS Editor (abre uma linha de comandos e escreve "edit<ENTER>")


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nunopicado

No seguimento do que te disse o pmg, o problema é que o windows usa uma página de códigos diferente para 3 situações:

- Windows

- Linha de Comandos 32bits

- Linha de Comandos 16bits

Quando editas no Notepad++ estás a edição na página de códigos do Windows, mas o IDE do FreePascal é um programa tipo MS-DOS, pelo que usa uma das outras duas, dependendo da versão (salvo erro actualmente usa a de 32bits.

Sem duvida que usar um editor de MS-DOS resolvia, mas não há como negar as qualidades do Notepad++. Para usar o do MS-DOS, usava-se o proprio IDE do FreePascal.

Mas felizmente há outras soluções, e uma delas passa exactamente pelo Notepad++.

Tens lá um menu "Codificação", e dentro dele, um submenu chamado Código de caracteres.

Nele podes escolher a página de códigos em que editas o texto.

Se escolheres no Notepad++ a mesma página de códigos que usa a tua linha de comandos, tens o problema resolvido.

Não sei qual é a página de códigos standard na versão brasileira do Windows, mas podes por exemplo entrar na linha de comandos e executar:

chcp

Isto irá devolver a página de códigos que o windows usa na linha de comandos. Por exemplo, em Portugal é a 850. É possível até que aí seja a mesma, dadas as iguais necessidades do idioma.

Terás de fazer essa alteração antes de começares a programar. Se fizeres isto em algum ficheiro já existente, tens de o percorrer a acertar os acentos todos, pois depois da mudança eles irão ficar mal.

A partir da mudança, sempre que escreveres um acento no Notepad++, ele será guardado na mesma página de códigos que o IDE do FreePascal usará depois, resolvendo o problema.

A alternativa é alterar página de códigos que a tua linha de comandos usa, mas isto além de ser mais trabalhoso, cria-te um problema de portabilidade, pois se levares o programa para outro computador, e não lhe tiveres alterado também a página de códigos, lá estarão mal os acentos.

Como dica final, se quiseres, podes usar o Lazarus, um IDE para FreePascal que permite tanto programação em Windows (estilo Delphi) como programação de consola, como o FreePascal, e tem um IDE muito (mas mesmo muito) superior.

Editado por nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Orgon

Olá e bem vindo.

Eu tambem tive esse problema à uns meses, e isso é algum erro do windows.

Só consegui resolver o problema indo para o Linux, aí nunca mais tive problemas.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

Não é um "erro do Windows", mas sim apenas uma incompatibilidade de conjuntos de caracteres, como foi descrito pelo nunopicado acima. A solução é fazer os conjuntos de caracteres coincidir (seja através da alteração do mesmo no Notepad++ ou na linha de comandos via chcp).

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

É um "erro" e não um erro, mesmo assim. Não é sequer um comportamento inesperado, está bem documentado -- é uma limitação (estúpida, nos dias de hoje) da linha de comandos do Windows. Mas como é algo que já vem desde há imensos anos, e nunca é corrigido apesar de já terem saído diversas versões de Windows mais recentes, não podemos dizer que é um erro/bug mas sim uma parvoíce; já deviam ter alterado o comportamento há anos (literalmente) e não o fizeram. E depois dizem aos clientes que "é um erro" lool...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nunopicado

Isto é daqueles casos em que se pode dizer que não é defeito, é feitio!

O pior mesmo são os programas que funcionam a 16 bits, e a página de códigos é diferente da de 32bits. É tudo linha de comandos, mas funcionam de forma diferente.

Percebi isso quando tentei usar o velhinho Turbo Pascal e não havia meio de acertar com os assentos. :)


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.