quinta-feira, 10 de junho de 2010

Convertendo aplicações delphi facilmente

Fonte: Parallel Pascal Worlds

Os forms do Lazarus(FPC) estão mais compativeis do que nunca com Delphi.

A nova versão do 2.4.0/2.5.1 do FPC, lazarus e FPC permitem salvar os forms no formato LFM sem a necesidade dos arquivos LRS.

Esta mudança permite migrar facilmente um form Delphi para Lazarus.


Pré requisitos:

Versão trunk do Lazarus.
Versão trunk do FPC. A versão 2.4.0 tambem funcionou


Siga os passos abaixo:

1) Ir a Opcões de Projeto, tab miscelaneos e selecionar recursos FPC (FPC resources).




2) Copiar o arquivo dfm para um com extensão lfm.

3) Abrir o arquivo extensão pas relacionado no lazarus.

4) Procurar a referencia a arquivos dfm e substituir pelo siguinte código:

{$IFDEF LCL}
{$R *.lfm}
{$ELSE}
{$R *.dfm}
{$ENDIF}

5) Procurar a instrução que inclui o arquivo *.lrs na sessão de inicializacão da unit e remove-la.

6) Tecle F12 (para ver o arquivo lfm).

7) É possivel ignorar as advertências sobre propiedades inexistentes, ou não presentes no lazarus. Ista é correto para a maioria dos casos. Como você é un programador sério, revisara cada mensagem para verificar a importancia ou não do mesmo, correto? ;)

Salvar.

8) Compile. (CTRL-F9)

Como sempre, não esqueça de informar as units necessarias na clausula uses. Me refiro a LclType, LResources,etc.

Seja livre.
Use lazarus!



English Version

Lazarus(FPC) forms even more compatible with delphi.
Starting with FPC version 2.5.1 lazarus and FPC allow to save forms in lfm format without the need of LRS files.

This change make even easy migrate code from Delphi to Lazarus.

Prereqs:

Lazarus trunk version.
FPC trunk version (tested with version 2.5.1, don't know which is the minimal version required).
(Edited: minimal version required is FPC Version 2.4.0. Thanks Paul!)

The steps are:

1) Go to project options, tab miscellaneous and select fpc resources.




2) Copy dfm file to lfm file.

3) Open pas file on lazarus.

4) search your dfm reference and replace it for

{$IFDEF LCL}
{$R *.lfm}
{$ELSE}
{$R *.dfm}
{$ENDIF}

5) Search the include for lrs file at inicialization section and remove it.

6) HIT F12 (to see the lfm file).

7) You can safely ignore warnings about properties non presents in lazarus. That is true for the most of cases, but like you are a serious programmer will always read the warning messages to evaluate importance of the message, right? ;)
Save

8) Build. Done!

As always, don't forget to add need uses clauses in header of units ( i mind LclType, LResources,etc).

Enjoy!

Conheça o Elevatedb, banco de dados para Windows Mobile

.

7 comentários:

  1. Mas qual versão do Lazarus permite essa convensão?

    ResponderExcluir
  2. Ola
    Eu estou usando a versão 0.9.29.2 com fpc 2.4.0-2 e funcionou perfeitamente.
    Abs

    ResponderExcluir
  3. Valeu pela dica , acho que é isso que todos os
    programadores em delphi estão esperando ....

    Só fiquei com uma duvida , se eu criar um form novo dentro do Lazarus , esse form já será criado como DFM , ou eu na verdade pego o arquivo DFM e transformo em LFM . E ai não teria
    mais volta ....

    Obrigado desde ja ...

    Adilson

    ResponderExcluir
  4. Ola ADILSON

    O lazarus usa form lfm por padrão, mas depende da instrução {$R *.lfm). No caso do delphi {$R *.dfm} será usado o arquivo .dfm sem problemas.

    No linux deve-se dar mais atenção a esse detalhe, pois o linux é sensivel a caixa.

    Seja livre, use lazarus!

    ResponderExcluir
  5. Oi Isaac

    Excelente post. Já havia lido, mas só agora estou migrando alguns forms do Delphi e aproveitando sua dica.

    ResponderExcluir
  6. Isaac, como faço para entrar em contato contigo?
    Quero te fazer uma proposta comercial.
    Grato

    (37) 8423-9102 [TIM]

    ResponderExcluir
  7. Borgata Hotel Casino & Spa - Mapyro
    Borgata Hotel Casino & Spa 제주도 출장마사지 has 6,821 rooms, 나주 출장마사지 all of which have 화성 출장안마 an 양산 출장마사지 Italian marble bathroom. 서울특별 출장안마 They are divided into two tiers - The higher one is for guests to choose

    ResponderExcluir