Arquivos FPT e DBT: onde mora, de verdade, o texto longo de um DBF
Se ao lado da sua tabela há um arquivo com o mesmo nome e extensão .fpt ou .dbt, isso não é lixo nem backup. É a outra metade da tabela, e sem ele parte dos dados não existe.
Por que um arquivo separado
Todo registro de um DBF tem o mesmo tamanho — é isso que torna o formato rápido. Mas o texto longo não cabe nesse esquema: não dá para declarar um campo “observações” de 5.000 bytes quando 99% dos registros não têm observação.
A solução é simples: a tabela guarda, em vez do texto, um número de bloco em um arquivo separado. O campo ocupa 4 ou 10 bytes, e o texto, de qualquer tamanho, mora ao lado da tabela.
Três formatos de memo
| Arquivo | Gravado por | Como é organizado |
|---|---|---|
.DBT (dBase III) | dBase III+, Clipper antigo | blocos de 512 bytes; o texto termina com o par 0x1A 0x1A |
.DBT (dBase IV) | dBase IV e 5 | cada bloco começa com a assinatura FF FF 08 00, depois um tamanho |
.FPT | FoxPro 2.x, Visual FoxPro | tamanho do bloco no cabeçalho; cada bloco tem um tipo e um tamanho |
.SMT | Clipper SIX | um cabeçalho de bloco de oito bytes |
A referência guardada na tabela também difere: o Visual FoxPro grava o número do bloco como quatro bytes binários, enquanto o FoxPro 2.x e o dBase usam dez caracteres de dígitos. Não dá para confundir os dois — o mesmo campo seria lido como texto ou como lixo.
Por que o texto aparece vazio
Três causas comuns, em ordem de frequência:
- O arquivo memo está faltando. Só o .dbf foi copiado; o texto ficou para trás. A solução é levar os dois arquivos. No Tabulens, arraste-os juntos ou abra a pasta inteira.
- O programa não lê aquela variante de memo. Visualizadores genéricos muitas vezes suportam só o .DBT do dBase III e mostram um número de bloco em vez do texto.
- O arquivo memo está truncado ou danificado. Acontece quando os arquivos são copiados com o programa dono deles em execução. Alguns registros são lidos, outros não.
Como saber se uma tabela tem memo
Há dois sinais. O primeiro é o tipo de campo na estrutura da tabela: M (memo), G (geral), P (imagem) ou W (blob). O segundo é um indicador no cabeçalho do arquivo.
O byte de versão também sugere o memo, mas engana: o Visual FoxPro grava a versão 0x30 para tabelas com e sem memo. Confie nos campos memo reais, não na versão — senão você ficará procurando um .fpt que nunca existiu.
O que fazer com ele
Se você precisa do texto em outro lugar, exporte a tabela para um formato em que o texto longo seja um valor comum: XLSX, CSV ou JSON. Ao exportar de volta para DBF, o memo é criado de novo, e os arquivos .dbf e .fpt precisam ser mantidos juntos — por isso o par é empacotado em um só arquivo ZIP.
Perguntas frequentes
Posso abrir um arquivo .fpt sozinho?
Há pouco sentido nisso: um .fpt guarda pedaços de texto sem ligação com os registros. A ligação fica guardada na própria tabela.
Por que o arquivo memo é maior que a tabela?
É normal. Os blocos são alocados em múltiplos do tamanho do bloco, e o texto excluído fica fisicamente no arquivo até o memo ser reconstruído.
Os índices (.cdx) têm algo a ver com os arquivos memo?
Não. Um .cdx é um índice para busca e ordenação rápidas; os arquivos memo levam texto. Uma tabela pode ter um, os dois ou nenhum.
Grátis para uso pessoal. Seu arquivo não é enviado a nenhum servidor. Versão para Windows — 3.5 MB, sem instalação: detalhes. Para organizações — licença.