Delphi 2009 Trial - Primeiras Impressões

Delphi

12/09/2008

Pessoal, estou criando este tópico, para discutirmos as primeiras impressões sobre o novo Delphi 2009, para quem ainda não baixou, pode fazê-lo através do endereço: [url]http://cc.codegear.com/free/delphi[/url].

Primeiramente, a cara da IDE, não mudou muito, o que é bom, para quem já estava acostumado com as versões anteriores. Agora existe uma caixa de testo na Tool Palete, que pode ser acessada com Ctrl+Alt+P, para procurar os compontentes, uma melhor significativa, pois antes o foco ficava meio perdido.

As configurações de build, parecem mesmo muito mais organizadas, o que era a minha principal reclamação com a versão anterior. Realmente, eles deram um talento nessa parte, vale conferir, ainda não testei como os builds de linha de comando do msbuild funcionam, mas parece que ficou bem melhor.

Infelizmente, por algum motivo não consigo acessar o help, não sei se houve algum probema na instalação, ou se o download deve ser feito em separado, vou pesquisar. Por causa disso, não consegui testar o recurso de coleções [i:f0fb0443bd]generics[/i:f0fb0443bd].

Tive minha primeira pequena decepção com os métodos anônimos, que pelo que entendi, não podem ser declarados como ´of object´ e portanto, não podem ser usados como eventos, ou seja, o código abaixo, NÃO funciona:

procedure TForm1.FormCreate(Sender: TObject);
begin
  OnShow := procedure(Sender: TObject)
  begin
    MessageDlg(´Teste´, mtInformation, [mbOk], 0);
  end;
end;


Ou seja, eu queria, no OnCreate do form, definir uma procedure anônima para o evento OnShow, mas acontece o erro: [u:f0fb0443bd]´Incompatible types: ´method pointer and regular procedure´[/u:f0fb0443bd] ou seja, faltou o ´of object´. Não vejo muita utilidade para métodos anônimos, sem ser esta, mas só quando conseguir ver o help poderei falar com certeza.

Em relação à VCL, por enquanto muitas mudanças bem-vindas. Sendo o tipo ´string´ UTF16 por padrão, pode-se esperar um aumento significativo no consumo de memória (que já não era pequeno) nos aplicativos que façam uso de muitos componentes da VCL, pois cada string irá ocupar o dobro do espaço, mas isso só deve ser problema em máquinas antigas. Eu imaginava que assim como quando o tipo string mudou de ShortString para AnsiString (se não me engano no Delphi 3) e ficou uma diretiva de compilação para o comportamento antigo; fosse ficar alguma configuração para escolher se o tipo ´string´ será AnsiString ou WideString, porém ainda não encontrei.

Acho que o grande avanço desta versão, é em relação ao acesso à dados. Estou bastante empolgado com essa história de o DataSnap não depender mais de COM, o que pode significar que aplicativos multi-camadas rodem sem problemas no linux com WINE, já que o WINE nao funciona muito bem com o COM. Sem falar na performance, que deve ter um aumento significativo. Vou fazer mais testes, e volto a falar sobre os resultados.

Bom, por enquanto é isso, vou ficar o final de semana me divertindo aqui com o Delphi 2009, e vou atualizando o tópico. Espero que outras pessoas também façam download da versão trial e deixem aqui a sua opinião, principalmente em relação à parte web, que eu não costumo utilizar, portanto, nem instalei.

Grande abraço à todos.


Thiago Vidal

Thiago Vidal

Curtidas 0

Respostas

Álison Bissoli

Álison Bissoli

12/09/2008

é bom parar de oba oba e ter as visões críticas mesmo...
vou gostar de saber o resultado das suas brincadeiras do fim de semana.

um abraço


GOSTEI 0
Luiz Henrique

Luiz Henrique

12/09/2008

Boa Tarde, Eng.Thiago Vidal, tudo blz

Tomei a liberdade de completar o exemplo do nosso amigo delphiniano, Leonel Togniolli sobre o assunto, http://www.techtips.com.br/programacao/delphi/linguagem-delphi/anonymous-methods-no-delphi-2009/.
Posto aqui um exemplo para você não ficar decepcionado muito tempo.

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TComparaString = reference to function(const S1, S2: string): Integer;

TLista = class

private
FItens: TStringList;

published

public
constructor Create;
destructor Destroy; override;

procedure Adiciona(Texto: String);
function Ordena(Compara: TComparaString): integer;
procedure MostraLista;
procedure Troca(Iten1, Iten2: Integer);

