Paradox-Viewer
- Active · last change 6-19-2026
- ★ 1 on GitHub
README
🗄️ ParadoxViewer
📜 Introdução
O ParadoxViewer é uma aplicação desktop somente leitura para visualização de arquivos de banco de dados Paradox — um formato legado amplamente utilizado em sistemas dos anos 80 e 90. Com ele, é possível navegar pelo sistema de arquivos, inspecionar registros e estrutura de campos, e exportar os dados para SQLite3 para uso em sistemas modernos.
Pronto para usar: o repositório já inclui o executável compilado em
dist/pxView.exe. Basta clonar e executar — nenhuma instalação adicional é necessária (dist/sqlite3.dlljá está incluída na mesma pasta para download).
☕ Apoie o Projeto
Se o ParadoxViewer te ajudou a recuperar dados ou economizar tempo, considere fazer uma doação!

✨ Funcionalidades
- Visualização de dados: Exibe os registros em um
DBGridcom navegação viaDBNavigator(primeiro, anterior, próximo, último) - Estrutura de campos: Listagem completa de todos os campos da tabela com índice, nome, tipo, tamanho e obrigatoriedade
- Exportação para SQLite3: Exporta a tabela aberta para um arquivo
.sqliteindividual ou em um arquivo combinado com o nome da pasta - Exportação em lote: Exporta todos os arquivos
.dbda pasta de uma vez, com log detalhado empxView.log - Suporte a BLOB: Exibe campos do tipo
Memo(texto) eGraphic(imagem) em painéis dedicados, atualizados conforme o registro ativo - Codificação de entrada: Suporte a dezenas de páginas de código (CP1250, CP1252, ISO-8859, KOI8, etc.) com detecção automática
- Ajustar colunas: Opção para ajustar a largura das colunas ao conteúdo
- Argumento via linha de comando: Aceita caminho de arquivo ou diretório como argumento ao iniciar, abrindo diretamente o arquivo ou navegando para a pasta
- Somente leitura: Nenhuma alteração é permitida nos arquivos Paradox originais
🏗️ Arquitetura
O projeto é uma aplicação desktop em Free Pascal + Lazarus LCL, sem dependências externas além da sqlite3.dll. O código-fonte é organizado em units por responsabilidade, com métodos grandes extraídos para arquivos .inc incluídos via {$I}:
ParadoxViewer/
????????? pxView.lpi # Projeto Lazarus
????????? pxView.lpr # Entry point ??? inicializa????o da aplica????o
????????? pxView.res # Resources compilados (??cone embutido)
???
????????? dist/ # Sa??da de compila????o (gerada automaticamente)
??? ????????? pxView.exe # Execut??vel compilado
??? ????????? sqlite3.dll # Depend??ncia de runtime para exporta????o SQLite3
??? ????????? pxView.log # Log gerado na exporta????o em lote
???
????????? src/
??? ????????? pxTypes.pas # Constantes e tipos do formato Paradox (.db)
??? ????????? paradoxds.pas # TParadoxDataset ??? leitura de arquivos Paradox (CCR)
??? ????????? pxvExport.pas # L??gica de exporta????o para SQLite3
??? ????????? pxvLog.pas # Sistema de log em arquivo (pxView.log)
??? ????????? pxvmain.pas # Form principal ??? l??gica central da UI
??? ????????? pxvmain.lfm # Layout visual do form (designer Lazarus)
??? ???
??? ????????? assets/
??? ??? ????????? pxView.ico # ??cone da aplica????o
??? ???
??? ????????? inc/ # Implementa????es extra??das via {$I} include
??? ????????? paradoxds_io.inc # InternalOpen, InternalClose, ReadBlock*
??? ????????? paradoxds_fields.inc # InternalInitFieldDefs, GetFieldData, GetVersion
??? ????????? paradoxds_nav.inc # GetRecord, First/Last, SetRecNo, RecordCount???
??? ????????? paradoxds_bookmark.inc # BookmarkValid, Compare, Goto, Get/SetBookmark*
??? ????????? paradoxds_blob.inc # CreateBlobStream
??? ????????? paradoxds_filter.inc # ParseFilter, PxFilterRecord, SetFiltered???
??? ????????? pxvmain_shell.inc # ShellTreeView/ListView handlers + FormActivate
??? ????????? pxvmain_blob.inc # UpdateImage, UpdateMemo
??? ????????? pxvmain_grid.inc # UpdateGrid
???
????????? lib/ # Arquivos objeto intermedi??rios (gerados pelo compilador)⚙️ Pré-requisitos
Antes de compilar o projeto, certifique-se de que você possui:
- Lazarus IDE 2.08 ou superior
- Free Pascal Compiler (FPC) 3.04 ou superior
- (Opcional)
lazbuilddisponível noPATHpara compilação via linha de comando
🚀 Instalação e Uso
1. Clonar o repositório
git clone https://github.com/Maurilio-Carmo/ParadoxViewer.git
cd ParadoxViewer2. Abrir o projeto no Lazarus
File > Open Project ??? selecione pxView.lpi3. Compilar e executar
| Ação | Atalho |
|---|---|
| Compilar e executar | F9 |
| Apenas compilar | Ctrl+F9 |
| Executar com debug (breakpoints) | F9 após inserir breakpoints |
O executável pxView.exe e a sqlite3.dll serão gerados automaticamente na pasta dist/. Um comando pós-build copia a sqlite3.dll para dist/ após cada compilação.
4. Usar via linha de comando (opcional)
# Abrir diretamente um arquivo Paradox
dist\pxView.exe "C:\MeusBancos\clientes.db"
# Navegar para um diretório ao iniciar
dist\pxView.exe "C:\MeusBancos"🗄️ Exportação para SQLite3
Ao abrir um arquivo Paradox, o botão "Exportar para SQLite3" fica disponível com as seguintes opções:
| Opção | Descrição |
|---|---|
| Arquivo único | Adiciona a tabela a um arquivo .sqlite com o nome da pasta pai. Útil para reunir várias tabelas de um mesmo banco em um único arquivo. |
| Arquivos individuais | Cria um arquivo .sqlite individual com o mesmo nome do arquivo .db original. |
| Todas as tabelas | Exporta automaticamente todos os arquivos .db encontrados na pasta da tabela aberta, respeitando o modo escolhido (arquivo único ou individual). Tabelas sem registros também são exportadas — a estrutura de colunas é sempre criada. |
Log de exportação
Durante a exportação em lote, um arquivo pxView.log é gerado na mesma pasta do executável com o registro de cada tabela processada:
=== Exporta????o SQLite3 ??? 42 arquivo(s) encontrado(s) ??? 2026-04-14 10:30:00 ===
[10:30:00] Tabela [1/42]: clientes.db
[10:30:00] CREATE TABLE com 12 campo(s) (de 12 no arquivo)
[10:30:00] OK
[10:30:01] Tabela [2/42]: documentos.db
[10:30:01] Campo ignorado: "foto" (tipo ftGraphic n??o suportado para SQLite)
[10:30:01] CREATE TABLE com 8 campo(s) (de 9 no arquivo)
[10:30:01] OK
...
[10:30:10] Resultado: 40 exportada(s), 2 ignorada(s)Se houver erros, o caminho do log é exibido na mensagem de conclusão.
Mapeamento de tipos
| Tipo Paradox | Tipo SQLite3 |
|---|---|
SmallInt, Integer, Word, LargeInt |
INTEGER |
Float, Currency |
REAL |
Date, Time, DateTime |
TEXT |
Boolean |
BOOL |
Memo |
TEXT |
String, WideString |
VARCHAR(n) ou TEXT |
Blob, Graphic, Bytes, BCD |
BLOB |
Chaves primárias simples e compostas são exportadas corretamente como PRIMARY KEY.
🖥️ Tecnologias
- Free Pascal (FPC) — Linguagem de programação
- Lazarus LCL — Framework de interface gráfica (VCL-like, multiplataforma)
- TParadoxDataset — Unit de leitura de arquivos Paradox, extraída do Lazarus CCR, criada em tempo de execução (sem necessidade de instalar o pacote)
- SQLite3 — Motor de banco de dados para exportação (via
TSQLite3Connectionda FCL)
⚠️ Atenção
- Somente leitura: O ParadoxViewer não permite editar ou salvar alterações nos arquivos
.dboriginais - sqlite3.dll: O arquivo
dist/sqlite3.dlldeve estar na mesma pasta que o executável para que a exportação funcione corretamente no Windows - Compatibilidade: Testado em Windows 32-bit e 64-bit. Outros sistemas operacionais não foram testados, mas devem funcionar com o Lazarus configurado para a plataforma correspondente
📂 Interface
A janela principal é dividida em três áreas:
- Painel esquerdo:
ShellTreeViewpara navegar na árvore de diretórios +ShellListViewpara listar os arquivos.dbda pasta selecionada - Aba Data:
DBGridcom os registros da tabela aberta, navegador de registros, opção de auto-tamanho de colunas e seleção de codificação de entrada. Campos Memo e Graphic são exibidos em painéis separados na parte inferior - Aba Fields:
StringGridcom a estrutura completa dos campos (índice, nome, tipo, tamanho, obrigatoriedade)
🎉 Conclusão
O ParadoxViewer é uma ferramenta simples e direta para quem precisa acessar dados legados em formato Paradox sem depender de softwares antigos. Com suporte a exportação SQLite3, os dados podem ser facilmente migrados para sistemas modernos.
Em caso de dúvidas ou problemas, abra uma issue no repositório.

