Cadastre-se Revistas DevMedia Cursos
 

Space de Marcelo Fernandes
Busca Autor


Últimas 20 atualizações de Marcelo Fernandes

Artigo - Testando formulário com DUnit

Olá pessoal, neste artigo abordarei sobre a utilização do Dunit um framework em vem junto com o Delphi que ajuda a fazer teste unitário.

Bem o conceito de Teste unitário surgia da ideia do ken beck em suas praticas de XP,no Delphi já existia o projeto Dunit desde 2002 e foi incorporado no Delphi na versão 2010.

Mas vamos ao que interessa imagina a seguinte telas


Figura 1. Layout Inicial


Figura 2. Incluir dois Cachorros.


Figura 3. Incluir três Aves.


Figura 4. Selecionando

Temos um RadioGroup com dois valores, sendo quando selecionar algum destes valores sera modificado o valor do combobox e quando clicar no botão selecionar ele mostrar no label o valor escolhido do combobox.

Listagem 1: Criar o nosso Teste

 TestTForm1 = class(TGUITestCase)
  protected
    procedure SetUp; override;
    procedure TearDown; override;
  published
    procedure Hookup;
  end;

Como sabemos o Setup e o tearDown é executado a cada teste para que o nosso teste não seja tão custoso criar e destruir o formulário.

Listagem 2: Criar um Suite

  TForm1Setup = class(TTestSetup)
  private
    FForm1 : TForm1;
  protected
    procedure SetUp; override;
    procedure TearDown; override;
  end;

[/co
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
12/04/2012 07:51:00





Artigo - Desenvolvimento em PHP com NetBeans

O PHP desde do seu lançamento evoluiu bastante passou de um linguagem de script para um linguagem para desenvolver sistema robusto na web, a partir do php 5 introduziu um novo modelo de orientação objeto que foi completamente reescrito, permitindo um desempenho melhor e mais vantagens. Mais para que possa aproveitar todo recurso de um linguagem precisamos de um editor eficaz e produtivo.

O NetBeans é um IDE gratuito e de código aberto para desenvolvedores nas linguagem Java, C, C++, PHP, Groovy, Ruby, entre outras a IDE é executado em muitas plataformas, como Windows, Linux, Solaris e MacOS, além de fornecer aos desenvolvedores ferramentas necessárias para criar aplicativos profissionais.

Podemos contar com diversas features dento da IDE do NetBeans entre elas podemos destacar algumas,que agiliza o nosso desenvolvimento em php, sendo elas:

Refatoração Renomear e Renomeação instantânea

A refatoração, é possível alterar o nome de um tipo utilizando a refatoração Renomear, a Renomeação renomeia todos os elementos do escopo.

Refacto ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
21/03/2012 13:43:00





Artigo - Variants - Class Helper, TDataset, For In - Delphi

Podemos incrementar nossa class helper, Tdataset, for in, acrescentando mais um elemento: as variants.

Vamos usar variants para incrementar nossos for in, para isso vamos acrescentar recursos como métodos e propriedades,e invés de nosso enumerador retornar um índice ele retornará uma variant assim podemos acessar suas propriedades, usando da seguinte maneira:

data.First_Name
Com a class helper será a responsável de retornar a nossa variant adequada, para isso precisamos modificar para GetCurrent retornar uma variante invés o número do registro.

Além disso, precisamos criar uma class que herde TInvokeableVariantType e sobrescrever alguns métodos.

type
  TVarDataRecordType = class(TInvokeableVariantType)
  public
    procedure Clear(var V: TVarData); override;
    procedure Copy(var Dest: TVarData; const Source: TVarData; const Indirect: Boolean); override;
    function GetProperty(var Dest: TVarData; const V: TVarData; const Name: string): Boolean; override;
    function SetProperty(const V: TVarData; const Name: string; const Value: TVarData): Boolean; override;
  end;
Para que economizamos memória, vamos criar somente uma instância depois criarmos record para armazenar os dados da variante.

type
  TVarDataRecordData = packed record
    VType: TVarType;
    Reserved1, Reserved2, Reserved3: Word;
    DataSet: TDataSet;
    Reserved4: LongInt;
  end;
Este nosso record é uma forma simplificada da TVarData record declara ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
01/03/2012 07:17:00





Artigo - Extendendo TDataset para usar for in

A Embarcadero nos últimos lançamentos do Delphi vem acrescentando em cada versão recursos que a borland/codegear deixaram a muito a desejar, destes recursos o que mais me chamou a atenção foi a implementação do "for in" que deixa o nosso código mais elegantes.
Alem disso agora nos permite "extender" uma class sem a necessidade de fazer herança, como se fosse um "puxadinho",neste artigo vou demonstrar que com um pouco de criatividade podemos ter uma nova visão de trabalhar com o nosso TDataset.
Em nosso dia a dia costumamos fazer muitas interação em nossos TDataset:

dataset.First;
while not dataset.EOF do 
begin
//Acesso aos Fields
dataset.Next;
end;

E Que tal usamos assim:

for data in dataset do 
begin
//Acesso aos Fields
end


Assim conseguimos eliminar pelo menos 2 linhas de código,mais para conseguimos usar o for in necessitaríamos de um enumerador que infelizmente o TDataset não tem, então vamos implementar o nosso.
type
TDataSetEnumerator = class
private
FDataSet: TDataSet;
FCounter: Integer;
function GetCurrent: Integer;
public
constructor Create(ADataSet: TDataSet);
destructor Destroy; o
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
24/12/2011 14:21:00





Artigo - Comentários Elegantes no Delphi

No Capitulo 4 do livro Código Limpo do Robert C. Martins começa com a seguinte frase: "Não insira comentários num código ruim, reescreva-o" - Brian W. kernighan e P.J. Plaugher, fazendo uso das palavras de Martins, comentários são maus necessários, pois ainda não conseguimos expressar nossa intenção de uma maneira que não precisaríamos de comentários.

No Delphi, existe duas maneira de comentar. Comentários em bloco e linhas de comentários, comentário de linhas utilizamos o símbolo "//" desta maneira o compilador ignora toda a linha a partir de onde se encontra o símbolo.
var i, j: integer
...
i: = 0; / / j: = 5
...
// Showmensage("Ola Mundo");
Já nos comentários em blocos existe duas maneiras utilizando os símbolos {} e (* *), lembrando que devemos utilizar em pares os símbolos. Porém muitas vezes temos alguns problemas com os grandes blocos de comentários, pois o Delphi não permite alinhar os mesmos. Além disso, muitas das vezes encontramos no nosso código diretivas de compilação que começam com "{$" e podem tem comentários no meio de nosso código, sendo que o Delphi quando achar o primeiro símbolo final } ou *) ele acaba fechando o seu comentário, por isso devemos ter muito cuidado ao comentar nossos códigos.

