Delphi XE5 Update 2 e C++Builder com suporte a iOS!!!

A segunda atualização para o RAD Studio XE5 foi liberada ontem, incluindo uma atualização significativa no lado Delphi, e também suporte ao desenvolvimento para iOS no C++ Builder.

O segundo update do RAD Studio XE5 foi liberado ontem, incluindo uma atualização significativa no Delphi e também apoio ao desenvolvimento iOS para C++ Builder. O update 2 é livre para usuários XE5 registrados, e agora os desenvolvedores de C++ Builder podem começar a utilizar o suporte para iOS imediatamente.

Desenvolvedores Delphi vão ter uma atualização com muitas correções e algumas novidades que iremos detalhar nos próximos artigos, especialmente a compilação e debug utilizando o Mobile Preview!

Informações e links para download:

– Download do Update 2: http://cc.embarcadero.com/item/29662. Também existe a opção de instalação completa através da ISO.

– Detalhes deste Release: http://goo.gl/8enb5a

– Lista de todas as correções: http://edn.embarcadero.com/article/43522

– Novas features (leitura obrigatória!): http://goo.gl/4D35gq

–  C++ for iOS: http://goo.gl/pb857h

Update 1 do Delphi XE5, C++Builder XE5 e RAD Studio XE5 disponível!

O Update 1 do Delphi XE5, C++Builder XE5 e RAD Studio XE5 está disponível para download.

Links para download

Você pode baixar apenas o patch de atualização ou um novo ISO completo:

  • Update 1 installer (atualiza uma instalação existente do Delphi XE5, C++Builder XE5 ou RAD Studio XE5)
  • ISO with Update 1 (instalador completo do Delphi XE5 e C++Builder XE5, já incluindo o Update 1)

Lista de correções

Você pode encontrar a lista das correções neste link Fix list for Update 1 for RAD Studio, Delphi and C++Builder XE5 (esta lista refere-se aos erros reportados pelos usuários)

Notas desta release

Todos os demais detalhes referente a esta atualização você pode encontrar aqui: Release notes and install instructions for Update 1

Novos Recursos do RAD Studio XE5

Ok, acredito que a esta altura você já saiba que o Delphi XE5 (com suporte para Android) encontra-se disponível para download. Neste artigo vamos destacar as inovações mais relevantes desta versão – provavelmente a mais esperada dos últimos anos!

Download e Instalação

Iniciando pelo download do produto, se você pretende baixar um trial de avaliação, oferecemos três alternativas:

1- Instalação sob demanda (você baixa o setup e o restante é baixando enquanto você instala o produto): http://goo.gl/WXeH8c;

2- Download do ISO contendo o RAD Studio XE5 completo (Delphi, C++ Builder, HTML5 Builder): http://goo.gl/GkDDsc;

3- Instant Trial, o mais interessante de todos, onde não é necessário instalar o produto. O client do AppWave será configurado em sua máquina e a imagem do produto baixada via streaming e executada quando pronta. A partir da segunda execução o produto estará em sua tela em segundos! http://goo.gl/ZxliqQ;

obs: se você é um usuário com manutenção ativa, provavelmente já recebeu um e-mail com todos os detalhes e links para download.

Novos Recursos

Como ponto de partida, recomendo a documentação on line do produto neste endereço http://goo.gl/AMW0pu.

Para cada versão existe uma página com tudo o que há de novo em detalhes: http://goo.gl/kgf7dJ.

Vamos a lista principal:

– O suporte a Android configura-se na novidade mais importante desta versão. Neste link você tem tudo o que precisa para iniciar com ambos (iOS e Android): http://goo.gl/UZ3Lt6;

– Suporte para iOS 7 (a ser liberado logo após o anúncio oficial da Apple nos próximos dias);

– Novo REST Client Library para acesso (muito) facilitado a serviços REST;

REST Debugger para explorar serviços a serem consumidos;

FireDAC agora integrado ao instalador: ocorreram alguns refactorings de classe com relação a versão que acompanhava o XE3 e XE4, porém a documentação traz um howto de como migrar, com scripts e tudo: http://goo.gl/x2GO6A;

