Fórum Como não consigo carregar um arquivo no RichEdit, existe... #172929
04/08/2003
0
Sem mais...
Wgm8
Curtir tópico
+ 0Posts
04/08/2003
Leanribas
Gostei + 0
04/08/2003
Wgm8
Sem mais...
Gostei + 0
04/08/2003
Basilio.sp
Seria possível você postar aqui no Fórum (ou me enviar por e-mail) este código que está dando erro e o arquivo que você quer carregar?
Pelo que vi, faz tempo que você está com este problema e gostaria de tentar ajudá-lo.
Gostei + 0
04/08/2003
Wgm8
[color=red:95bb332ab7]procedure TForm1.BtCarregarClick(Sender: TObject);
begin
if OpenDialog1.execute then
RichEdit1.Lines.loadfromfile(OpenDialog1.filename);
end;[/color:95bb332ab7]
Gostei + 0
04/08/2003
Basilio.sp
Desculpe-me.
Coloquei dados a mais...
Considere a resposta somente deste trecho pra baixo:
begin
if (OpenDialog1.Execute) And (Length (OpenDialog1.FileName) >0) then
Begin
RichEdit.ScrollBars := ssBoth;
RichEdit.Lines.Clear;
RichEdit.Lines.LoadFromFile(MyOpenDialog.FileName)
end
else
Application.MessageBox(PChar (´ Erro ao tentar ler o arquivo ´ +
MyOpenDialog.FileName), ´ Erro na abertura do arquivo ´, mb_Ok);
end;
Gostei + 0
05/08/2003
Wgm8
Sem mais...
Gostei + 0
05/08/2003
Basilio.sp
Só tive tempo de dar uma olhada em seu arquivo texto agora...
Vamos lá...
Aparentemente este arquivo é uma saída para relatório em arquivo texto, talvez gerado por um aplicativo Clipper ou algo parecido, certo?
Então é o seguinte... Existem uma série de caracteres de controle neste arquivo (como salto de página, compressão ou expansão de caracteres, etc) que acabam gerando erros no método LoadFromFile do RichEdit.
A solução então seria filtrar o arquivo e, sabendo que o mesmo somente tem caracteres ascii no intervalo de 32 (espaço em branco) a 125 (}) escrevi a seguinte função:
Function LimpaString (strIN: String): String;
var
Counter : Integer;
strOUT : String;
begin
For Counter := 1 to Length (strIN) do
If (Ord (strIN[Counter]) >= 032) and (Ord (strIN[Counter]) <= 125) then
strOUT := strOUT + strIN[Counter];
Result := strOUT;
end;
Para carregar seu arquivo no RichEdit, você poderia fazer o seguinte:
- Abrir um arquivo texto;
- Ler linha a linha;
- Reformatar e carregar no Rich Edit.
Ficaria algo como:
procedure TfrmTeste.btnCarregaClick(Sender: TObject);
var
MyOpenDialog : TOpenDialog;
MyTextFile : TextFile;
Linha : String;
begin
MyOpenDialog := TOpenDialog.Create(self);
MyOpenDialog.Filter := ´Arquivos Texto|*.txt´;
MyOpenDialog.InitialDir := ´C:\´;
MyOpenDialog.Title := ´ Selecione um arquivo para leitura ´;
If (MyOpenDialog.Execute) And (Length (MyOpenDialog.FileName) > 0) then
Begin
AssignFile (MyTextFile, MyOpenDialog.FileName);
Reset (MyTextFile);
RichEdit.ScrollBars := ssBoth; // Permito exibição das Scroolbars
RichEdit.Lines.Clear; // Limpo o RichEdit
RichEdit.Font.Name := ´Courier´; // Troco o fonte para Courier
RichEdit.WordWrap := False; // Evito quebra na linha
While Not (Eof (MyTextFile)) do
Begin
ReadLn (MyTextFile, Linha);
RichEdit.Lines.Add (LimpaString (Linha));
end;
CloseFile (MyTextFile);
end
else
Application.MessageBox(PChar (´ Erro ao tentar ler o arquivo ´ +
MyOpenDialog.FileName), ´ Erro na abertura do arquivo ´, mb_Ok);
end;
Enviarei a aplicação completa para seu e-mail e, caso alguém mais esteja interessado no exemplo, baixe o aplicativo em: http://www.nucleo-net.com/exemplo.zip
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)