property Itens: TStringList read FItens write FItens;
end;

TForm3 = class(TForm)
Memo1: TMemo;

procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.FormCreate(Sender: TObject);
var
Lista: TLista;

begin
Form3.Memo1.Lines.Clear;

Lista := TLista.Create;

try
Lista.Adiciona(´Um´);
Lista.Adiciona(´Dois´);
Lista.Adiciona(´Tres´);
Lista.Adiciona(´Quatro´);
Lista.Adiciona(´Cinco´);
Lista.Ordena(function(const S1, S2: string): Integer
begin
Result := CompareStr(S1, S2);
end);
Lista.MostraLista; //Crescente

Lista.Ordena(function(const S1, S2: string): Integer
begin
Result := CompareStr(S2, S1);
end);
Lista.MostraLista; //Decrescente

Lista.Ordena(function(const S1, S2: string): Integer
begin
Result := Length(S1) - Length(S2);
if Result = 0 then
Result := CompareStr(S1, S2);
end);
Lista.MostraLista; //Tamanho do item
finally
Lista.Free;
end;

end;

{ TLista }

procedure TLista.Adiciona(Texto: String);
begin
FItens.Add(Texto);
end;

constructor TLista.Create;
begin
FItens:= TStringList.Create;
end;

destructor TLista.Destroy;
begin
SysUtils.FreeAndNil(FItens);
inherited;
end;

procedure TLista.MostraLista;
var
i: Integer;

begin
for i:= 0 to FItens.Count -1 do
Form3.Memo1.Lines.Add(FItens[i]);

Form3.Memo1.Lines.Add(´´);
end;

function TLista.Ordena(Compara: TComparaString): integer;
var
i, j: Integer;
begin
for i := 0 to FItens.Count - 2 do
for j := FItens.Count - 1 downto i + 1 do
if Compara(FItens[j], FItens[i]) < 0 then
Troca(i, j);

end;

procedure TLista.Troca(Iten1, Iten2: Integer);
var
s: String;

begin
s:= FItens[Iten1];
FItens[Iten1]:= FItens[Iten2];
FItens[Iten2]:= s;
end;

end.

Espero que ajuda, T+


GOSTEI 0
Luiz Henrique

Luiz Henrique

12/09/2008

Desculpe, o exemplo é uma Aplicacao Comum, VCL forms Application,
e tem somente um Memo no form

acho que é isto ...t+


GOSTEI 0
Thiago Vidal

Thiago Vidal

12/09/2008

Cara, vc não vai acreditar, mas eu tava justamente fazendo uma classe de lista ordenada parecidíssima com essa que vc indicou, mas eu fiz utilizando generics.

Segue a interface da classe:
type
  TCompareMethod<T> = reference to function(Arg1, Arg2: T): Integer;

  TSortedList<T> = class
  private
    FCount: Integer;
    FCompare: TCompareMethod<T>;
    List: array of T;
    function GetItem(Index: Integer): T;
    procedure Grow;
  public
    constructor Create(CompareMethod: TCompareMethod<T>);
    destructor Destroy; override;
    procedure Add(Item: T);
    procedure Delete(Item: T);
    property Items[Index: Integer]: T read GetItem; default;
    property Count: Integer read FCount;
  end;


Assim, para fazer uma lista ordenada com strings, voce usa:
procedure Teste;
var
  L: TSortedList<string>;
begin
  L := TSortedList<string>.Create(function(Arg1, Arg2: string): Integer
  begin
    Result := AnsiCompareText(Arg1, Arg2);
  end);
  ...
  finally
    L.Free;
  end;
end;


Ou para fazer uma lista ordenada de Inteiros:
procedure Teste;
var
  L: TSortedList<Integer>;
begin
  L := TSortedList<Integer>.Create(function(Arg1, Arg2: Integer): Integer
  begin
    Result := Sign(Arg1 - Arg2);
  end);
  ...
  finally
    L.Free;
  end;
end;


E o mesmo serve para Smallints, Chars, e até records ou objetos, bastando trocar o tipo que fica entre [u:dcf8979f92]<>[/u:dcf8979f92].

Ou seja, chega de ter um milhao de classes herdando de TCollection ou de TObjectList, agora vc pode ter apenas uma TCollection<T> ou TList<T> ou TStack<T>, e usar para ordenar qualquer tipo de dados.


GOSTEI 0
Adriano Santos