MacInCloud integrado na IDE: http://goo.gl/zeL68i;

– Novos forms designers para Android e também dispositivos customizáveis: http://goo.gl/B4rOGM;

IDE Insight remodelado: http://goo.gl/BvwggK;

– Novos controles para Mobile para Notification, Search automático no TListView, Swipe to Delete no TListBox e TListView, e mais: http://goo.gl/ta6xSi;

Plataformas

Portanto, a partir de agora suportamos – de maneira NATIVA e otimizada – as seguintes plataformas:

* 32-bit Windows
* 64-bit Windows
* 32-bit OS X
* iOS Simulator (Intel)
* iOS (ARM)
* Android (ARM)

Especificamente para Android (a bola da vez) estas são as versões suportadas:

* JellyBean (Android 4.1.x, 4.2.x, 4.3.x)
* Ice Cream Sandwich (Android 4.0.3 and 4.0.4)
* Gingerbread (Android 2.3.3 – 2.3.7)

Você pode observar os detalhes para todas as plataformas neste link: http://goo.gl/Gwme01.

Artigos Adicionais

Temos uma avalanche de artigos partindo de todos os MVPs e nosso pessoal de R&D por todo o mundo, vou relacionar abaixo alguns interessantes:

Recados Importantes!

=> Convite para o Webinar sobre Android e iOS com Delphi no próximo dia 17: http://embt.co/1e71mlY

=> Inscrições abertas para o Delphi Conference, venha conhecer e falar com os maiores especialistas em Delphi e C++ Builder da atualidade, incluindo presenças internacionais: http://embarcaderoconference.com.br/

É isso, no próximo artigo pretendo fazer um FAQ sobre diversas perguntas que estamos recebendo por mídias sociais e também e-mails. Abraços, bons projetos, bons negócios, e até o próximo!

Lançamento Oficial do Delphi for Android!

É com muito entusiasmo que anunciamos a disponibilidade imediata do Delphi for Android!

Trata-se – provavelmente – da versão mais aguardada do Delphi desde seu lançamento, portanto estamos diante de um dia histórico para o produto e também para a Embarcadero.

Abaixo alguns recursos disponíveis, trial, exemplos e tudo o que você precisa para começar a atender a demanda de seus clientes por aplicações móveis em iOS e Android imediatamente:

=> Visão Geral do Delphi XE5 – embt.co/17oChNr

=> Visão Geral do RAD Studio XE5 – embt.co/17WZEKH

=> Um único código fonte, um único time – http://embt.co/1aAPnMg

=> RAD Studio e Android – http://embt.co/18NRqXF

=> Delphi e Android – http://embt.co/1aARaAL

=> Aplicações Realmente Nativas – http://embt.co/15P3fKZ

=> Anúncio Oficial para a Imprensa (em português): http://www.embarcadero.com/br/press-releases/embarcadero-launches-rad-studio-xe5-with-android-and-ios-support

=> Uma pesquisa sobre a demanda por desenvolvimento móvel (em português): http://www.embarcadero.com/br/press-releases/embarcadero-mobile-app-development-survey

=> Iniciando com o desenvolvimento móvel para Android: http://docwiki.embarcadero.com/RADStudio/XE5/en/Android_Mobile_Application_Development

=> Convite para o Webinar sobre Android e iOS com Delphi no próximo dia 17: http://embt.co/1e71mlY

Delphi for Android: Primeiras Informações!

