AndersonF Posted March 3, 2013 at 03:05 AM Report #497690 Posted March 3, 2013 at 03:05 AM 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!
pmg Posted March 3, 2013 at 09:20 AM Report #497695 Posted March 3, 2013 at 09:20 AM 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!
nunopicado Posted March 3, 2013 at 09:39 AM Report #497697 Posted March 3, 2013 at 09:39 AM (edited) 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. Edited March 3, 2013 at 09:41 AM by 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.
Orgon Posted March 3, 2013 at 01:51 PM Report #497735 Posted March 3, 2013 at 01:51 PM 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.
pwseo Posted March 3, 2013 at 02:13 PM Report #497742 Posted March 3, 2013 at 02:13 PM 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).
Orgon Posted March 4, 2013 at 07:12 PM Report #497890 Posted March 4, 2013 at 07:12 PM Eu disse que era um erro porque mandei um mail para a Microsoft e foi o que eles me disseram.
pwseo Posted March 4, 2013 at 07:18 PM Report #497891 Posted March 4, 2013 at 07:18 PM É 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...
nunopicado Posted March 4, 2013 at 08:52 PM Report #497900 Posted March 4, 2013 at 08:52 PM 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.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now