Problema ao Carregar Arquivo Txt em Variável (Caracteres Especiais)
Olá pessoal,
Estou usando o seguinte código para carregar o conteúdo de um arquivo:
A princípio o código carrega normalmente o arquivo (com acentos, Enter e caracteres especiais):
O código parece estar correto, porém ao final do arquivo aparece 2 caracteres especiais (que não aparecem se editar o mesmo arquivo no Bloco de Notas).
Preciso carregar o arquivo .txt na variável, pois irei manipular esses dados depois.
O que pode estar acontecendo de errado?
Estou usando o seguinte código para carregar o conteúdo de um arquivo:
procedure TFrmMain.CarregarConteudo; var varString: string; StringList: TStringList; begin StringList := TStringList.Create; try // Carrega Conteúdo StringList.LoadFromFile(ArquivoTexto); // Carrega o arquivo varString := StringList.Text; // Transfere o arquivo carregado na StringList na variável varString; FrmEditor.MmTexto.Lines.Text := varString; // Carrega o conteúdo da variável no Editor finally FreeAndNil(StringList); end; end;
A princípio o código carrega normalmente o arquivo (com acentos, Enter e caracteres especiais):
Títulos (Português)
Tìtulo 01
Tìtulo 02
Tìtulo 03
Tìtulo 04
Tìtulo 05ᄈᆵ
Tìtulo 01
Tìtulo 02
Tìtulo 03
Tìtulo 04
Tìtulo 05ᄈᆵ
O código parece estar correto, porém ao final do arquivo aparece 2 caracteres especiais (que não aparecem se editar o mesmo arquivo no Bloco de Notas).
Preciso carregar o arquivo .txt na variável, pois irei manipular esses dados depois.
O que pode estar acontecendo de errado?
Lucas Bernieri
Curtidas 0
Melhor post
Arthur Heinrich
15/01/2024
Você consegue identificar o código ASCII destes caracteres, para termos uma ideia?
Um arquivo texto convencional contém separadores de linha, que podem ser distintos para o Windows e outros sistemas.
No Linux e sistemas semelhantes (não Windows), as linhas são separadas por um caractere #10 (Line Feed).
No Windows, o separador de linhas é composto de 2 caracteres: #13 (Carriage Return) e #10 (Line Feed).
Ao final do arquivo, pode ser acrescido um caractere extra #26 (End of File), embora não obrigatório.
Também existe a possibilidade de que o arquivo que você está lendo não seja um arquivo do tipo texto puro, podendo conter outros caracteres de controle.
A leitura de arquivos pressupõe o conhecimento de seu formato.
Se você afirma que existem dois caracteres especiais no final do arquivo, pode tentar descobrir quais são, para entender o que está acontecendo.
Um arquivo texto convencional contém separadores de linha, que podem ser distintos para o Windows e outros sistemas.
No Linux e sistemas semelhantes (não Windows), as linhas são separadas por um caractere #10 (Line Feed).
No Windows, o separador de linhas é composto de 2 caracteres: #13 (Carriage Return) e #10 (Line Feed).
Ao final do arquivo, pode ser acrescido um caractere extra #26 (End of File), embora não obrigatório.
Também existe a possibilidade de que o arquivo que você está lendo não seja um arquivo do tipo texto puro, podendo conter outros caracteres de controle.
A leitura de arquivos pressupõe o conhecimento de seu formato.
Se você afirma que existem dois caracteres especiais no final do arquivo, pode tentar descobrir quais são, para entender o que está acontecendo.
ShowMessage(IntToStr(Ord(varString[Length(varString)-1]))+' - '+IntToStr(Ord(varString[Length(varString)])));
GOSTEI 1