Porém a minha intenção não é dizer as formas que o Delphi tem de comentar um código. Os comentários e para compensar o nosso fracasso em expressa ...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
12/12/2011 20:01:00





Artigo - Tratamento de Erro com Elegância

Em seu livro Código Limpo Robert C. Martin, dedica um capitulo só para aborda sobre tratamento de erro, trabalhar com entradas de dados que podem estar errado, dispositivos podem falhar. Podemos afirmar que se uma coisa pode dar errado, ela vai dar errado e quando ocorre, nós como programadores somos responsável por certificar que nosso código faça o seja preciso fazer com eficiência e eficácia.
O tratamento de erro é um recurso muito importante, tanto para o usuário como para nós desenvolvedores. Mas não basta só tratar o erro, temos que tratar o erro com elegância e estilo.
Normalmente temos o costume de criar flags de erro ou retornar código para que o chamador possa verificar, como o código abaixo ilustra.

procedure Logar

begin
  if (FUsuario.Login <> Emptystr) then
  begin
    ValidaUsuario(FUsuario);
    if (FUsuario.Ativo) then
    begin
      GravaSessionUsuario(FUsuario);
      CarregaConfiguracao(FUsuario);
    end
    else
    begin
      Showmensagem(" Usuario nao esta Ativo)
    end
  end
  else
    Showmensagem(" Login em branco ")

end.


O problema desta abordagem que nossa função "logar" que acumula responsabilidade e não deixa o chamador tomar uma decisão sobre o erro lançado para o usuário, refactorando para uma bordagem "código limpo" podemos fazer da seguinte maneira:

procedure logar;
begin
  Try
    doLogar
  except on E: EControlUsuario  do
      ShowMessage(E.Message);
  end;
end;


procedure doLocar;
begin
  ValidaUsuario(FUsuario);
  GravaSessionUsuario(FUsuario);
  CarregaConfiguracao(FUsuario);
end;


Bem, como podemos observar o código fica mais claro, isso porque as duas preocupações que estavam no primeiro código, o algori
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
02/12/2011 21:03:00





Artigo - Delphi + Apache Ant

No nosso dia a dia de desenvolvimento sempre temos algumas tarefas rotineiras e repetitivas, pensando nestas tarefas sugiram diversas ferramentas para automatizar esses processos de baixar fontes de repositórios, copiar, criar pastas, compilar, compactar ... a lista de tarefas é imensa.

Sempre tivemos ferramentas para ajudar o desenvolvedor no seu dia a dia como por exemplo: o "Make, essa ferramenta é um utilitário que compila automaticamente programas e bibliotecas do arquivo fonte através da leitura de arquivos denominados Makefiles, que especificam como obter o programa de destino.", com o passar do tempo foi surgindo diversas outras ferramentas similares escritos em diversas linguagens e plataformas  uma destas ferramenta e o Apache Ant.

Para quem não sabe o próprio Delphi utiliza uma dessas ferramentas para gerenciar o processo de compilação que é o MSBuild, por isso a minha proposta e mostrar que podemos melhorar nosso dia a dia com ferramentas disponíveis.

Bem inicialmente você terá que instalar o Apache Ant, atualmente está na versão 1.8. Após a instalação você deverá instalar também o plugin do MSBuild para o Apache Ant(os arquivos dproj sao script do msbuild).

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
25/11/2011 21:04:00





Artigo - Integrando Aplicações Delphi com JavaScript


Integrando Aplicações Delphi com JavaScript

Por Marcelo Fernandes,Marcos George

Bem pessoal, neste artigo mostarei alguns dos fantásticos recursos do dephi: como se pode interagir com suas aplicação web. Principalmente nos dias de hoje em que as aplicações web estão ganhando cada vez mais espaço no mercado, é importante entender como interagir e usar todo o poder do javascript, e como sua aplicação win32 feitas em delphi podem se beneficiar desta tecnologia.

Quais as vantagens

Nossas aplicações acessando recursos de web site  e até mesmo interagindo com eles. Um exemplo prático disso seria uma aplicação utilizando os maravilhosos recursos do Google maps.

Um exemplo prático

Bem, vamos  trabalhar diretamente com as API do Google maps.

  1. Crie uma aplicação normal no Delphi

Agora, vamos ta utilizar o componente  TWebBrowser da paleta internet, temos que adicionar a  uses  MSHTML para termos acesso  às interfaces para manipular o HTML e os objetos  dele.

  1. Coloque um componente TWebBrowser no Form;
  2. No evento OnShow do formulário coloque o seguinte:

procedure TfrmPrincipal.FormShow(Sender: TObject);
begin
  WebBrowser1.Navigate(ExtractFilePath(Application.ExeName) + 'google.html');
end;

  1. Bem, no meu caso eu criei um arquivo de HTML que contem as API’s e chamadas de função de javascript para que o Delphi possa chamar.
  2. Adicione  um TEdit e um TButton e no evento  OnClick do Button1  fazemos  assim :

procedure TfrmPrincipal.Button1Click(Sender: TObject);
Begin
 with WebBrowser1.Document as IHTMLDocument2 do
    parentWindow.execScript('showAddress("' + edBuscar.Text + '")', 'javascript')
end;


Isto fará com que  o nosso WebBrowser1 chame  e execute esta função javascript que esta dentro do nosso HTML.

function showAddress(address) {
      if (geoCoder) {
        geoCoder.getLatLng(
       

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
18/01/2009 14:36:00





 

Sou analista,programador e arquiteto na Questor Sistema. Trabalha com Delphi, desde da versao 5, e Firebird,Mysql desenvolvendo aplicações cliente-servidor. Formado em Tecnologia de Processamento de dados pela Cesumar, na cidade de Maringá-Pr.
Arquivo de atualizações
 2012
 2011
 2009

Estatísticas do Autor:
Número de posts: 8
Características dos posts deste autor:
Conteúdo:
Utilidade:
2 0
 
DevMedia Group - Tel: (21) 3382-5038 - www.devmedia.com.br
Todos os Direitos Reservados a DevMedia Group