cd69.indb 1 2/12/2005 20:28:24



Documentos relacionados
Desenvolvendo Websites com PHP

Dicas para usar melhor o Word 2007

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Noções de. Microsoft SQL Server. Microsoft SQL Server

Instalando o Internet Information Services no Windows XP

Orientação a Objetos

02 - Usando o SiteMaster - Informações importantes

Feature-Driven Development

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

Tabela e Gráficos Dinâmicos Como estruturar dinamicamente dados no Excel

Programação de Computadores - I. Profª Beatriz Profº Israel

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

Novas funcionalidades do RAD Studio 2007 em aplicações ASP.NET 2.0

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

Gerenciamento de Arquivos e Pastas. Professor: Jeferson Machado Cordini jmcordini@hotmail.com

OneDrive: saiba como usar a nuvem da Microsoft

Como incluir artigos:

Procedimentos para Reinstalação do Sisloc

MANUAL DO GERENCIADOR ESCOLAR WEB

AMBIENTE. FORMULÁRIO: é a janela do aplicativo apresentada ao usuário. Considere o formulário como a sua prancheta de trabalho.

Google Drive. Passos. Configurando o Google Drive

- Versão 1.0 Página 1

MANUAL COTAÇAO WEB MANUAL MANUAL AVANÇO INFORMÁTICA AVANÇO INFORMÁTICA. [Digite seu endereço] [Digite seu telefone] [Digite seu endereço de ]

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

Lidar com números e estatísticas não é fácil. Reunir esses números numa apresentação pode ser ainda mais complicado.

TUTORIAL DO ALUNO. Olá, bem vindo à plataforma de cursos a distância da Uniapae!!!

Planejando o aplicativo

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

edirectory Plataforma ios / Android

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

Apostilas OBJETIVA Escrevente Técnico Judiciário TJ Tribunal de Justiça do Estado de São Paulo - Concurso Público Índice

Apostilas OBJETIVA Escrevente Técnico Judiciário TJ Tribunal de Justiça do Estado de São Paulo - Concurso Público Caderno 1.

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

Data Transformation Services (DTS) por Anderson Ferreira Souza

Google Drive: Acesse e organize seus arquivos

LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER

INTRODUÇÃO AO WINDOWS

Índice. Tenho uma conta pessoal e uma conta da instituição em que dou aula, porém não consigo acessar a conta da escola. O que fazer?

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Manual do Google agenda. criação e compartilhamento de agendas

Manual do Painel Administrativo

A barra de menu a direita possibilita efetuar login/logout do sistema e também voltar para a página principal.

SCPIWeb. SCPIWebDespRec Aplicação Web para Consulta de Despesas e Receitas ( Lei Complementar nº 131 de 27 Maio de 2009 )

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

CONSTRUÇÃO DE BLOG COM O BLOGGER

edirectory ios / Android Plataforma

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet.

Operador de Computador. Informática Básica

Trecho retirando do Manual do esocial Versão 1.1

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo.

1 Inicie um novo. Guia de Referência Rápida de Gerenciamento de Projeto para o Project projeto

GUIA BÁSICO DA SALA VIRTUAL

Tema UFPel 2.0 WP Institucional Guia de Opções de Personalização

Manual do Visualizador NF e KEY BEST

Curso de atualização Educação Integral e Integrada. Tutorial Moodle. Belo Horizonte, 2013.

PRODAV 05/2014 Passo a passo para inscrição do projeto

Os desafios do Bradesco nas redes sociais

Banco de Dados Microsoft Access: Criar tabelas. Vitor Valerio de Souza Campos

Portal Sindical. Manual Operacional Empresas/Escritórios

QUESTINAMENTOS AO EDITAL DE CONCORRÊNCIA 01/2013

3 Dicas MATADORAS Para Escrever s Que VENDEM Imóveis

GANHAR DINHEIRO COM SEU SITE OU BLOG

Daruma NFCe Conheça todos os passos para testar a NFCe Daruma

Na tela dele, clique no sinal de + ao lado do nome do seu computador, para expandi-lo. A seguir, expanda também o item "Sites da web".

Configurando o IIS no Server 2003

Informática Aplicada

TUTORIAL DO ACCESS PASSO A PASSO. I. Criar um Novo Banco de Dados. Passos: 1. Abrir o Access 2. Clicar em Criar um novo arquivo

Lição 1 - Criação de campos calculados em consultas

15. OLHA QUEM ESTÁ NA WEB!

Microsoft Office PowerPoint 2007

Manual do Ambiente Moodle para Professores

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Omega Tecnologia Manual Omega Hosting

EDITORA FERREIRA MP/RJ_EXERCÍCIOS 01

Instalação: permite baixar o pacote de instalação do agente de coleta do sistema.

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007

"Manual de Acesso ao Moodle - Discente" 2014

O nome ANT é uma sigla para another neat tool (mais uma ferramenta organizada), segundo seu autor James Duncan Davidson.

ÍNDICE MANUAL SITE ADMINISTRÁVEL TV. 1. Introdução 2. Acessando o site administrável/webtv SITE ADMINISTRÁVEL 3. CONFIGURAÇÕES

Manual de Integração

Banco de Dados Microsoft Access: Criar tabelas

Manual de criação de envios no BTG360

Capítulo 2 Introdução à ferramenta Flash

Acessando um Banco de Dados

Manual Sistema MLBC. Manual do Sistema do Módulo Administrativo

AULA: BrOffice Impress terceira parte. Ao final dessa aula, você deverá ser capaz de:

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Questão Essência do Excel

Novidades no Q-flow 3.02

BEM-VINDO AO dhl PROVIEW

INTRODUÇÃO 2 ACESSO AO SIGTECWEB 3 TEMPO DE CONEXÃO 5 NAVEGAÇÃO 7 BARRA DE AÇÕES 7 COMPORTAMENTO DOS BOTÕES 7 FILTROS PARA PESQUISA 8

4 O Workflow e a Máquina de Regras

Dadas a base e a altura de um triangulo, determinar sua área.

