| name | delphi-migration-bde-to-firedac |
| description | Diretrizes e mapeamentos de expressões regulares para migração de componentes Borland Database Engine (BDE) para FireDAC no Delphi. |
Diretrizes para Migração de BDE para FireDAC no Delphi
Esta skill define o guia técnico e o mapeamento de componentes/tipos para migração de projetos Delphi que utilizam o Borland Database Engine (BDE) legado para a tecnologia moderna de acesso a dados FireDAC.
1. Automatização da Migração (reFind.exe)
O RAD Studio inclui um utilitário de console chamado reFind.exe (localizado na pasta bin da instalação do Delphi). Ele permite processar em lote todo o projeto, substituindo as classes, propriedades e cláusulas uses via expressões regulares.
Como Executar o reFind para BDE
Para rodar a migração em lote em todas as units .pas e arquivos de tela .dfm de forma recursiva, execute o prompt de comando da pasta do projeto com os caminhos corretos:
"C:\Program Files (x86)\Embarcadero\Studio\<VERSAO>\bin\reFind.exe" /s /d:*.pas /d:*.dfm "C:\Users\Public\Documents\Embarcadero\Studio\<VERSAO>\Samples\Object Pascal\Database\FireDAC\Tool\reFind\BDE2FDMigration\FireDAC_Migrate_BDE.txt"
(Substitua <VERSAO> pela versão do Delphi instalada, por exemplo: 22.0 para o Delphi 11, 23.0 para o Delphi 12, ou 37.0 para o Delphi 13).
2. Substituição de Classes de Componentes (Mapeamento)
Ao realizar a migração manual ou revisar o resultado do reFind.exe, aplique os seguintes mapeamentos de classe:
| Classe Legada BDE | Nova Classe FireDAC | Unit FireDAC Necessária |
|---|
TSession | TFDManager | FireDAC.Comp.Client |
TDatabase | TFDConnection | FireDAC.Comp.Client, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.UI.Intf |
TTable | TFDTable | FireDAC.Comp.Client, FireDAC.Comp.DataSet |
TQuery | TFDQuery | FireDAC.Comp.Client, FireDAC.Comp.DataSet, FireDAC.DApt |
TStoredProc | TFDStoredProc | FireDAC.Comp.Client, FireDAC.Comp.DataSet, FireDAC.DApt |
TUpdateSQL | TFDUpdateSQL | FireDAC.Comp.Client |
TBatchMove | TFDBatchMove | FireDAC.Comp.BatchMove |
TParam | TFDParam | FireDAC.Stan.Param |
TParams | TFDParams | FireDAC.Stan.Param |
TBlobStream | TFDBlobStream | FireDAC.Comp.DataSet |
TAutoIncField | TFDAutoIncField | FireDAC.Comp.DataSet |
TDBDataSet / TBDEDataSet | TFDRDBMSDataSet | FireDAC.Comp.Client |
EDBEngineError | EFDDBEngineException | FireDAC.Stan.Error |
3. Substituição e Mapeamento de Propriedades
Muitas propriedades de componentes do BDE mudaram de nome ou de estrutura de acesso no FireDAC. Abaixo estão as principais conversões e remoções:
Propriedades a Mapear/Modificar:
DatabaseName → ConnectionName (ou Connection apontando para o TFDConnection correspondente).
AliasName → ConnectionDefName.
Session.* → FDManager.*.
IsAlias → IsConnectionDef.
AddAlias → AddConnectionDef.
DeleteAlias → DeleteConnectionDef.
ModifyAlias → ModifyConnectionDef.
GetAliasParams → GetConnectionDefParams.
GetAliasNames → GetConnectionDefNames.
FindDatabase → FindConnection.
OpenDatabase → OpenConnection.
CloseDatabase → CloseConnection.
GetDatabaseNames → GetConnectionNames.
Unidirectional → FetchOptions.Unidirectional.
UpdateRecordTypes → FilterChanges.
RequestLive → UpdateOptions.RequestLive.
UpdateMode → UpdateOptions.UpdateMode.
TransIsolation → TxOptions.Isolation.
TTable.ReadOnly → UpdateOptions.ReadOnly.
TQuery.DataSource → MasterSource.
TDatabase.Execute → ExecSQL.
Propriedades Obsoletas a Remover (Código e DFM):
SessionName (o gerenciamento de conexões no FireDAC usa TFDConnection e TFDManager de forma centralizada ou implicitamente thread-safe via Pools).
PrivateDir.
- Propriedade
Origin nos campos persistentes no .dfm.
4. Tipos, Constantes e Enumerados
Mapeie as definições do BDE para os enumerados correspondentes do FireDAC:
Isolamento de Transação:
TTransIsolation → TFDTxIsolation (em FireDAC.Stan.Option)
tiDirtyRead → xiDirtyRead
tiReadCommitted → xiReadCommitted
tiRepeatableRead → xiRepeatableRead
Atualizações (Update Request):
TUpdateKind → TFDUpdateRequest (em FireDAC.Phys.Intf)
ukModify → arUpdate
ukInsert → arInsert
ukDelete → arDelete
Ações em Erros de Atualização:
TUpdateAction → TFDErrorAction (em FireDAC.Stan.Intf)
uaFail → eaFail
uaAbort → eaExitFailure
uaSkip → eaSkip
uaRetry → eaRetry
uaApplied → eaApplied
Modos do Batch Move:
TBatchMode → TFDBatchMoveMode (em FireDAC.Comp.BatchMove)
batAppend → dmAppend
batUpdate → dmUpdate
batAppendUpdate → dmAppendUpdate
batDelete → dmDelete
batCopy → dmAlwaysInsert
5. Limpeza de Cláusulas Uses (Units Obsoletas)
Remova as seguintes units legadas da cláusula uses de todas as suas classes Delphi:
BDE.DBTables
BDE.BDEConst
DBTables
BDEConst
BDEMTS
BDE