Adriano Santos

12/09/2008

Muito bom galera,

Estou observando de perto esse tópico.
Vamos nos falando então, abs.


GOSTEI 0
Andreano

Andreano

12/09/2008

[quote:1c5d4e34b1=´Eng. Thiago Vidal´]

Tive minha primeira pequena decepção com os métodos anônimos, que pelo que entendi, não podem ser declarados como ´of object´ e portanto, não podem ser usados como eventos, ou seja, o código abaixo, NÃO funciona:

[/quote:1c5d4e34b1]

Thiago no meu blog tem uma explicação muito clara para isso:
http://blogs.codegear.com/andreanolanusse/2008/07/17/tiburon-anonymous-methods/#comment-3433

Está paracendo que você quer sair mudando tudo para AM e não é essa a idéia, em breve vou disponibilizar alguns exemplos.

Em relação à VCL, por enquanto muitas mudanças bem-vindas. Sendo o tipo ´string´ UTF16 por padrão, pode-se esperar um aumento significativo no consumo de memória (que já não era pequeno) nos aplicativos que façam uso de muitos componentes da VCL, pois cada string irá ocupar o dobro do espaço, mas isso só deve ser problema em máquinas antigas. Eu imaginava que assim como quando o tipo string mudou de ShortString para AnsiString (se não me engano no Delphi 3) e ficou uma diretiva de compilação para o comportamento antigo; fosse ficar alguma configuração para escolher se o tipo ´string´ será AnsiString ou WideString, porém ainda não encontrei.


Não é bem assim, você pode continar declarando o tipo AnsiString, mas se você tem planos de ter sua aplicação fora do Brasil, o ideal é o String.

[]´s
Andreano Lanusse
Embarcadero Technologies


GOSTEI 0
Lnunes

Lnunes

12/09/2008

Baixei a versão trial do delphi 2009, contudo não estou conseguindo instalar pois ele está pedindo um serial.


Alguém tem o serial para que eu possa testar o delphi 2009.


Desde já agradeço a atenção de todos.


GOSTEI 0
Adriano Santos

Adriano Santos

12/09/2008

Na mesma tela em que você clicar em Download Now, nem um botão chamado Send Activation. Clique nele.

O serial será enviado para seu e-mail cadastrado no site da CodeGear.


GOSTEI 0
Lnunes

Lnunes

12/09/2008

Obrigado pela ajuda.


GOSTEI 0
Adriano Santos

Adriano Santos

12/09/2008

Obrigado pela ajuda.

As ordens.


GOSTEI 0
Seven

Seven

12/09/2008

Parabens pelo TÓPICO.

hoje desenvolvo com DELPHI 7.
Porém, gostaria de adiquirir uma licença da nova versão. Pelo que ouvi falar, não terei o que temer.
Meu objetivo não é trabalhar com Sistemas para WEB (pelo menos até os proximos anos).

Gostaria da opnião de vocês sobre qual versão adiquirir.
Tambem ví que os preços estão bem ´salgados´, mas se queremos ser profissionais, temos que trabalhar da forma mais correta possível.

Delphi 2009 Architect - $3,499.00
Delphi 2009 Professional - $899.00
Delphi 2009 Enterprise - $1,999.00
Delphi C++Builder 2009 Bundle Architect - $3,899.00

não faço a mínima idéia de qual adiquirir (bem que poderia ser a PROFESIONAL !rsrs).

Resumindo: hoje tenho sistemas de controle de estoque / vendas ... que rodam em maquinas WINDOWS XP com servidores LINUX ou ESTAÇÕES XP e SERVIDORES WINDOWS 2003), e até mesmo 2 computadores sendo que o servidor é usado para armazenar o banco de dados e rodar o sistema.
Percebi que o sistema as vezes acontece alguns bug´s (nada que seja considerado uma tragédia, mas incomoda). Usando esta nova ferramenta, isso acabaria, certo? tanto para ambiente 32 bits como 64?

descupem pela quantidade de dúvidas, mas acredito que esse tópico possa ajudar muita gente, assim como a mim.

abraço a todos,
e que o delphi continue.


GOSTEI 0
Wdrocha

Wdrocha

12/09/2008

Aew pessoal....a cara da IDE realmente não mudou...melhoraram algumas coisas....

mas o q mais me chamou a atenção...foram as melhoras nos componentes....e tah mais voltado a orientação a objetos....tah mt show...