Guia de Início Rápido

COORDENAÇÃO DE ENSINO A DISTÂNCIA - EaD

Transcrição:

cd69.indb 1 2/12/2005 20:28:24

Delphi 2006 Overview e Novidades do IDE Guinther Pauli E m novembro estive na Borland Developer Conference 2005 em San Francisco, onde pude acompanhar de perto o lançamento do Delphi 2006. Foram várias as sessões abordando as novidades da mais nova versão do Delphi, que agora compõe o Borland Developer Studio 2006, juntamente com o C# Builder 2006 e o C++Builder 2006. Neste artigo veremos tudo o que há de novo no IDE, incluindo VCL GuideLines, Live Templates, melhorias no editor de código, novidades no suporte ao ASP.NET, desenvolvimento.net e Win32 e muito mais! Em especial, vou comentar tudo o que assisti em uma palestra de 5 horas, ministradas por alguns dos principais arquitetos do Delphi (Allen Bauer, Dany Thorpe, Anders Ohlsson e John Kaster). Borland Developer Studio 2006 Antes de começar, vou explicar um pouco a atual situação do Delphi para que eu possa conduzir o restante deste overview. A Borland, por volta de 2001, anunciou os seus planos para a criação de um IDE único que suportasse várias linguagens. O codinome do projeto dado na época, para quem lembra, foi Galileo. O projeto veio à tona com o lançamento do C#Builder 1.0. O C#Builder, ferramenta Borland para desenvolvimento de aplicações.net com o C#, usava o Galileo como IDE base, que passou a ser chamado a partir daí de Borland Developer Studio 1.0 (BDS). No ano seguinte, a Borland anunciou o Delphi 8, com suporte ao.net Framework. O Delphi 8 estava hospedado na versão 2.0 do Borland Developer Studio. Em 2005, a Borland unificou o Delphi for.net (D8) e o C#Builder no BDS, na sua versão 3.0. Além disso, foi adicionado o suporte ao Delphi Win32 (D7), além de uma série de outras novidades como vimos na edição 57 da Revista ClubeDelphi, incluindo ECO 2, novos componentes ASP.NET, ALM, StarTeam, Refactoring, Deploy Manager, History Manager etc. Apesar do nova IDE ser uma união de três linguagens (chamadas de perso- nalidades ), o nome comercial dado foi Delphi 2005, suportando C#, Delphi for.net e Delphi Win32. A partir de agora o nome utilizado para referenciar o IDE é Borland Developer Studio 2006 (a versão 4.0), previamente conhecido pelo codinome Dexter. O BDS 2006 comporta agora quatro produtos em um só (ao adquirir qualquer um deles, você tem direito a utilizar os demais gratuitamente): Delphi 2006 - Win32; Delphi 2006 -.NET; C# Builder 2006; C++ Builder 2006 (nova personalidade suportada agora no BDS 4.0); É claro, devido à popularidade da marca Delphi, muitas referências ao BDS 4.0 são feitas com o nome Delphi 2006. O Dexter, conforme reforça o próprio nome, é a décima versão do Delphi. Nota: Pouco antes do fechamento desta edição, a Borland anunciou em seu site que a personalidade C++ seria lançada na forma de um Preview no BDS 2006, com posterior update, conforme consta no link http://bdn.borland.com/article/ 0,1410,33404,00.html Delphi 2006: Missão A equipe da Borland salientou quais são os principais objetivos do novo produto, onde destaco o seguinte: Melhorias na qualidade e performance do IDE; ECO basic em todas as versões para incentivar o uso do ECO (Enterprise Core Objects), a Borland distribui agora o framework em todas as versões do produto, incluindo Professional, Enterprise e Architect; VCL Design Guidelines novas melhorias no Form Designer, conforme veremos mais adiante neste artigo; Together aqui provavelmente está uma das principais novidades do IDE, agora temos o suporte full ao Together, ferramenta para design e modelagem UML da Borland. Tudo está integrado no mesma IDE; Live Templates modelos de código para serem usados com o Code Insight e editor (vistos a seguir); Novos Refactorings; Suporte à personalidade C++, incluindo VCL para C++; cd69.indb 6 2/12/2005 20:28:47

Acesso a BD no Delphi 2006Andreano Lanusse Novidades no Data Explorer, dbexpress e BDP Delphi 2006 traz inúmeras novidades no desenvolvimento de O aplicações para bancos de dados, tanto para desenvolvimento Win32 (VCL) quanto para.net. Temos atualizações no dbexpress, BDP (Borland Data Provider), melhorias no IDE, Connection Pooling, novos drivers e muitos outros recursos. dbexpress Como sabemos, o dbexpress é a tecnologia de acesso a dados que traz independência no desenvolvimento de aplicações que utilizam BD, sendo muito utilizado por empresas que têm sistemas que precisam trabalhar com vários tipos de servidores. O uso dessa tecnologia torna o desenvolvimento rápido, barato e com alta performance. No diretório <BDS>\Demos existem diversos exemplos de aplicações utilizando dbexpress, fique a vontade para estudar todos esses exemplos. O desenvolvimento com dbexpress está disponível para Delphi Win32, Delphi for.net e C++ Builder, e incluí várias novidades, conforme destacaremos ao longo deste artigo. Data Explorer O Data Explorer do IDE permite um fácil gerenciamento e manutenção de objetos do banco de dados, fornecendo uma maneira simples para consultar / modificar a estrutura de tabelas, executar comandos SQL, migrar dados etc. Até o Delphi 2005, só era possível utilizar o Data Explorer para gerenciar bancos de dados que tivessem uma conexão BDP (.NET). Podíamos então utilizar o recurso de drag and drop durante o desenvolvimento, ao arrastar conexões e tabelas para o designer, os componentes BDP eram gerados e configurados automaticamente. Uma grande melhoria no IDE é que agora é possível utilizar o Data Explorer para gerenciar BDs usando conexões dbexpress! Todos os recursos já disponíveis para BDP, como o recurso de drag and drop, migração de dados, execução de comandos SQL etc., podem ser utilizados com dbexpress (Figura 1). Nota: Veja um artigo na edição 67 para uma introdução aos recursos do Data Explorer. Uma outra vantagem no Data Explorer é que agora é possível customizar o mapeamento de tipos de campos para migração de dados entre diferentes bancos. Por exemplo, um campo do tipo date pode ser configurado para gerar um campo string em outro banco durante a migração. Esse recurso facilita a migração e resolve problemas de incompatibilidade. Drivers atualizados No Delphi 2006, os drivers dbexpress para acesso a dados foram atualizados conforme a Tabela 1, suportando agora as últimas versões dos principais BDs do mercado, mantendo ainda suporte para versões anteriores. O driver dbexpress para SQL Server foi atualizado, incorporando o suporte a unicode, incluindo caracteres chineses, japoneses e outros caracteres são suportados pelo driver. Temos também suporte a Return Values na execução de Stored Procedures. O SQL Server permite que seus parâmetros sejam retornados para a aplicação, como se fossem um var Edição 68 - ClubeDelphi 11 cd69.indb 11 2/12/2005 20:29:01

