Apagar alguns caracteres de um arquivo

Delphi

28/11/2007

Por favor não me crucifiquem por não saber isso mas...
Eu abro um arquivo com extensão ´lst´ e gravo no início dele o que seria meu cabeçalho. Esse lst é uma listagem de dados comum, mas o arquivo é imenso.
Aí quando eu vou ler esse arquivo, preciso excluir meu ´lixo´ para torná-lo ´puro´ novamente.
Como fazer?
Para [b:3b82c2e74d]gravar[/b:3b82c2e74d] o cabeçalho:
var
  Arquivo: TFileStream;
  nByte: Byte;
begin
  Arquivo := TFileStream.Create(´Lista.lst´, fmCreate);
  Arquivo.Position := 0;
  nByte := Ord(Char(´C´));
  Arquivo.Write(nByte,1);
  nByte := Ord(Char(´A´));
  Arquivo.Write(nByte,1);
  nByte := Ord(Char(´B´));
  Arquivo.Write(nByte,1);
  nByte := Ord(Char(´E´));
  Arquivo.Write(nByte,1);
  nByte := Ord(Char(´Ç´));
  Arquivo.Write(nByte,1);
  nByte := Ord(Char(´A´));
  Arquivo.Write(nByte,1);
  nByte := Ord(Char(´L´));
  Arquivo.Write(nByte,1);
  nByte := Ord(Char(´H´));
  Arquivo.Write(nByte,1);
  nByte := Ord(Char(´O´));
  Arquivo.Write(nByte,1);
end;

Tem [u:3b82c2e74d]obrigatoriamente[/u:3b82c2e74d] que ser o [b:3b82c2e74d]TFileStream[/b:3b82c2e74d] pois eu não sei o tamanho máximo que o arquivo pode chegar. Então como fazer para apagar as 9 letras (CABEÇALHO) que eu adicionei no início do arquivo?


Marcosrocha

Marcosrocha

Curtidas 0

Respostas

Luciano.lirio

Luciano.lirio

28/11/2007

mcblade,

a única maneira que conheço para excluir caracteres de um arquivo é refazendo o arquivo.

[b:d5b71accae]Dica para o código ficar menor.[/b:d5b71accae]
esse código abaixo tem menas linhas e faz a mesma coisa.

var
  Arquivo: TFileStream;
  Linha: String;
begin
  Arquivo := TFileStream.Create(´c:\Lista.lst´, fmCreate);
  Arquivo.Position := 0;
  Linha := ´CABEÇALHO´;
  Arquivo.Write(Linha[1],Length(Linha));
  Arquivo.Free;
end;



GOSTEI 0
Marcosrocha

Marcosrocha

28/11/2007

Opa essa eu não sabia :p
Fica bem enxuto mesmo... Mas pra refazer eu acho que vai demorar, vou testar aqui. Se desse para excluir seria melhor.


GOSTEI 0
Luciano.lirio

Luciano.lirio

28/11/2007

diferente de uma string o arquivo está gravado no disco e não da para excluir, o que da para fazer é ir para a Posição 0 e gravar espaços cima do do CABEÇALHO.

Veja o código abaixo.

var
  Arquivo: TFileStream;
  Linha: String;
begin
  Arquivo := TFileStream.Create(´c:\Lista.lst´, fmOpenWrite);
  Arquivo.Position := 0;
  Linha := ´         ´;
  Arquivo.Write(Linha[1],Length(Linha));
  Arquivo.Free;
end;



GOSTEI 0
Marcosrocha

Marcosrocha

28/11/2007

Obrigado amigo, vou ver se isso resolve meu problema


GOSTEI 0
POSTAR