Buscar

Converta códigos-fontes de delphi para kylix

Código

{Migração DELPHI para KYLIX sem traumas com o ConvertFiles.

por Dennys dos Santos Sobrinho

         Todos nós, desenvolvedores, sabemos que o Borland Delphi é uma das melhores ferramentas de desenvolvimento RAD do mercado e com o lançamento do Borland Kylix, nós passamos a ter a oportunidade de criar aplicações para o S.O.Linux. Entretanto, um dos maiores problemas enfrentados, era quando desejávamos portar nossos projetos escritos em Delphi para o Kylix.

         Tal processo não é uma tarefa difícil, porém é bem trabalhosa e dispendiosa, ocasionando muitas vezes a reedição detalhada dos projetos, pois devemos mudar todas as units substituindo alguns nomes (Menus => QMenus, Forms => QForms, etc..) existentes na clausula uses  e também algumas palavras chaves (bsSizeable => fbsSizeable, mb_OK => smbOK, etc...).

         Essa tarefa se torna mais complicada quando o programador não sabe exatamente o que deve ser substituído em seus projetos para que este possa ser compilado no Borland Kylix. Isso é perfeitamente normal, pois no início também tive esse tipo de problema.

         Selecionei um projeto bem pequeno para a conversão (16 units ao total) e com o passar das horas, pude perceber que eu teria um tremendo trabalho para converter os próximos projetos (muito maiores que esse, diga-se de passagem).

Aí eu pensei: “Por que não desenvolver uma aplicação para fazer todo o trabalho pesado e mecânico para mim?, assim eu ficaria apenas com os acertos e ajustes finais !”

Animado com essa idéia, iniciei o projeto ConvertFiles, cujo objetivo principal é de automatizar e agilizar o processo de conversão.

Este aplicativo porta com extrema desenvoltura e facilidade seu projeto Borland Delphi, baseado na biblioteca de componentes visuais para Windows (VCL), para um projeto nativo Borland Kylix, baseado na biblioteca de componentes inter-plataforma da Borland (CLX), bastando que o usuário indique algumas características do projeto, e em poucos segundos, seu projeto estará apto a ser recompilado no Borland Kylix, ou vice-versa.

Ao executar este aplicativo as seguintes telas e funções estarão disponíveis:

Converter Arquivo(s)
 

Para esta tela as seguintes opções estarão disponíveis:

-            Buscar Sub-Diretórios: Esta opção poderá ser acionada através da tecla de atalho Ctrl+B e sua finalidade é de localizar em um ou vários sub-diretórios, os arquivo desejados para a conversão.

-            Adicionar Arquivo: Esta opção poderá ser acionada através da tecla de atalho Ctrl+O e sua finalidade é de localizar e adicionar um determinado arquivo a lista.

-            Remover Arquivo(s): Esta opção poderá ser acionada através da tecla de atalho Ctrl+D e caso este item seja acionado, os arquivos selecionados na lista serão removidos do processamento.

-            Selecionar Todos: A tecla de atalho para este item é Ctrl+A e se for acionado todos os arquivos existentes na lista serão selecionados.

-            Executar: A tecla de atalho para este item é F9 e quando este for acionado, todos os arquivos existentes na lista serão processados e ao final será apresentado o total de atualizações, o status, o tempo que levou para concluir todas as substituições e os botões:

-            Salvar o resultado da conversão em arquivo.

-            Imprimir em detalhes o resultado da conversão.

Repositório de Dados
 

Para esta tela as seguintes opções estarão disponíveis:

-            Nova Linha: Este item poderá ser acionado através da tecla de atalho Ctrl+I e sua finalidade é de incluir uma nova linha na lista de textos para a conversão.

-            Excluir Linha: A tecla de atalho para este item é Ctrl+E e quando for acionado, a linha a qual o cursor estiver posicionada será removida da lista.

-            Abrir Repositório: Este item poderá ser acionado através da tecla de atalho Ctrl+R e sua finalidade consiste em localizar e abrir repositório de dados (arquivo .dat) para ser utilizado no processo de conversão dos arquivo.

-            Copiar Repositório: A tecla de atalho para este item é Ctrl+C e quando este item for acionado, todas as informações contidas no repositório de dados atual poderão ser copiados integralmente para um outro repositório.

-            Novo Repositório: Este item poderá ser acionado através da tecla de atalho Ctrl+N e sua finalidade é de criar um novo arquivo .dat para armazenar as informações do repositório de dados, onde estes serão utilizados futuramente durante o processo de conversão.

-            Salvar Repositório: A tecla de atalho para este item é Ctrl+S e quando este item for acionado, todas as alterações efetuadas no repositório de dados serão salvos em disco.

Configurações
 

Para esta tela as seguintes configurações poderão ser feitas:

-          Filtrar o(s) arquivo(s) do(s) tipo(s): Neste item deverá existir os tipos de arquivos (extensões) que serão filtrados quando os itens “Buscar Sub-Diretórios” ou “Adicionar Arquivo” forem acionados.

-          Apenas “SIMULAR” a conversão no(s) arquivo(s): Quando este item estiver selecionado, todo o processamento será feito em memória, ou seja, as substituições ocorridas não serão efetivadas nos arquivos processados.

-          Processar a conversão no(s) arquivo(s): Caso este item esteja selecionado, todas as substituições, durante o processo de conversão, serão efetivadas nos arquivos processados.

Para este item as seguintes opções estarão disponíveis:

-          Efetuar um “BACKUP” antes de processar o(s) arquivo(s): Se este item estiver marcado, o aplicativo irá criar um arquivo de backup contendo todas as informações originais do arquivo antes de processa-lo.

-          Renomear o(s) arquivo(s) caso necessário: Se este item estiver marcado, o aplicativo irá renomear, caso necessário, todos os arquivos vinculados ao que estiver em processamento.

-          Linguagem Padrão: Neste local deverá ser informado o arquivo de linguagem (.lng) que a aplicação utilizará para se comunicar com o usuário.

Este arquivo poderá ser localizado através do botão   ou ser editado através do botão  .

-          Arquivo de informações (AJUDA): Neste local deverá ser informado o arquivo com as informações de ajuda (.hlp) da aplicação.

Este arquivo poderá ser localizado através do botão  .

Botões adicionais
-            Fechar a aplicação ConvertFiles.
-            Acessar o item de configurações da aplicação.
-            Legenda da aplicação, contendo informações especiais a respeito do ícones que serão apresentados durante o processamento dos arquivos

-            Sobre a aplicação, informações adicionais do autor e colaboradores bem como uma pequena história do aplicativo.

-            Acionar o arquivo de ajuda da aplicação.

Para entender melhor como trabalhar com o ConvertFiles, façamos o seguinte:

1º) Inicie o seu Borland Delphi (qualquer versão) e crie um novo projeto.