Delphi Language Novidades do compilador do Delphi 2006 Dormevilly Tertius Como é de conhecimento de todos, o Delphi é baseado na linguagem Pascal e no Turbo Pascal, que foi a primeira ferramenta criada pela Borland há mais de 22 anos. Durante esse longo tempo de vida, a linguagem Pascal vem se adaptando as necessidades e mudanças de arquiteturas impostas pela plataforma e usuários. Muitos dos novos usuários do Delphi não imaginam que na primeira versão do produto, funções básicas do IDE como Code Insigth e Code Completion simplesmente não existiam e que em versões anteriores da linguagem Pascal não era possível criar arrays dinâmicos, overload de função então, nem pensar. Na versão 2005 do Delphi, várias funcionalidades foram incorporadas na linguagem Pascal, entre elas: For-in-do; Unicode; Namespaces; Structured Types; Entre outros. Nessa nova versão do Delphi, foram feitas várias modificações/ melhorias na estrutura da linguagem Pascal, as principais sem dúvida estão relacionadas ao uso de Records no Win32, assunto que veremos em detalhes neste artigo. Usando records Originalmente o suporte a record remonta da versão 1.0 do Turbo Pascal. Nesse longo caminho até o Delphi 2006, o record sofreu muitas implementações para atender as necessidades tanto dos usuários (vocês) quanto das mudanças tecnológicas impostas pela evolução da plataforma. Como sabemos, um record representa um conjunto heterogêneo de elementos. Cada elemento é chamado de campo (field). Na declaração do record especificamos o nome e tipo de cada campo. Exemplo de sintaxe: type RecordTypeName = record FieldList1: type1;... FieldListn: typen; end; Onde RecordTypeName é um identificador válido, cada type representa um tipo de dado válido (ex.: integer, string etc.) e cada FieldList é um identificador válido ou uma string delimitada por aspas. Como exemplo, confira a seguir uma declaração de construção de registro chamada TDataReg: type TDataReg = record Ano: Integer; Mes: (Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, &Set, &Out, Nov, Dez); Dia: 1..31; end; Cada TDataReg contém três campos: um inteiro chamado de Ano, uma enumeração chamada de Mes e outro inteiro chamado de Dia, com valor delimitado entre 1 e 31. Para utilizar esse registro em alguma parte da aplicação, basta declarar uma variável do tipo do registro da seguinte forma: var Data: TDataReg; begin Data.Ano := 2005; Data.Mes := Out; Data.Dia := 25; end Ao longo dos anos, as funcionalidades dos records foram aprimoradas, suportando tipos variáveis, cláusula case entre outras coisas. O Record no Delphi 2006 No Delphi 2006, o record é mais uma vez incrementado e passa a ser quase uma classe, com suporte a: Construtores; Sobreposição de operadores; Declaração de métodos não virtuais; Propriedades e métodos estáticos. Vamos ver um exemplo de implementação de um record com as novas funcionalidades incluídas no Delphi 2006, conforme a Listagem 1. Agora records podem utilizar muitas das funcionalidades 14 cd69.indb 14 2/12/2005 20:29:07

