Migrando de componentes no Delphi [FireDac]


O reFind é uma ferramenta que auxilia na atualização e remoção de componentes, substituição, remoção de “uses”, adiciona “uses”, remover/adicionar propriedades em componentes, utilizado em linha de comando por expressões regulares, muito utilizado "mas pouco conhecido" na hora de atualizar componentes ou até a versão do Delphi, eu utilizei hoje para remover um componente de terceiro e colocar outro no lugar.

Sua utilização é bem simples, abaixo esta o exemplo que acompanha o Delphi em minha versão esta na pasta (C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Object Pascal\Database\FireDAC\Tool\reFind\DBX2FDMigration).
Na pasta existe um exemplo chamado FireDAC_Migrate_DBX.txt, este arquivo informa para o aplicativo reFind tudo que é para ser feito.
#unuse Data.SqlExpr
#unuse Data.DBXCommon
#unuse Data.DBConnAdmin
#unuse Data.DBXDynalink
#unuse SqlExpr
#unuse DBXCommon
#unuse DBConnAdmin
#unuse DBXDynalink
 
...
 
// Driver units -------------------------------------------------------------------------------
#migrate Data.DbxDb2 -> FireDAC.Phys.DB2
#migrate Data.DbxFirebird -> FireDAC.Phys.FB
#migrate Data.DbxInformix -> FireDAC.Phys.Infx
#migrate Data.DbxInterbase -> FireDAC.Phys.IB
#migrate Data.DbxMSSQL -> FireDAC.Phys.MSSQL
#migrate Data.DbxMySql -> FireDAC.Phys.MySQL
#migrate Data.DbxOdbc -> FireDAC.Phys.ODBC
#migrate Data.DbxOracle -> FireDAC.Phys.Oracle
#migrate Data.DbxSqlite -> FireDAC.Phys.SQLite
#migrate Data.DbxSybaseASA -> FireDAC.Phys.ASA
#migrate Data.DbxSybaseASE -> FireDAC.Phys.ODBC
 
// Generic types -------------------------------------------------------------------------------
#migrate TDBXIsolation -> TFDTxIsolation, FireDAC.Stan.Option
#migrate TDBXIsolations.ReadCommitted -> xiReadCommitted, FireDAC.Stan.Option
#migrate TDBXIsolations.RepeatableRead -> xiRepeatableRead, FireDAC.Stan.Option
#migrate TDBXIsolations.DirtyRead -> xiDirtyRead, FireDAC.Stan.Option
#migrate TDBXIsolations.Serializable -> xiSerializible, FireDAC.Stan.Option
#migrate TDBXIsolations.SnapShot -> xiSnapshot, FireDAC.Stan.Option

Para a remoção das uses se utiliza "#unuse" com o nome da uses ao lado:
#unuse Data.SqlExpr

Para migração do propriedades iguais mas com nomes diferentes:
#migrate Data.DbxDb2 -> FireDAC.Phys.DB2

Para remoção de propriedades de componentes:
#remove AutoClone

Agora vamos voltar para pasta do exemplo e verificar oque vamos utilizar:
Entre outros comandos, nessa mesma pasta de contem os um cara chamado "migrate.bat" nele contem os comando que vão executar nosso "FireDAC_Migrate_DBX.txt" baixo o arquivo: Obs: 

Primeira linha contém o nome da pasta com os fontes "Meu fonte", Na ultima linha ele executa o reFind. 
Um resumo o "migrate.bat" cria uma pasta e copia todos os arquivos para la, e , neste ponto ele passa todos os arquivos .pas, .dfm e .fmx, seguido os comandos que colocamos no primeiro aquivo.

Vamos executar este "migrate.bat" e apos abrir o sistema que foi enviado para a pasta "FireDAC_MeetingOrg" em meu caso converti do componente TpFibDataSet para o FireDac, não é tão sofrido a migração mas tem que vincular corretamente suas propriedades.

Espero ter dado uma luz ai para sua alteração

9 comentários:

  1. Este comentário foi removido pelo autor.

    ResponderExcluir
  2. Saberia me dizer onde consigo o script para o rfind para converter dbGo (Componentes ADO) para o FireDAC?

    ResponderExcluir
    Respostas
    1. Uma maneira já pronta acredito que seja um pouco difícil de conseguir, tem poucas pessoas que compartilham essa informação, quando tive que fazer a conversão do FibPlus para o FireDac fui obrigada a fazer do zero por esse motivo!

      Excluir
    2. obrigado. Eu acho que ado está meio que morto. como sou das antigas meu projeto é muito grande e preciso converter isto. Vai dar muito trabalho acredito. Mas ainda não estou preparado para tal.

      Excluir
  3. Tenho uma dúvida cruel.na versão Delphi 10.3.3 Community Edition equivalente ao Professional, segundo a embarcadero, o FireDAC consigo fazer conexão do SQL Server na máquina remota? eu consigo fazer isto perfeitamente com o TADOConnection.

    ResponderExcluir
    Respostas
    1. Sim o FireDAC tem essa opção, teve algum problema ao tentar fazer?

      Excluir
    2. ainda não pois tenho medo de fazer e depois não dar certo e ter que voltar todo o projeto. Sei que o FireDAC é maravilhoso e ganha em muito desempenho em relação ao ADO.

      Excluir
    3. Faz uma copia dos fontes e faz teste em cima dele, só para para os fontes originais quando esta tudo rodando certinho, da para brincar sem medo com a cópia dos fontes.

      Excluir
  4. Estou usando #remove assim, mas não esta removendo a propriedade do *dfm, o que estou errando?

    #remove TFMTBCDField.MaxValue
    #remove TFMTBCDField.MinValue
    #remove TFMTBCDField.currency
    #remove TFMTBCDField.Size

    ResponderExcluir