2º) Digite “Teste do aplicativo ConvertFiles” na propriedade Caption do Form principal.

3º) Adicione sobre o Form dois componentes TLabel e digite na propriedade Caption:
-          “Mensagem : “ para o primeiro TLabel.
-          “Título : “ para o segundo TLabel.

4º) Adicione sobre o Form dois componente TEdit e digite na propriedade Text:
-          “Este é um pequeno exemplo de uma conversão Delphi para Kylix.” para o primeiro TEdit.
-          “Ola ! Desenvolvedor...” para o segundo TEdit.

5º) Adicione sobre o Form três componentes TButton e digite na propriedade Caption:
-          “Advertindo...” para o primeiro TButton.
-          “Criticando...” para o segundo TButton.
-          “Informando...” para o terceiro TButton.          

 6º) No evento OnClick do primeiro botão (TButton) digite o seguinte código pascal.

}


with Application do begin
  NormalizeTopMosts;
  case MessageBox(PChar(Edit1.Text), PChar(Edit2.Text), [smbYES, smbNO], smsWarning) of
    smbYes: MessageDlg('Você confirmou o primeiro teste !', mtConfirmation, [mbOK], 0);
    smbNo:  MessageDlg('Você não confirmou o primeiro teste !', mtConfirmation, [mbOK], 0);
  end;
  RestoreTopMosts;
end;

{7º)      No evento OnClick do segundo botão (TButton) digite o seguinte código pascal.  }

with Application do begin
    NormalizeTopMosts;
    case MessageBox(PChar(Edit1.Text), PChar(Edit2.Text), MB_ICONERROR+MB_YESNO) of
        ID_YES: MessageDlg('Você confirmou o segundo teste !', mtConfirmation, [mbOK], 0);
      ID_NO:  MessageDlg('Você não confirmou o segundo teste !', mtConfirmation, [mbOK], 0);
    end;  
    RestoreTopMosts;
  end;

{8º) No evento OnClick do terceiro botão (TButton) digite o seguinte código pascal.}

  with Application do begin
    NormalizeTopMosts;
    case MessageBox(PChar(Edit1.Text), PChar(Edit2.Text), MB_ICONINFORMATION+MB_YESNO) of
        ID_YES: MessageDlg('Você confirmou o terceiro teste !', mtConfirmation, [mbOK], 0);
      ID_NO:  MessageDlg('Você não confirmou o terceiro teste !', mtConfirmation, [mbOK], 0);
    end;  
    RestoreTopMosts;
  end;