ECO III no Delphi 2006 (UML + produtividade) 2 no Delphi 2006 Daniel Polistchuck Delphi 2006 já é o quarto produto da Borland a suportar o O ECO e sempre que uma nova versão chega temos muitas novidades. Essa era minha expectativa ao receber as primeiras informações sobre o DeXter (agora Delphi 2006) há alguns meses. No entanto, ao ler a descrição das novas características fiquei, como um bom carioca, bolado! Pensei cá com meus botões: se for tudo isso mesmo o bicho vai pegar (cariocamente falando, mais uma vez). Antes do bicho pegar Para aqueles que nunca ouviram falar do ECO: ECO significa Enterprise Core Objects e é uma infra-estrutura (ou framework para quem gosta de anglicanismos) de desenvolvimento que oferece ao desenvolvedor a possibilidade de abstrair persistência de dados, SQL, interface gráfica avançada, sincronização de dados, mapeamento objeto-relacional etc., utilizando modelos UML como base para toda a aplicação. Simplificando: o ECO permite que você seja extremamente produtivo oferecendo ao desenvolvedor a possibilidade de aplicar os conceitos RAD (Rapid Application Development) à Orientação a Objetos pura. Ou seja: sonho! Usar OO sem perder produtividade! E o bicho pega! Agora que já entendemos o que é o ECO, podemos dizer: realmente o bicho pegou. Veja uma lista do que temos de novo no ECO III do Delphi 2006: Pacotes do ECO em Assemblies para reutilização e extensão (ECO Package in Package); Wizard de edição visual de XML de mapeamento objetorelacional; Adição de modelagem comportamental (leia-se regras de negócio com Diagrama de Estado) ao diagrama de classes para geração de código; Novo engine do Together mais rápido e flexível para modelagem; Suporte a EcoSpace Synchronization Server para distribuição de alterações automática entre aplicações; Autoforms com métodos, integrados com máquina de estados das classes, em Windows Forms e ASP.NET; EcoSpace Debugger para ASP.NET; Geração opcional de uma classe por unit; ECO Action Language (extensão ao OCL) para implementação de código em modelos. Neste artigo vamos nos concentrar no uso Máquinas de Estado, um dos principais novos recursos do ECO. Nota: Para uma introdução ao ECO, veja a série de artigos sobre o assunto nas edições 57 a 61. Consulte também um artigo on-line no Hot Site Borland, no endereço www.devmedia.com.br/clubedelphi/ borland/artigos/ecoii.asp Máquinas de Estado Vamos começar com uma aplicação do tipo ECO WinForms simples, de uma classe chamada Pedido (Figura 1). Para se adicionar uma máquina de estados à classe, basta clicar com o botão direito do mouse sobre ela e selecionar Add>ECO State Machine. As máquinas de estado são um dos diversos diagramas que podem representar o comportamento das classes de um modelo. Normalmente são utilizados para representar os estados possíveis de uma classe e suas respectivas transições. Na Figura 2, podemos avaliar os diferentes elementos visuais de uma máquina de estado. Com a seguinte legenda: (A) = Estado inicial (B) = Estado (C) = Transição de Novo para Cancelado e seu Trigger Cancelar (D) = Transição de Em Análise para Cancelado e seu Trigger Cancelar, com efeito MotivoCancelamento := Sem Crédito Ao criar uma máquina de estados para uma classe, o Delphi cria um State Attribute (atributo de estado) de forma automática. Normalmente o nome é algo parecido com State_1. No caso do nosso exemplo, alterei o nome desse atributo para Status. A modelagem dos estados e transições é bastante intuitiva. Basta arrastar os elementos a partir da Tool Palette para a área de desenho do modelo. Para criar Triggers, devemos clicar com o botão direito em uma área livre do modelo e selecionar Add>Trigger to Class. Criei as Triggers Analisar, Cancelar e Enviar, associando-os às respectivas transições, como na Figura 2. Na transição de Em Análise para Cancelado, configurei a propriedade Effect para MotivoCancelamento := Sem Credito no Object Inspector. Após todas essas modificações, na Figura 3 temos a nossa classe. Na Figura 3 podemos perceber que Triggers nada mais são que métodos. Esses métodos, quando chamados, irão causar a alteração 16 cd69.indb 16 2/12/2005 20:29:13

Delphi 2006 e Together O casamento tão esperado Renato Quedas Eu me lembro do dia em que soube que a Borland havia comprado a Togethersoft, passei a noite pensando nas possibilidades de ter recursos do Together agregados as nossas ferramentas de desenvolvimento. Acho que não preciso dizer que a primeira visão que tive foi de como o Delphi massacraria a concorrência se tivesse tais capacidades disponíveis para os seus desenvolvedores. Bom, logo soubemos que teríamos que esperar um tempo até que a equipe do Together trabalhasse em uma integração com o Delphi. Primeiro, veio a superfície de design para modelos de classe para o ECO I no Delphi 8 for.net, depois a visualização e navegação de código Win32 ou.net através de diagramas de classe no Delphi 2005. Mas em todos os eventos que fazíamos, os desenvolvedores seguiam fazendo a mesma pergunta: Quando teremos o Together for Delphi? É com grande prazer que digo que o tempo de espera acabou. O Together não só foi integrado ao Delphi como se tornou um feature presente em TODAS as edições do Delphi 2006. É isso mesmo, os desenvolvedores que utilizam desde o Delphi 2006 Professional até o Delphi 2006 Architect poderão utilizar todos os diagramas UML 1.5 e o famoso LiveSource para as linguagens Delphi (Win32 e.net) e C# (.NET). Neste artigo irei apresentar como todos os recursos do Together disponíveis no Delphi 2006 podem suportar o desenvolvimento de aplicações Win32 ou.net. Projetos de análise Uma das novas capacidades do Delphi 2006 é a criação de projetos de modelagem UML utilizando UML 1.5 ou UML 2.0, também conhecidos como projetos de design. Podemos considerar esses projetos como se fossem projetos de análise e como tal, não possuem nenhuma interação com código. A vantagem desses projetos é permitir que você utilize o Delphi 2006 já na fase de refinamento do escopo, mesmo que ainda não tenha decidido se o projeto vai ser implementado na plataforma Win32 ou.net. Uma vez que tenha definido qual plataforma, o Delphi 2006 pode transformar seu projeto de análise em um projeto de implementação em Delphi Win32, Delphi for.net ou C# (.NET). Para criar um novo projeto de design, selecione File>New>Other para acessar a caixa de diálogo New Items. Na lista de opções, selecione Design Projects e em seguida escolha UML 1.5 Design Projects, para criar projetos utilizando a versão 1.5 da UML ou UML 2.0 Design Projects para utilizar a versão mais atual da mesma. 20 cd69.indb 20 2/12/2005 20:29:23

