Fórum Identificar Conteúdo do Arquivo #280585
07/05/2005
0
Estou precisando implementar um programa de compressão de dados, no entanto preciso encontrar ou criar (caso não encontre) um algoritmo que me permita analisar o conteúdo do arquivo (e não a sua extensão) para saber se o mesmo refere-se a um arquivo binário ou que contenha apenas texto puro.
Não é apenas identificar se um arquivo possui caracteres especiais ou não, visto que arquivos binários e texto podem possuir tais caracteres. Enfim, preciso de um algoritmo que me indique, a partir do seu conteúdo lido, se o arquivo é binário ou possui apenas texto. Lembrando que apenas analisando pela extensão não serve, pois como usuário pode fornecer ao arquivo a extensão que quiser.
Qualquer orientação que possa me ajudar a resolver este problema será bem vinda e grata!
[]s
Rubem Rocha
Manaus, AM
Khundalini
Curtir tópico
+ 0Posts
07/05/2005
Raserafim
os arquivos executáveis tem um formato de cabeçalho próprio, aliás, cada formato de arquivo tem o seu próprio formato de cabeçalho. um arquivo totalmente texto não tem nenhum tipo de cabeçalho. o seu passo inicial deverá saber como é o formato do cabeçalho, assim vc pode carregar o arquivo e ler a sua primeira linha (onde acho que está o cabeçalho) e identificar o padrão, deduzindo assim o tipo de arquivo.
Uma certa vez quando procurava informações sobre assembler, acabei entrando em um site (mas encontrei outros mais) que explicava sobre o cabeçalho do arquivo executável. dentro destes sites acabei encontrando um site que tem esse cabeçalho de vários formatos de arquivos, e encontrei tb um outro site (parece que oficial) onde tem cadastrado todas as extenções que são registradas, informando de qual programa pertence (pode ser que tb tenha o formato do arquivo).
não resolvi o problema mas acho que dei um dos caminhos pra vc tentar desenrrolar.
Gostei + 0
09/05/2005
Khundalini
[]s
Rubem Rocha
Manaus, AM
Gostei + 0
09/05/2005
Massuda
Gostei + 0
09/05/2005
Ltres
Minha ideia era compar o nº de bytes lidos por dois modos de leitura de arquivo.. pra ver se fechavam..
O modo mais simples de abrir texto q conheco é o TStrings... q na minha ideia so abre texto corretamente. E o segundo é o AssignFile... q acredito q abra qualquer tipo..
Pois bem .. faça o teste q vc vai ver.. o TStrings so abre corretamente texto pra mim... ja o assignfile abre qualquer um.. porem qdo eu uso a função FileSize pra pegar o tamnho do arquivo, só os q naum sao texto mostram valor.. no texto o filesize retorna zero..
procedure TForm1.FormCreate(Sender: TObject); var teste: TStrings; F: TextFile; const NomeArq: string = ´C:\tre.txt´; begin teste := TStringList.Create; teste.LoadFromFile(NomeArq); Memo1.Lines.Text := teste.Text; teste.Free; AssignFile(f, NomeArq); Reset(F); Memo1.Lines.Append(´TamArq:´ + IntToStr(filesize(f)) + ´ Lidos: ´ + IntToStr(Length(Memo1.Text))); CloseFile(F); end;
fiquei meio confuso.. mas acho q por ai da pra tira alguma coisa..
espero ter ajudado.. ou ao menos ter dado uma ideia
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)