{O código pascal possivelmente estará parecido com o a seguir:}

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
        with Application do begin
                NormalizeTopMosts;
    case MessageBox(PChar(Edit1.Text), PChar(Edit2.Text), MB_ICONWARNING+MB_YESNO) of
        ID_YES: MessageDlg('Você confirmou o primeiro teste !', mtConfirmation, [mbOK], 0);
      ID_NO:  MessageDlg('Você não confirmou o primeiro teste !', mtConfirmation, [mbOK], 0);
    end;  
    RestoreTopMosts;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  with Application do begin
    NormalizeTopMosts;
    case MessageBox(PChar(Edit1.Text), PChar(Edit2.Text), MB_ICONERROR+MB_YESNO) of
        ID_YES: MessageDlg('Você confirmou o segundo teste !', mtConfirmation, [mbOK], 0);
      ID_NO:  MessageDlg('Você não confirmou o segundo teste !', mtConfirmation, [mbOK], 0);
    end;  
    RestoreTopMosts;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  with Application do begin
    NormalizeTopMosts;
    case MessageBox(PChar(Edit1.Text), PChar(Edit2.Text), MB_ICONINFORMATION+MB_YESNO) of
        ID_YES: MessageDlg('Você confirmou o terceiro teste !', mtConfirmation, [mbOK], 0);
      ID_NO:  MessageDlg('Você não confirmou o terceiro teste !', mtConfirmation, [mbOK], 0);
    end;  
    RestoreTopMosts;
  end;
end;
 
{9º) Salve, compile e execute este exemplo (ExampleVCL.zip) em seu Borland Delphi.
10º) Execute o aplicativo ConvertFiles e clique no botão   Buscar Sub-Diretórios, logo em seguida informe o diretório em que exemplo esta localizado.

11º) Se necessário, clique no botão   Abrir Repositório e localize o arquivo delphi2kylix.dat (repositório de dados).

12º) Clique no botão   Executar e aguarde o final do processo, enquanto o aplicativo converte todo código Delphi para Kylix.

Após a finalização da conversão do código, você poderá visualizar quais foram as mudanças efetuadas através de um duplo-clique sobre o arquivo desejado ou também através do botão   Imprimir em detalhes o resultado da conversão.

O resultado final na unit deverá estar parecido cm este a seguir:}

unit uFrm_Example;

interface

uses
  {$IFDEF LINUX} Libc, {$ENDIF} QT {$IFDEF MSWINDOWS}, Windows {$ENDIF},
  Messages, SysUtils, Variants, Classes, QGraphics, QControls, QForms,
  QDialogs, QStdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.xfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
        with Application do begin
                NormalizeTopMosts;
    case MessageBox(PChar(Edit1.Text), PChar(Edit2.Text), [smbYES, smbNO], smsWarning) of
        smbYes: MessageDlg('Você confirmou o primeiro teste !', mtConfirmation, [mbOK], 0);
      smbNo:  MessageDlg('Você não confirmou o primeiro teste !', mtConfirmation, [mbOK], 0);
    end;  
    RestoreTopMosts;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  with Application do begin
    NormalizeTopMosts;
    case MessageBox(PChar(Edit1.Text), PChar(Edit2.Text), MB_ICONERROR+MB_YESNO) of
        smbYes: MessageDlg('Você confirmou o segundo teste !', mtConfirmation, [mbOK], 0);
      smbNo:  MessageDlg('Você não confirmou o segundo teste !', mtConfirmation, [mbOK], 0);
    end;  
    RestoreTopMosts;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  with Application do begin
    NormalizeTopMosts;
    case MessageBox(PChar(Edit1.Text), PChar(Edit2.Text), [smbYES, smbNO], smsInformation) of
        smbYes: MessageDlg('Você confirmou o terceiro teste !', mtConfirmation, [mbOK], 0);
      smbNo:  MessageDlg('Você não confirmou o terceiro teste !', mtConfirmation, [mbOK], 0);
    end;  
    RestoreTopMosts;
  end;
end;

end.
{
Pronto !
Agora é só acessar o seu sistema operacional Linux e compilar em seu Borland Kylix o exemplo (ExampleCLX.zip) já convertido...

Para converter os seus projetos basta apenas seguir os passos 10 e 12.

É importante lembrar que após a conversão, será necessário efetuar alguns ajustes em seus formulários, pois as definições de altura e largura não são as mesmas entre o Delphi/Windows e Kylix/Linux.}

 

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Linux/Kylix
Adicionada dia: 17/01/04
Por: Carlos Augusto Trudo
Visualizada: 6268 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009