Mais poder no BDS Desenvolvimento com C++ Adail Muniz Retamal Os usuários do BDS (Borland Developer Studio), agora na versão 4.0 (2006), contam com mais uma arma no já poderoso arsenal de linguagens e ferramentas: a personalidade C++ para Win32. Ao contrário da opinião comum, o número de desenvolvedores C/C++ ainda é bastante expressivo, principalmente em áreas como software embutido em equipamentos eletrônicos, jogos, comunicação com hardware, protocolos de comunicação e sistemas em tempo real, entre outras. Algumas características dessa linguagem, como sua sintaxe, a manipulação direta da memória, a utilização intensiva de ponteiros, a possibilidade de usar herança múltipla, entre outras, acabam por assustar aqueles que estão começando ou que estão acostumados com outras linguagens mais amigáveis. Por isso, um ambiente de desenvolvimento que auxilie a controlar essa complexidade é de extrema importância. C# e Java herdaram grande parte da sintaxe do C++, embora tenham excluído várias características consideradas perigosas, como os ponteiros e a herança múltipla. Só para lembrar aos mais antigos (ou para informar aos mais novos), o próprio Windows foi feito em C/C++. É por isso que quando usamos a API do Windows temos que passar parâmetros um tanto quanto estranhos, como strings terminadas com o caractere nulo (ASCII 0) e ponteiros para estruturas. E para os Delphianos, ao chamar uma DLL feita em C/C++, às vezes temos que lembrar de declarar as funções com o especificador cdecl, senão a passagem de parâmetros e a limpeza da pilha de chamada serão incompatíveis, e aí já viu, né? As novidades Para os programadores C/C++ há um mundo de novidades. Quem já era usuário do C++ Builder sentirá emoções semelhantes às dos usuários do Delphi 7 e anteriores, quando experimentaram o novo IDE, que oferece inúmeras funcionalidades para aumentar a produtividade e a segurança. Alguns destaques são: Code Completion: ao utilizar o operador -> para acessar membros de uma classe, o editor mostra uma lista com os possíveis símbolos. Também se pode invocar a lista a qualquer momento teclando Ctrl+Space; Code Folding: o editor possibilita ocultar linhas em regiões pré-definidas, como o corpo das funções, ou em regiões delimitadas pelo usuário, entre os símbolos #pragma region e #pragma end_region (Figura 1); Figura 1. O editor de código, mostrando o Code Completion e o Code Folding Refactoring: pode-se renomear um símbolo de forma segura, através do menu Refactor>Rename. As alterações podem ser visualizadas antes de serem aplicadas e até mesmo desfeitas; Painel de estrutura: para navegar no código através de uma árvore com as classes, funções, macros, includes etc; Histórico: cada arquivo possui seu próprio histórico de versões, que pode ser acessado pela aba History, na parte inferior do editor. Ali podemos comparar versões, voltar uma versão e copiar trechos. Se estiver usando o StarTeam, as versões do repositório também aparecem no histórico; Integração com CaliberRM e StarTeam: integre sua equipe de desenvolvimento através da gerência de requisitos e de configuração, garantindo melhor comunicação e entendimento, atribuição e acompanhamento de tarefas, atendimento de solicitações de alteração e rastreamento de defeitos, além de garantir a integridade dos artefatos produzidos (código, documentação etc.). Entre os diversos tipos de projetos possíveis (DLLs, objetos COM+, aplicações console, VCL etc.) vale a pena destacar: IntraWeb: criar aplicações para a Web em C++ nunca foi tão fácil e divertido! Toda a funcionalidade do poderoso framework IntraWeb agora à disposição da comunidade C++. Desenhe os formulários, codifique os eventos e pronto! 26 cd69.indb 26 2/12/2005 20:29:36

ASP.NET Desenvolvendo Web com o Delphi 2006 Andreano Lanusse No Delphi 2006, o desenvolvimento ASP.NET tornou-se muito fácil e com produtividade muito próxima do desenvolvimento desktop. A Borland adicionou importantes recursos na IDE do Delphi 2006 e também em assistentes e componentes, como veremos neste artigo. Gerenciador de Deploy Criar uma aplicação Web é muito simples, mas fazer o deploy envolve muitos passos. Desde o Delphi 2005, implementamos o deploy de aplicações Web, que consiste em fazer o upload de toda a aplicação direto para um site, via diretório ou FTP. No Delphi 2006, os assemblies que são referenciados pela aplicação passam a ser distribuídos também, isso facilitará ainda mais o deploy. Além disso, passa a ser possível incluir arquivos externos ao deploy, ou seja, o deploy não fica restrito aos arquivos do projeto (Figura 1). Editor HTML e Layout No Delphi 2005, o código HTML/ASPX era formatado automaticamente e ajustado constantemente pelo IDE. Uma novidade é que agora o novo editor preserva a formatação feita pelo desenvolvedor, incluindo tags específicas do usuário, formatação de atributos e fechamento automático das tags. Além disso, agora será possível especificar qual o layout default do seu IDE, que pode ser Grid Layout e Flow Layout. No menu Tools>Options>HTML/ASP.NET você pode especificar qual o layout default. DBWeb Controls Muitas são as novidades nos DBWeb Controls, que aumentam a produtividade no desenvolvimento de aplicações Web, tornando-se muito parecido com o desenvolvimento VCL. Algumas novidades: Novo wizard para criação de componentes DB Web; O evento AutoUpdateEvent é executado toda vez que uma alteração foi feita em um registro, com isso a atualização do servidor é automática; Suporte a campos agregados (Avg, Sum, Count, Min, Max); DBWebImage pode se conectar a um campo string; Locate suporta localização em campo específico; Em relações master/detail podemos configurar uma alteração e exclusão em cascata; Os dados em XML agora são carregados em design time, antes apenas os dados de banco de dados eram carregados. Além dessas melhorias, destaco também o suporte aprimorado a depuração de aplicações com o servidor Cassini. Figura 1. Deploy de aplicações ASP.NET Andreano Lanusse (andreano.lanusse@borland.com) é System Engineer da Borland Latin América, onde é membro do Delphi Team, especialista em InterBase há 10 anos, larga experiência em desenvolvimento de aplicações, é certificado Borland Instructor, Delphi, C++ Builder, JBuilder, Together, StarTeam, CaliberRM, MCP em SQL Server e Windows 2000. 28 cd69.indb 28 2/12/2005 20:29:43

