Fórum Apagar alguns caracteres de um arquivo #349808
28/11/2007
0
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
Curtir tópico
+ 0Posts
28/11/2007
Luciano.lirio
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
28/11/2007
Marcosrocha
Fica bem enxuto mesmo... Mas pra refazer eu acho que vai demorar, vou testar aqui. Se desse para excluir seria melhor.
Gostei + 0
28/11/2007
Luciano.lirio
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
28/11/2007
Marcosrocha
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)