O Delphi para Android está em fase beta e o progresso tem se mostrado incrível. Estou tomando aplicações que utilizamos como exemplo no Tour do XE4 para iOS (http://embarcaderobr.com.br/tour/), e também no recente CodeRage Mobile Brasil (http://www.embarcadero.com/coderage-mobile-brazil-ondemand) e simplesmente recompilando para Android!

Abaixo algumas informações importantes selecionadas para vocês:

1.- Publicamos uma atualização do Roadmap do RAD Studio, onde você pode ver que teremos iOS e Android também para C++ ainda este ano, e também detalhes sobre as futuras plataformas a serem suportadas: http://edn.embarcadero.com/article/42544

2.- Você pode se inscrever neste link para receber todas as informações sobre o Delphi for Android assim que disponíveis, além de se candidatar a beta tester (prioritário para usuários do XE4): http://forms.embarcadero.com/RADAndroidInfoBetaRequest

3.- Ofertas especiais:

  • Adquirindo o XE4 agora você recebe 6 meses de manutenção grátis: isto significa que você receberá updates e novas releases dentro dos próximos 6 meses free, além de ganhar acesso prioritário ao beta do Android;
  • Ainda está valendo o Bonus Pack com uma série de utilitários e extras;

4.- Outros artigos já publicados sobre o novo Delphi for Android:

Fiquem ligados, estaremos publicando novos “previews” em breve! 😉

Vem aí o CodeRage Mobile Brasil!

Prepare-se para um dia inteiro de conteúdo 100% técnico sobre desenvolvimento mobile!

Tudo o que você precisa saber para iniciar com o desenvolvimento de aplicações móveis, da configuração de seu ambiente ao desenvolvimento de uma aplicação com banco de dados, absolutamente tudo!

Serão oito sessões, todas com perguntas e respostas, dez palestrantes, e muitas novidades.

Quando

Dia 31/07, a partir das 10:00 h. Confira a grade de palestras:

Inscrições

Não deixe para depois pois as vagas são limitadas! Clique neste link e faça sua inscrição:

http://forms.embarcadero.com/AMBRCodeRageMobile7-31

Barcode Capturing with Delphi XE4 iOS App!

Hello Everyone!

See in this article how to read and decode barcodes through an Delphi XE4 iOS App. The process consists in capturing an image using the device camera and decoding it through a specialized SDK.

CodeBar Libraries for iOS Apps

There are a lot of SDKs focused in barcode decoding, supporting numerous platforms, some paid, some free, with different levels of features, just go to Google and you’ll receive a huge list of suggestions to explore. Here, we are interested in SDKs for the iOS platform.

In general, these SDKs are created to be used with Objective-C, so we need to translate the SDK’s header to Pascal through one of the available ways. Here you can find more information about the translation process:

http://alturl.com/v2wtx

http://alturl.com/y87xb

To create this sample, I’m using the ZBar SDK (http://zbar.sourceforge.net/), an open source library, which has its header translated to Pascal by Simon Choi, originally published here: http://blog.naver.com/simonsayz/120175561755.

Developing the App

Once you have the SDK (in this case represented by a file called “libzbar.a”) and the header translation in  hands, you can create a Delphi class to expose the SDK methods in a easy and friendly way to your iOS app. See below how this class looks:

  TZBarCode = class(TObject)
  private
    ZBarView: ZBarReaderView;
    ZBarEvent: TZBarReaderViewDelegate;
    FActive: Boolean;
    function GetActive: Boolean;
    procedure SetActive(value: Boolean);
    function GetOnBarCode: TOnBarCode;
    procedure SetOnBarCode(value: TOnBarCode);
  protected
    destructor Destroy; override;
  public
    constructor Create; virtual;
    procedure Free;
    procedure SetFrame(View: UIView; Frame: CGRect);
    property Active: Boolean Read GetActive Write SetActive;
    property OnBarCode: TOnBarCode Read GetOnBarCode Write SetOnBarCode;
  end;

Building the Visual Interface

Considering the visual part of the application, we have:

– An TEdit (edtResult) to receive the barcode data;

– An TMemo (memImage) to define the image display area;

– An TListBox (lstHistory) to store the capture log;

– An TSwitch (swtONOFF) to activate/deactivate the capture process;

– An TButton (btnCopy) to copy the barcode data to the clipboard;

– An TButton (btnClear) to clear the capture log;

You can see the expected form appearance in this image:

Adding Some Code

Start by adding – in the private section of the main application form – one field to instantiate our capture class and a method to be assigned to the capture event:

  private
    { Private declarations }
    ZBarCode: TZBarCode;
    procedure OnFindBarCode(Sender: TObject; BarCode: String);
  public

Looking to the OnFindBarCode event, the BarCode variable brings the captured value, so you just need to assign it to the edtResult, as well to the lstHistory to create the log:

procedure TMainForm.OnFindBarCode(Sender: TObject; BarCode: String);
begin
  edtResult.Text := BarCode;
  lstHistory.Items.Add(FormatDateTime('dd/mm/yyyy hh:nn:ss', Now) + ' - ' + BarCode);
end;

Using the OnSwitch event from TSwitch, we’ll instantiate the capture’s class, assign the capture event, as well as define the image plotting area, and finally start the capture:

procedure TMainForm.swtONOFFSwitch(Sender: TObject);
begin
  if not Assigned(ZBarCode) then
  begin
    ZBarCode := TZBarCode.Create;
    ZBarCode.OnBarCode := OnFindBarCode;
    ZBarCode.setFrame(WindowHandleToPlatform(Self.Handle).View,
      CGRectMake(memImage.Position.X, memImage.Position.Y, memImage.Width,
      memImage.Height));
  end;
  ZBarCode.Active := swtONOFF.IsChecked;
end;

To complete the app, here is the code for the two added buttons:

procedure TMainForm.butClearClick(Sender: TObject);
begin
  edtResult.Text := '';
  lstHistory.Items.Clear;
end;
procedure TMainForm.btnCopyClick(Sender: TObject);
begin
  edtResult.SelectAll;
  edtResult.CopyToClipboard;
end;

Note: This app is intended to run only in a real device. Here you can see the app in action:

You can download the sample with the complete source code here: http://cc.embarcadero.com/item/29485

Hope this can be useful for your projects, have fun!

Código de Barras no Delphi para iOS!

Olá pessoal!

Recebemos muitas solicitações de clientes pedindo por um exemplo de captura de código de barras a partir de uma aplicação iOS criada com Delphi XE4. Neste artigo vou mostrar como ler e decodificar código de barras através de uma aplicação Delphi para iOS, executando em iPhone, iPad ou iPod!

A dinâmica do processo consiste em capturar uma imagem utilizando a câmera do dispositivo, e decodificar o código de barras contido nesta imagem utilizando uma biblioteca especializada.

Bibliotecas de Leitura de Código de Barras para iOS

Existe um sem número de bibliotecas para decodificação de código de barras com suporte a diversas plataformas, pagas e não pagas, com mais ou menos features, basta um search no Google para receber uma lista considerável a ser explorada. Neste caso estamos interessados em bibliotecas específicas para iOS, e geralmente elas são criadas em (e para uso com) Objective-C.

Assim sendo, qualquer que seja sua escolha, será necessário transcrever o cabeçalho da biblioteca para Pascal, utilizando um dos diversos métodos disponíveis. Nestes endereços você pode aprender mais sobre este processo:

http://alturl.com/v2wtx

http://alturl.com/y87xb

Para esta implementação estou fazendo uso da ZBar (http://zbar.sourceforge.net/). Trata-se de uma biblioteca open, bastante competente, e que possui seu header traduzido para Pascal por um desenvolvedor coreano chamado Simon Choi, e publicado em seu blog neste link: http://blog.naver.com/simonsayz/120175561755. *** Todos os créditos aqui para o Simon pelo excelente trabalho! ***

Implementando a Leitura do Código de Barras

Uma vez de posse da biblioteca (neste caso representada por um único assembly “libzbar.a”), e também com o código que expõe a interface da biblioteca ZBar em mãos, o que temos que fazer é implementar uma classe  Delphi que faz uso destes métodos, traduzindo-os em uma interface amigável, a qual será utilizada pela nossa aplicação iOS. Veja abaixo como ficou a declaração da classe:

  TZBarCode = class(TObject)
  private
    ZBarView: ZBarReaderView;
    ZBarEvent: TZBarReaderViewDelegate;
    FActive: Boolean;
    function GetActive: Boolean;
    procedure SetActive(value: Boolean);
    function GetOnBarCode: TOnBarCode;
    procedure SetOnBarCode(value: TOnBarCode);
  protected
    destructor Destroy; override;
  public
    constructor Create; virtual;
    procedure Free;
    procedure SetFrame(View: UIView; Frame: CGRect);
    property Active: Boolean Read GetActive Write SetActive;
    property OnBarCode: TOnBarCode Read GetOnBarCode Write SetOnBarCode;
  end;

Construindo a Interface da Aplicação

Do ponto de vista de interface visual temos o seguinte:

– Um TEdit (edtResult), o qual receberá o resultado da leitura do código de barras;

– Um TMemo (memImage), utilizado somente para definir a área onde a imagem do processo de captura será exibida (você poderia definir as coordenadas manualmente, mas o uso de um componente alinhado aos demais controles torna a interface mais dinâmica);

– Um TListBox (lstHistory), utilizado para armazenar o resultado das últimas leituras;

– Um TSwitch (swtONOFF), responsável por ativar o processo de captura;

– Um TButton (btnCopy), demonstrando como copiar o resultado para a memória;

– Um TButton (btnClear), responsável por eliminar os resultados das capturas efetuadas;

O resultado esperado você pode conferir nesta imagem:

Codificando o Formulário da App

Inicialmente, no escopo private da classe principal do form, declare uma variável que será utilizada para criar a instância da classe de captura, e um método que será atribuído ao evento de captura, quando ela ocorrer:

  private
    { Private declarations }
    ZBarCode: TZBarCode;
    procedure OnFindBarCode(Sender: TObject; BarCode: String);
  public

No método OnFindBarCode, basta atribuir o resultado que será recebido através do parâmetro BarCode ao nosso edtResult, além de armazená-lo no histórico:

procedure TMainForm.OnFindBarCode(Sender: TObject; BarCode: String);
begin
  edtResult.Text := BarCode;
  lstHistory.Items.Add(FormatDateTime('dd/mm/yyyy hh:nn:ss', Now) + ' - ' + BarCode);
end;

No evento OnSwitch do nosso TSwitch, vamos instanciar a classe, atribuir o método ao evento correspondente, definir a área de plotagem da imagem e ativar a captura:

procedure TMainForm.swtONOFFSwitch(Sender: TObject);
begin
  if not Assigned(ZBarCode) then
  begin
    ZBarCode := TZBarCode.Create;
    ZBarCode.OnBarCode := OnFindBarCode;
    ZBarCode.setFrame(WindowHandleToPlatform(Self.Handle).View,
      CGRectMake(memImage.Position.X, memImage.Position.Y, memImage.Width,
      memImage.Height));
  end;
  ZBarCode.Active := swtONOFF.IsChecked;
end;

E para completar, aqui está o código a ser adicionado nos dois botões restantes:

procedure TMainForm.butClearClick(Sender: TObject);
begin
  edtResult.Text := '';
  lstHistory.Items.Clear;
end;
procedure TMainForm.btnCopyClick(Sender: TObject);
begin
  edtResult.SelectAll;
  edtResult.CopyToClipboard;
end;

Um detalhe importante: devido a natureza da biblioteca utilizada (trata-se de um assembly para iOS/ARM) esta aplicação não funcionará no simulador, apenas em um dispositivo físico.

Aqui você tem uma imagem da aplicação sendo executada em um iPad:

Neste link você pode fazer o download do exemplo que está sendo executado acima: http://cc.embarcadero.com/item/29485

Espero que gostem e que seja útil em seus projetos, até a próxima!

Mais de 1500 desenvolvedores presentes no RAD Studio Multi-Device Brasil!

Finalizamos a edição brasileira do RAD Studio Multi-Device tour, vistando 14 cidades por todo o país.

Durante os eventos tivemos a oportunidade de encontrar desenvolvedores Delphi experientes, e também muitos que estão apenas iniciando com a ferramenta, e todos ficaram impressionados com nosso suporte para iOS.

Também recebemos ótimos comentários de desenvolvedores Xcode dizendo o quão fácil é desenvolver para mobile com Delphi!

Falamos para mais de 1500 pessoas durante este tour por 14 cidades, de norte a sul do país. Veja abaixo algumas fotos de cada parada:

E não vamos parar por aí! Amanhã teremos a versão online do Tour, se você não teve oportunidade de acompanhar ao vivo em sua cidade, não deixe de participar online!

Faça sua inscrição através deste link e prepara-se para surpreender-se novamente:

http://forms.embarcadero.com/AMBR1306RADXE4LaunchWebinar6-11