Outras empre Novidades da VCL Adail Muniz Retamal GridPanel, FlowPanel, TrayIcon e controles com margens e transparência Mesmo com tantas novidades em diversas áreas (IDE,.NET, Web, banco de dados etc.), não poderíamos passar por alto um dos corações do Delphi: a nossa estimada Visual Component Library (VCL). Do alto de seus dez anos de existência, ela ainda promete muitas surpresas, conforme veremos neste artigo. Novos componentes visuais A versão 2006 do Delphi traz três novos componentes na Tool Palette: FlowPanel (categoria Additional); GridPanel (categoria Additional); TrayIcon (categoria Win32). Eles são os membros mais novos da família, fazendo companhia aos mais antigos e àqueles que chegaram nas versões do Delphi 8 e 2005, como o CategoryButtons, ButtonGroup, DockTabSet etc. Os novos painéis O tradicional Panel é um container visual para outros componentes. Dentro dele podemos posicionar um controle visual em qualquer lugar desejado. Em outras palavras, o posicionamento é absoluto (mas é claro, as coordenadas Top e Left do controle referem-se ao canto superior esquerdo do painel). Talvez inspirados em conceitos similares em Java, onde existe o chamado Layout Manager, que define como os controles serão distribuídos dentro de um container, podemos dizer que temos agora três tipos de layout managers: Panel : tipo absoluto, ou XY. Os componentes são colocados em posições fixas e precisas; FlowPanel : os componentes são colocados em seqüência, de acordo com a ordem definida (similar ao que ocorre nas páginas HTML sem o uso de tabelas ou estilos CSS). o O fluxo é determinado pela propriedade FlowStyle, que aceita uma das opções a seguir. Para entender bem a nomenclatura, os componentes começam a ser colocados na direção indicada pelo primeiro par (ex.: LeftRight). Quando não há mais espaço no painel, aí a direção a ser seguida é dada pelo segundo par (ex.: TopBottom): fsleftrighttopbottom: da esquerda para a direita, de cima para baixo (default); fsrightlefttopbottom: da direita para a esquerda, de cima para baixo; fsleftrightbottomtop: da esquerda para a direita, de baixo para cima; fsrightleftbottomtop: da direita para a esquerda, de baixo para cima; fstopbottomleftright: de cima para baixo, da esquerda para a direita; fsbottomtopleftright: de baixo para cima, da esquerda para a direita; fstopbottomrightleft: de cima para baixo, da direita para a esquerda; fsbottomtoprightleft: de baixo para cima, da direita para a esquerda. o Outra propriedade importante é a AutoWrap, quando possui o valor True, indica que o fluxo será quebrado para a outra direção quando não houver mais espaço no painel. Se for False, os componentes que não couberem ficarão invisíveis; o Um uso interessante para esse tipo de painel é na geração automática de formulários, onde os campos são definidos dinamicamente, talvez num banco de dados ou num arquivo. Dessa forma não precisamos nos preocupar com o posicionamento de cada campo. Veja na Figura 1 um exemplo de uso do FlowPanel. Figura 1. Exemplo de uso do TFlowPanel GridPanel : o painel é dividido em linhas e colunas, sendo que cada célula contém um componente (como a utilização de tabelas no HTML). o Os componentes são dispostos em ordem de linhas 0502F M A 30 O cd69.indb 30 2/12/2005 20:29:50

UDDI Fernando Vasconcelos Mendes - FernandoVM Parte IV - Analisando o cenário em funcionamento No artigo anterior estudamos a inclusão de informações em um registro UDDI, usando para isso os serviços UDDI do Windows Server 2003. Depois de entendido esse processo na prática, podemos partir agora para a conclusão da implementação de nosso cenário prático, estudando a UDDI SOAP API e codificando os elementos restantes. Vamos lá! A UDDI SOAP API Como já foi comentado ao longo desta série, todo serviço UDDI é obrigado a disponibilizar uma interface SOAP padrão para acesso programático, são as chamadas UDDI Inquiry API e UDDI Publish API. Neste artigo estaremos utilizando apenas a API de pesquisa, visto que a publicação já fizemos na parte III da série, usando a interface web disponibilizada pelo Windows Server 2003 para esse propósito. A UDDI Inquiry API é relativamente simples, sendo composta de algumas poucas mensagens cujas descrições resumidas podem ser encontradas a seguir: find_binding: Usada para localizar vinculações específicas dentro de serviço (businessservice) registrado, seu retorno é uma mensagem bindingdetail; find_business: Usada para localizar informações sobre provedores, seu retorno é uma mensagem businesslist; find_relatedbusinesses: Usada para localizar informações sobre provedores (businessentity) que são relacionados a uma unidade de negócio específica cuja chave é fornecida, seu retorno é uma mensagem relatedbusinesseslist; find_service: Usada para localizar serviços específicos de um dado provedor (businessentity) já registrado. Seu retorno é uma mensagem servicelist; find_tmodel: Usada para localizar informações sobre estruturas tmodel, ou seja, especificações abstratas de serviços de interesse da comunidade. Seu retorno é uma estrutura tmodellist; get_bindingdetail: Usada para obter detalhes completos sobre vinculações (bindingtemplate) de um dado conjunto de serviços requisitados. Seu retorno é uma mensagem bindingdetail; get_businessdetail: Usada para obter informações completas sobre provedores (businessentity), seu retorno é uma mensagem businessdetail; get_businessdetailext: Usada para obter informações estendidas sobre provedores (businessentity), seu retorno é uma mensagem businessdetailext; get_servicedetail: Usada para obter detalhes completos sobre um dado conjunto de serviços registrados, seu retorno é uma mensagem servicedetail; get_tmodeldetail: Usada para obter detalhes completos sobre um dado conjunto de tmodels registrados, seu retorno é uma mensagem tmodeldetail. Maiores detalhes sobre a especificação da UDDI SOAP API podem ser obtidos em www.uddi.org. Bom, para começarmos a desenvolver o restante de nosso cenário precisaremos decidir como faremos esse acesso ao servidor UDDI. Obviamente codificar manualmente os envelopes SOAP e enviá-los, assim como realizar o processo inverso para o recebimento da resposta, é uma opção, vejamos como exemplo a formatação da mensagem find_tmodel: <find_service [businesskey= uuid_key ] [maxrows= nn ] generic= 2.0 xmlns= urn:uddi-org:api_v2 > [<findqualifiers/>] [<name/> [<name/>] ] [<categorybag/>] [<tmodelbag/>] </find_service> Mesmo sabendo que essa é uma opção e que todas as mensagens da referida API são igualmente simples, podemos concluir com facilidade que essa não é a opção mais produtiva. O melhor caminho é buscarmos um framework que já faça esse trabalho repetitivo e de mais baixo nível para nós, de tal forma que possamos nos preocupar apenas com as regras de negócios envolvidas na lógica que queremos empregar. Obtendo o Microsoft UDDI.NET SDK 2.0 Beta 1 Posso dizer que existem vários frameworks para esse propósito, aqui usaremos o Microsoft UDDI.NET SDK 2.0 Beta 1 que pode ser obtido gratuita e rapidamente, visto que o arquivo tem menos de 200Kb, através do link: www.microsoft.com/downloads/details. aspx?displaylang=en&familyid=542991cf-9056-49fd-babf- 7FF3638EE6B1. A instalação do SDK é muito simples, basta darmos um duplo clique no arquivo que baixamos e a instalação irá iniciar. A seguir, na tela do 34 cd69.indb 34 2/12/2005 20:29:57

