Fórum Delphi 2009 Trial - Primeiras Impressões #363809

12/09/2008

0

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

Responder

Posts

12/09/2008

Álison Bissoli

é 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


Responder

Gostei + 0

12/09/2008

Luiz Henrique

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+


Responder

Gostei + 0

12/09/2008

Luiz Henrique

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

acho que é isto ...t+


Responder

Gostei + 0

12/09/2008

Thiago Vidal

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.


Responder

Gostei + 0

12/09/2008

Adriano Santos

Muito bom galera,

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


Responder

Gostei + 0

12/09/2008

Andreano

[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


Responder

Gostei + 0

12/09/2008

Lnunes

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.


Responder

Gostei + 0

12/09/2008

Adriano Santos

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.


Responder

Gostei + 0

12/09/2008

Lnunes

Obrigado pela ajuda.


Responder

Gostei + 0

12/09/2008

Adriano Santos

Obrigado pela ajuda.

As ordens.


Responder

Gostei + 0

23/09/2008

Seven

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.


Responder

Gostei + 0

23/09/2008

Wdrocha

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...


Responder

Gostei + 0

24/09/2008

Zaza

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.


Responder

Gostei + 0

02/10/2008

Marcosalex

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.


Responder

Gostei + 0

09/10/2008

Seven

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar