domingo, 2 de setembro de 2012

E ai galera blz?

Hoje vou mostrar um tutorial muito legal, uma dica bem interessante para estudar.
Os procedimentos são bem simples e vou mostrar tudo o que vamos utilizar, vamos lá!

Funções do nosso editor:

-Sintaxe Pascal
-Abrir e Salvar arquivos .pas
-Compilar

Para compilar vamos usar o próprio compilador do Delphi. O DCC32.

- FastScript
Componente necessário para utilizarmos a sintaxe do Pascal dentro de nossa aplicação.
Obs. O Delphi XE2 Update 4 já possui esse componente instalado.


O componente FastScript possui componentes muito legais que possuem a execução de um código e sintaxe para várias linguagens, mas só usaremos um desses componentes, o TfsSyntaxMemo.

Vamos montar nosso form.
Instale o FastScript de acordo com sua versão do Delphi, ou se estiver usando o Delphi XE2 adicione-o ao seu form o componente TfsSyntaxMemo.


Mude as propriedades dele para:

Align: alClient
Name: Editor
SyntaxType: stPascal

Feito isso, vamos adicionar uma TToolbar que fica na paleta Win32:


Agora vamos adicionar os botões na Toolbar. Clique com o botão direito e clique Add New Button.



Adicione um ImageList, dê um duplo clique nele e adicione as imagens dos nossos botões.


Eu utilizei os ícones Gentlefae Free Toolbar Icons, você pode baixá-los em http://www.gentleface.com/free_toolbar_icons.html

Basta associarmos a propriedade Images da Toolbar com ImageLis1 que acabamos de adicionar e ligar as propriedades ImageIndex de cada botão com a respectiva imagem.

Nosso design está pronto!

Agora, vamos declarar uma variável pública para verificar se o arquivo já está salvo ou não, e uma para armazenar o local onde o arquivo está salvo.

public
    salvo: boolean;
    local: string;
end;

E vamos criar uma procedure para salvar os arquivos.
Antes de mais nada, adicione um SaveDialog que está na paleta Dialogs.

procedure TForm1.SalvarArquivo;
begin
  if local = '' then  // se nao tiver salvo
  begin
    SaveDialog1.Execute();      // executa o Dialog
    if SaveDialog1.FileName <> '' then
    begin
      Editor.Lines.SaveToFile(SaveDialog1.FileName + '.pas');   // salva onde foi selecionado
      local := SaveDialog1.FileName;   // guarda o local onde foi salvo
      salvo := true;    // já está salvo
    end;
  end
  else        // se ja tiver salvo
  begin
    Editor.Lines.SaveToFile(local + '.pas');     // salva em cima
    salvo := true;    // já está salvo
  end;
end;

----------------------

Vamos ao código do botão 1, que é o botão 'Novo'.

procedure TForm1.ToolButton1Click(Sender: TObject);
begin
  if salvo = false then
  begin
    // pergunta se deseja salvar
    if MessageDlg('Deseja Salvar o arquivo?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
      SalvarArquivo;  // chama a procedure para salvar
  end
  else          // se já está salvo
  begin
    Editor.Lines.Clear; // apaga as linhas do Editor
    salvo := false;
  end;
end;

----------------------

Código do botão 1, botão 'Abrir'.
Antes, adicione um OpenDialog que se encontra na paleta Dialogs.


procedure TForm1.ToolButton2Click(Sender: TObject);
begin
  if salvo = false then
  begin
    // pergunta se deseja salvar
    if MessageDlg('Deseja Salvar o arquivo antes de abrir outro?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
      SalvarArquivo;  // chama a procedure para salvar
  end;
  OpenDialog1.Execute();    // chama o dialog
  if OpenDialog1.FileName <> '' then
  begin
    Editor.Lines.LoadFromFile(OpenDialog1.FileName);    // carrega o arquivo selecionado
    local := OpenDialog1.FileName;      // guarda local
  end;
end;

----------------------

Código do botão 3. Salvar.

procedure TForm1.ToolButton3Click(Sender: TObject);
begin
  SalvarArquivo;    // chama a procedure para salvar
end;

----------------------

Código do botão 4. Executar.

procedure TForm1.ToolButton4Click(Sender: TObject);
var
  arquivo: string;
begin
    arquivo := local + '.exe';
    WinExec(PAnsiChar(arquivo), SW_NORMAL)    // executa o arquivo compilado
end;

--------------------

Código do botão 5. Compilar.

Chegamos na hora mais esperada!
Como falei no começo do post, vamos utilizar o próprio compilador do Delphi, localizado normalmente em C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\bin\dcc32.exe

É ele que vamos chamar para compilar o arquivo. Adicione um TMemo localizado na paleta Additional e marque a propriedade visible para false.
Mãos a obra!!!

procedure TForm1.ToolButton5Click(Sender: TObject);
var
  localCompilador, comando: string;
begin
  SalvarArquivo;    // é necessario salvar antes

  // altere o local do compilador se necessário
  localCompilador := '"C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\bin\dcc32.exe"';
  comando := localCompilador + ' "' + local + '.pas"'; // linha de comando do compilador

  Memo1.Lines.Add(comando);
  Memo1.Lines.Add('PAUSE');     // comando do DOS para pausar a execução do batch
  Memo1.Lines.SaveToFile('compilar.bat');     // salva o arquivo com a linha de comando

  WinExec('compilar.bat', SW_NORMAL);     // executa a linha de comando.
end;

Repare a linha  em que salvamos o arquivo compilar.bat.
Gravamos nesse arquivo a linha de comando necessária para compilar o arquivo salvo.
Caso o programa já esteja salvo, é esse linha que ele irá gerar:

"C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\bin" "c:\arquivo.pas"

Após salvar o arquivo, executamos ele, e ele compila o arquivo.

Lembrando que estamos usando o compilar da Embarcadero®, então temos que incluir todos os parâmetros que o compilador precisa, por exemplo, para criar uma aplicação em nosso editor e compilarmos, temos que adicionar a diretiva {$APPTYPE CONSOLE}. exemplo:

program teste;

{$APPTYPE CONSOLE}

begin
end.

Bom galera, é isso aí, um bom projeto para se estudar.
Você pode pegar o código fonte deste projeto aqui






Abraços e até a próxima.

3 comentários:

  1. Anônimo7.9.12

    Muito bom cara.

    ResponderExcluir
  2. MUITO BOM MESMO,QDO COMEÇAR ESTA MATÉRIA JÁ ESTOU POR DENTRO DE DELPHI

    ResponderExcluir
  3. Anônimo17.7.14

    CARA... EXISTE O LAZARUS E O FREE PASCAL!!! AMBOS SÃO VERDADEIRAS XEROX A CORES DO DELPHI E TOTALMENTE OPEN SOURCE!!! É SÓ CONFERIR E BAIXAR!!!

    ResponderExcluir