Padrões de Projeto Parte III Design Patterns Paulo Roberto Quicoli Novamente estamos aqui, agora com o último artigo desta série, que buscou levar a vocês uma introdução ao mundo dos padrões de projeto. Como mencionado na edição anterior, o artigo de hoje mostrará como os padrões estão classificados e alguns exemplos práticos. A gangue dos quatro (GoF - pessoas que catalogaram os padrões de projeto mais comuns), realizou um grande trabalho de pesquisa que resultou em uma classificação dos padrões em algumas categorias: Criacionais, Estruturais e Comportamentais. Nota: Como ficaria muito extensa a explicação e demonstração de cada padrão, demonstraremos apenas um padrão de cada classificação e nas referências do final do artigo maiores detalhes poderão ser encontrados. Criacionais Os padrões dessa categoria têm a característica de abstrair a instanciação e o processo de instanciação de objetos, de tal forma que um sistema pode não depender (saber) como são criados determinados objetos. Para conseguir essa independência e flexibilidade, os padrões criacionais encapsulam as classes concretas que existem. Nessa categoria existem cinco padrões mais comuns: Abstract Factory; Builder; Singleton; Prototype; Factory Method. Factory Method Fornece uma interface para criação de objetos, porém essa criação é determinada por suas subclasses. Vamos a um exemplo prático. Podemos utilizar esse padrão para abstrair a criação de formulários de nossos sistemas, para isso inicie um novo projeto no Delphi 7 (você pode utilizar também o Delphi 2005/2006) e organize o formulário principal como é exibido na Figura 1. Agora adicione mais três formulários e salve o projeto, podendo-se deixar os nomes padrão. Vamos agora criar nossa classe que usará o padrão Factory Method. Crie uma nova unit no projeto e a salve como FormFactoryU.pas e adicione a classe da Listagem 1. Adicione também uma função pública, da qual nossa fábrica (Factory) de formulários será acessada: function FormFactory: TFormFactory; Listagem 1. Classe Factory uses Classes, Forms; Figura 1. Formulário principal type TFormFactory = class private FList: TStrings; public constructor Create; destructor Destroy; override; function CreateForm( const aformname: string): TForm; procedure RegisterForm(const aformname: string; aformclass: TComponentClass); end; Nossa fábrica criará formulários por seus nomes, através do método CreateForm. Cada formulário que será criado deve registrar-se em nossa fábrica, através do método RegisterForm, para que ela possa instanciá-lo quando for necessário. Veja como o formulário 2 é registrado na Listagem 2. Observe que incluímos a unit de nossa fábrica e a utilizamos na seção initialization da unit formulário. Faça o mesmo para os outros formulários passando como parâmetro seus respectivos nomes e classes. Nota: A seção initialization é uma seção opcional na estrutura de uma unit. Os códigos contidos nela são executados na inicialização do programa e na ordem que estão definidos nele. 40 cd69.indb 40 2/12/2005 20:30:06

API Hooking Michael Benford Parte II - Trocando informações entre processos com IPC No artigo anterior, vimos os conceitos iniciais sobre API Hooking, como funciona, os métodos existentes, regras de hooking etc. Dentre essas regras, havia uma que proibia o uso de recursos da VCL dentro de um callback. Isso pode ser tornar um grande problema, limitando muito nossa criatividade ao se trabalhar com hooks. Exibir um simples formulário para o usuário torna-se uma tarefa impossível. Felizmente, somos programadores Delphi e como sempre há uma saída. E se chama IPC (Inter Process Communication). O truque O leitor deve estar pensando como o IPC pode nos ajudar a resolver o problema apresentado. De fato, continua sendo proibido usar VCL dentro da DLL. O truque consiste em mandar uma mensagem para outro processo, livre de regras e impedimentos e pedir para ele fazer o que queremos. A forma mais simples de trocar mensagens entre processos no Windows é através da API SendMessage. Porém, existem casos em que API s interativas (veja quadro), como essa, não são permitidas dentro de um callback (veja o tópico Regras a serem obedecidas, no artigo anterior). Portanto, ao menos que você tenha absoluta certeza de que sua DLL não irá hookar nenhuma API ilegal, a melhor saída é usar IPC. Nota: IPC leva vantagem sobre SendMessage também em outra situação: aplicações console. Nesse tipo de aplicação não se pode usar SendMessage, simplesmente porque ela não funciona. API s interativas API s interativas são aqueles que interagem diretamente com o usuário, através de mensagens na tela, gráficos etc. Já API s não interativas são exatamente o contrário: executam processamento nos bastidores do sistema operacional, sem se manifestar visualmente. Como funciona A comunicação entre processos com IPC consiste basicamente em mandar uma mensagem para um endereço específico, de dentro de um processo, e fazer outro acessar esse mesmo endereço para fazer a leitura. É claro, que para isso funcionar de fato muita coisa deve ser feita, da mesma forma que com as técnicas de API Hooking. Mas, novamente, não precisamos nos preocupar com isso, pois já o fizeram por nós. BmsAPIHook, mais uma vez A mesma biblioteca do colega Bruno Martins Stuani que usamos para injetar DLL em processos e hookar suas API s (veja edição anterior) nos fornece tudo o que é necessário para cria e usar IPC. Há apenas três funções que fazem todo o trabalho sujo : function BmsCriaSecaoIpc(idSecao: PChar; Callback: TBmsIpcCallback): Boolean; function BmsDestroiSecaoIpc(idSecao: PChar): Boolean; function BmsComunicaIpc(idSecao: PChar; Buffer: Pointer; Tamanho: Integer; Resposta: Pointer; TamResposta: Integer): Boolean; Vejamos os parâmetros disponíveis, começando pela BmsCria- SecaoIPC: idsecao: Nome da seção servirá para fazer referência às mensagens. Deve ser único no sistema operacional; Callback: Ponteiro para uma estrutura do tipo TBmsIpc- Callback. A estrutura citada anteriormente é definida com o seguinte código: TBmsIpcCallback = procedure(buffer: Pointer; TamBuffer: Integer; Resposta: Pointer; TamResposta: Integer;); stdcall; Para especificar esse último parâmetro, deve ser criada uma procedure exatamente igual à estrutura citada e passá-la para a função por referência. Veja um exemplo: procedure IPC_Callback(Buffer: Pointer; TamBuffer: Integer; Resposta: Pointer; TamResposta: Integer); stdcall; begin... end;... bmscriasecaoipc( MinhaSecao, @IPC Callback); Nota: Não se esqueça da palavra-reservada stdcall no final da declaração da procedure. A próxima função é bmsdestroisecaoipc. Como o nome sugere, ela serve para liberar uma seção criada pela função anterior. Edição 68 - ClubeDelphi 45 cd69.indb 45 2/12/2005 20:30:12

