Apagar alguns caracteres de um arquivo
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:
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?
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
Curtidas 0
Respostas
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.
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
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.
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
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.
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
28/11/2007
Obrigado amigo, vou ver se isso resolve meu problema
GOSTEI 0