Problemas com Memo x Acentos x TXT
Pessoal, estou tentando elaborar uma rotina para exportar uma ou mais tabelas do banco de dados para um arquivo TXT estilo CSV.
Já usei StringList, Memo e WriteLn mas nenhum salva o arquivo com a acentuação original.
Como teste, cheguei a visualizar o Memo na tela, onde aparece perfeitamente. Mas no método SaveToFile, ele perde toda a acentuação.
Exemplo:
Conteúdo no MEMO > "Acentuação"
Conteúdo salvo no arquivo TXT > "Acentuac,a~o"
Alguma dica?
Obrigado.
Já usei StringList, Memo e WriteLn mas nenhum salva o arquivo com a acentuação original.
Como teste, cheguei a visualizar o Memo na tela, onde aparece perfeitamente. Mas no método SaveToFile, ele perde toda a acentuação.
Exemplo:
Conteúdo no MEMO > "Acentuação"
Conteúdo salvo no arquivo TXT > "Acentuac,a~o"
Alguma dica?
Obrigado.
Sérgio Jr.
Curtidas 0
Respostas
Luiz Eduardo
07/10/2015
Poderia postar parte do código usado do aqui? a parte que salva no .txt, assim analisamos melhor sua questão.
GOSTEI 0
Sérgio Jr.
07/10/2015
// a variável to tipo AnsiString monta a linha a ser exportada
sLinhaTmp :=
IntToStr(vl_qA.FieldValues['pct_id']) + ';' +
IntToStr(vl_qA.FieldValues['fk_emp_id']) + ';' +
IntToStr(vl_qA.FieldValues['pct_conta']) + ';' +
IntToStr(vl_qA.FieldValues['pct_tipo']) + ';' +
(vl_qA.FieldValues['pct_classif']) + ';' +
(vl_qA.FieldValues['pct_nome']);
Writeln(aArq, sLinhaTmp); // Teste de salvamento em aquivo (mas com erro de acentuação)
mTexto1.Lines.Add(sLinhaTmp); // Armazena a linha no no MEMO (mas com erro de acentuação)
// Armazena a linha no no MEMO (mas SEM erros de acentuação)
mTexto2.Lines.Add(IntToStr(vl_qA.FieldValues['pct_id']) + ';' +
IntToStr(vl_qA.FieldValues['fk_emp_id']) + ';' +
IntToStr(vl_qA.FieldValues['pct_conta']) + ';' +
IntToStr(vl_qA.FieldValues['pct_tipo']) + ';' +
(vl_qA.FieldValues['pct_classif']) + ';' +
(vl_qA.FieldValues['pct_nome']));
mTexto1.Lines.SaveToFile(Caminho1.Text); // Armazena a linha no no MEMO (mas com erro de acentuação)
mTexto2.Lines.SaveToFile(Caminho2.Text); // Armazena a linha no no MEMO (mas TAMBÉM com erro de acentuação)
sLinhaTmp :=
IntToStr(vl_qA.FieldValues['pct_id']) + ';' +
IntToStr(vl_qA.FieldValues['fk_emp_id']) + ';' +
IntToStr(vl_qA.FieldValues['pct_conta']) + ';' +
IntToStr(vl_qA.FieldValues['pct_tipo']) + ';' +
(vl_qA.FieldValues['pct_classif']) + ';' +
(vl_qA.FieldValues['pct_nome']);
Writeln(aArq, sLinhaTmp); // Teste de salvamento em aquivo (mas com erro de acentuação)
mTexto1.Lines.Add(sLinhaTmp); // Armazena a linha no no MEMO (mas com erro de acentuação)
// Armazena a linha no no MEMO (mas SEM erros de acentuação)
mTexto2.Lines.Add(IntToStr(vl_qA.FieldValues['pct_id']) + ';' +
IntToStr(vl_qA.FieldValues['fk_emp_id']) + ';' +
IntToStr(vl_qA.FieldValues['pct_conta']) + ';' +
IntToStr(vl_qA.FieldValues['pct_tipo']) + ';' +
(vl_qA.FieldValues['pct_classif']) + ';' +
(vl_qA.FieldValues['pct_nome']));
mTexto1.Lines.SaveToFile(Caminho1.Text); // Armazena a linha no no MEMO (mas com erro de acentuação)
mTexto2.Lines.SaveToFile(Caminho2.Text); // Armazena a linha no no MEMO (mas TAMBÉM com erro de acentuação)
GOSTEI 0
Luiz Eduardo
07/10/2015
Que tal essa variável sLinhaTemp sendo do tipo UTF8String?
Você também pode dar uma olhada nesses links
http://www.planetadelphi.com.br/dica/7068/grava-arquivo-formatado-utf-8-nota-paulista
http://www.activedelphi.com.br/forum/viewtopic.php?t=49803&sid=7a51dd42da74423512e04f466faf799e
Espero que seja útil.
Você também pode dar uma olhada nesses links
http://www.planetadelphi.com.br/dica/7068/grava-arquivo-formatado-utf-8-nota-paulista
http://www.activedelphi.com.br/forum/viewtopic.php?t=49803&sid=7a51dd42da74423512e04f466faf799e
Espero que seja útil.
GOSTEI 0