Coluna Borland Delphi RoadMap e o futuro do Delphi Andreano Lanusse Prezados Delpheiros, o tema da coluna Borland desta edição com certeza é de interesse geral. Todos sempre nos perguntam sobre o futuro do Delphi. Estamos agora em fase de mudança no desenvolvimento, da mesma forma como há 9 anos mudamos de 16 bits com o Windows 3.1 e fomos para o 32 bits com o Windows 95. Como já falamos anteriormente aqui na coluna, a migração agora é para a plataforma.net. A Borland durante todo esse período forneceu aos seus desenvolvedores toda a infra-estrutura e compatibilidade para que vocês conseguissem evoluir seus aplicativos, e dessa vez não será diferente. A evolução para a plataforma.net tornou-se transparente através da VCL.NET e fornecemos total suporte a Windows Forms e a ASP.NET. Tudo isso, preservando o investimento e conhecimento adquirido ao longo do tempo. O Delphi 2006, parte da suíte Borland Developer Studio, que inclui C++ Builder e C# Builder, revoluciona mais uma vez. O casamento tão esperado entre o Together e o Delphi aconteceu. O ECO mostra uma evolução fantástica em sua terceira versão e outras inúmeras novidades foram incorporadas. O que podemos melhorar? O que falta? O que a comunidade pede? Podemos associar a palavra RoadMap a planejamento estratégico: isso quer dizer que esse RoadMap pode mudar, assim como um planejamento estratégico muda, pois constantemente é revisado. Estamos no mundo da tecnologia em que dinamismo é constante. O.NET Framework 2.0 acaba de ser lançado e o Delphi 2006 não poderia ser lançado com suporte a uma tecnologia que não estava pronta. Agora, vamos acelerar os trabalhos para que o Delphi tenha todo o suporte. Isso mesmo!! Acelerar os trabalhos, pois esses já foram iniciados. A VCL terá suporte a.net 2.0, pois é nosso compromisso manter a evolução dos desenvolvedores Delphi. E o suporte a.net Compact Framework? No Delphi 2005 lançamos o primeiro preview da tecnologia, no Delphi 2006 unificamos o compilador e alguns novos recursos, mas ainda falta um pouco. Então optamos por não fornecer apenas um desenvolvimento igual aos outros para.net CF, mas criar uma VCL para.net CF, ou seja, a facilidade para o desenvolvimento desktop com a VCL de hoje irá para o desenvolvimento móvel. Pretendemos disponibilizar essas novidades ainda para o ano de 2006. Ainda não está definido qual será o modelo de atualização e comercialização, que merece ser analisado com muito carinho, mas assim que estiver vocês ficarão sabendo. E em 2007, o que mais pretendemos? O novo sistema operacional Windows Vista traz muitas novidades na sua infra-estrutura. E a VCL dará suporte a essa nova infra-estrutura! E o que isso quer dizer? Mova-se para o futuro sem esquecer o Passado. E lá em 2008 suporte a Win64 para Delphi e C++. O Delphi é feito com a opinião dos desenvolvedores. Se você tem alguma sugestão de novos recursos, poderá fazê-la em qc.borland. com ou através do seu Delphi 2006 em menu Tools>Quality Central. Se preferir também estou à disposição para receber seu e-mail no endereço: andreano.lanusse@borland.com. Ajudem a fazer um Delphi ainda melhor! Abraços e até a próxima. Links Blogs.borland.com/andreanolanusse Esse é o link para o meu blog, onde disponibilizo diversas informações, principalmente Delphi. Blogs.borland.com Blog dos funcionários Borland, muitos artigos e idéias interessantes. bdn.borland.com Site de relacionamento da Borland com os desenvolvedores, diversos artigos e tutoriais www.borland.com.br Site da Borland Latin America, todas as informações sobre os produtos Borland Andreano Lanusse (andreano.lanusse@borland.com ou andreanobr@yahoo.com) é System Engineer da Borland Latin América, onde é membro do Delphi Team, especialista em InterBase há 10 anos, larga experiência em desenvolvimento de aplicações, é certificado Borland Instructor, Delphi, C++ Builder, JBuilder, Together, StarTeam, CaliberRM, MCP em SQL Server e Windows 2000. 50 cd69.indb 50 2/12/2005 20:30:25