Qto mais mexo mais gosto dessa versão q sem dúvida veio pra calar a boca d pessoas q gostam d gerar polêmicas e discussões sem fundamentos....

Essa é a prova q o Delphi vai continuar vivo por mt tempo....e se continuar assim...com mais melhoras...logo a moda daquela linguagem acho q é Java o nome....rsrsrs.....vai logo passar..pq não passa d moda e propaganda barata....

Viva o Delphi 2009!!!!!!!!!!!!!!!

parabéns ao pessoal da CodeGear....


Vou continuar me divertindo e indo mais afundo....tah mt bom....


Flw...


GOSTEI 0
Zaza

Zaza

12/09/2008

Eu uso delphi desde 1996

Desenvolvo programas para windows e linux. Quando saiu o kylix, abracei a ferramenta. Só que a Borland descontinuou o kylix. Eu só vou adquirir um novo delphi quando a embarcadero disponibilizar pelo menos um compilador do delphi pro linux. Não precisa criar um IDE pro linux, já que isso é muito trabalhoso. Mas que criem um compilador para gerar os executaveis pro linux tambem.


GOSTEI 0
Marcosalex

Marcosalex

12/09/2008

Parabens pelo TÓPICO. hoje desenvolvo com DELPHI 7. Porém, gostaria de adiquirir uma licença da nova versão. Pelo que ouvi falar, não terei o que temer. Meu objetivo não é trabalhar com Sistemas para WEB (pelo menos até os proximos anos). Gostaria da opnião de vocês sobre qual versão adiquirir. Tambem ví que os preços estão bem ´salgados´, mas se queremos ser profissionais, temos que trabalhar da forma mais correta possível. Delphi 2009 Architect - $3,499.00 Delphi 2009 Professional - $899.00 Delphi 2009 Enterprise - $1,999.00 Delphi C++Builder 2009 Bundle Architect - $3,899.00 .


Se você tem o Delphi 7, pode comprar a licença de upgrade, que é bem mais barata.


GOSTEI 0
Seven

Seven

12/09/2008

Valeu Marcos,

mas pra continuar trabalhando da mesma forma que trabalho hoje (SISTEMAS DESKTOP) , qual seria a melhor opção,
hoje uso ENTERPRISE e me atende perfeitamente,

gostaria de entender a diferença entre ENTERPRISE, PROFESSIONAL e ARCHITECT.


GOSTEI 0
Eleganced

Eleganced

12/09/2008

Espero que a edição 2009 seja mais intuitiva e que os objetos mudem de lugar. O Estilo ´Guia´ da versão 06 era muito melhor do que a colocação do 2007.

Aguardo com ansiedade.


GOSTEI 0
Marlonnardi

Marlonnardi

12/09/2008

Bom dia Pessoal, estou acompanho o tópico, instalei o Delphi 2009 e também gostei muito! tem muitos recursos novos, sua IDE ficou mais amigavel e rapida de trablhar, percebi que o componente Timagem possui agora suporte a imagem .PNG que antes nao tinha. O Delphi 2009 ficou muito dez.


Eu só não estou utilizando o Delphi 2009 por que todas as minhas aplicações usam o Fortes Report 2007, sendo a mesma não compativel com a versão do Delphi 2009.

se alguem do forum souber de alguma novidade do Fortes Report compativel com o Delphi 2009, por favor postem aqui.

abrcss a toda comunidade Delphi...


GOSTEI 0
Sergiowilson.sp

Sergiowilson.sp

12/09/2008

Boa Noite a todos, baixei recentemente o trial do delphi2009 e estou com problemas ao tentar executar os projetos de demonstração. Ao teclar F9 estou tendo o seguinte erro: [DCC Fatal Error] WordPad.dpr(5): F2051 Unit GraphUtil was compiled with a different version of Zlib.TZDecompressionStream

Até agora não pude avaliá-lo devido a esse problema.

Alguém já passou por esse problema e consegiu resolvê-lo?


:?:


GOSTEI 0
Marcosalex

Marcosalex

12/09/2008

Eu só não estou utilizando o Delphi 2009 por que todas as minhas aplicações usam o Fortes Report 2007, sendo a mesma não compativel com a versão do Delphi 2009. se alguem do forum souber de alguma novidade do Fortes Report compativel com o Delphi 2009, por favor postem aqui. abrcss a toda comunidade Delphi...


Cara, alterei o fonte do Fortes pra aceitar o Delphi 2009. Manda uma mensagem em PVT que te envio.


GOSTEI 0
POSTAR