Código
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.}
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009