Delphi – Andreano Lanusse | Tecnologia e Desenvolvimento de Software http://www.andreanolanusse.com/pt Andreano Lanusse blog - artigos, tutoriais e vídeos sobre tecnologia, desenvolvimento de software (Delphi XE4, C#, PHP, .NET) e técnicas de programação Tue, 18 Dec 2018 16:05:44 +0000 pt-BR hourly 1 https://wordpress.org/?v=6.5.8 Benchmark de desempenho desde o Delphi 2010 até Delphi XE6 http://www.andreanolanusse.com/pt/benchmark-de-desempenho-desde-o-delphi-2010-ate-delphi-xe6/ http://www.andreanolanusse.com/pt/benchmark-de-desempenho-desde-o-delphi-2010-ate-delphi-xe6/#comments Mon, 09 Jun 2014 04:51:36 +0000 http://www.andreanolanusse.com/pt/?p=4379 Thomas Grubb do blog Words from a Delphi CodeSmith fez um trabalho fantástico publicando uma série de 12 artigos onde ele compara o desempenho do Delphi desde a versão 2010 até o XE6. A principal motivação do Thomas com este benchmark foi validar a qualidade, desempenho e estabilidade do Delphi ao longo dos anos, especialmente agora que […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Thomas Grubb do blog Words from a Delphi CodeSmith fez um trabalho fantástico publicando uma série de 12 artigos onde ele compara o desempenho do Delphi desde a versão 2010 até o XE6. A principal motivação do Thomas com este benchmark foi validar a qualidade, desempenho e estabilidade do Delphi ao longo dos anos, especialmente agora que a Embarcadero diz ter dado foco a estas áreas no Delphi XE6.

Em seus testes ele incluiu VCL, FireMonkey, Win32, Win64, Android, iOS, OSX e componentes de terceiro.

A série completa é composta de 12 artigos, abaixo segue o link para todos os artigos que estão em inglês.

Novamente, parabéns ao Thomas pelo fantástico trabalho e tempo investido para gerar todos estes resultados. Certamente a comunidade Delphi agradece..

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/benchmark-de-desempenho-desde-o-delphi-2010-ate-delphi-xe6/feed/ 4
Delphi XE5 Update 2 – muitas correções no FireMonkey para iOS, Android e compilador http://www.andreanolanusse.com/pt/delphi-xe5-update-2-muitas-correcoes-firemonkey-para-ios-android-e-compilador/ http://www.andreanolanusse.com/pt/delphi-xe5-update-2-muitas-correcoes-firemonkey-para-ios-android-e-compilador/#comments Sat, 28 Dec 2013 05:57:21 +0000 http://www.andreanolanusse.com/pt/?p=4358 Mais uma correção para o Delphi XE5 e C++Builder XE5, o Update 2 foi disponibilizado e traz muitas correções para bugs em diversas áreas, principalmente no FireMonkey, seja para Android, iOS, Windows ou Mac. O Update 2 está disponível para os usuários registrados através dos links abaixo. Vale lembrar que é obrigatório desinstalar seu Delphi […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Mais uma correção para o Delphi XE5 e C++Builder XE5, o Update 2 foi disponibilizado e traz muitas correções para bugs em diversas áreas, principalmente no FireMonkey, seja para Android, iOS, Windows ou Mac.

O Update 2 está disponível para os usuários registrados através dos links abaixo. Vale lembrar que é obrigatório desinstalar seu Delphi XE5 para instalar o XE5 Update 2.

Abaixo a lista completa com todos os bugs corrigidos.

Reference No

Summary

Component/s

[Indy] Access Virolation occues on OnValidatePeerCertificate for IPPeerCommon bug[HTTPS,SSL] 3rd Party

120473

[iOS] SOAP fails in iOS when using SSL (“IOHandler value is not valid.”) Blocker

119873

TCameraComponent causes memory leak in Win32 Blocker

115697

TDump command crashes on DLL’s Command Line Tools

112826

TDump.exe shows strange output Command Line Tools

100328

TDump crashes on the x64 shell32.dll Command Line Tools

110887

TDump fails on some ‘foreign’ .dlls Command Line Tools
Delphi XE5 cannot build OSX applications from the command line Compiler
[FM Mac OSX 10.9] Compile error XMLDocument using SDK 10.9 Compiler, Compiler\C++

120686

[Mavericks 10.9] C++Builder XE4 does not support OS X 10.9 Compiler, Compiler\C++, Compiler\C++\BCC
Throwing a exception in virtual member function returning an AnsiString causes an AV and an abend under certain circumstances, in 32-bit C++ application Compiler, Compiler\C++, Compiler\C++\BCC, Compiler\C++\BCC\Back End

120476

[iOS ARM][Android] E2581 Backend error: invalid linkage type for global declaration Compiler, Compiler\Delphi
[dcc(ios/a)arm] Backend Error compiling constructor for generic classes Compiler, Compiler\Delphi

118897

method overload resolution fails when passing @ parameter to overloaded methods mixing Pointer and specific pointer parameters. Compiler, Compiler\Delphi
ShowMessage/Message Alerts not working in iOS 7 Simulator Compiler, Compiler\Delphi
[dccaarm][dcciosarm] Implicit finally block doesn’t execute if the exception is not catch in except block. Compiler, Compiler\Delphi
Crash by declaration error when declaring class function in record type Compiler, Compiler\Delphi
Internal Error URW1154 calling TValue.From() of System.Rtti Compiler, Compiler\Delphi

72147

Invalid section table entries on empty sections Compiler, Compiler\Delphi

119197

subtraction of sets changes its params Compiler, Compiler\Delphi, Compiler\Delphi\CodeGen
Integer computation error upon mixing Byte and Integer Compiler, Compiler\Delphi, Compiler\Delphi\CodeGen
When Currency is used in a generic record type you get an internal compiler error G1239 IN Zephyr and G1232 in XE4 Compiler, Compiler\Delphi, Compiler\Delphi\Generics

118815

Generic method inlining (part 2) Compiler, Compiler\Delphi, Compiler\Delphi\Generics

118866

Cannot perform FillChar on Currency variables – E2197 Constant object cannot be passed as var parameter Compiler, Compiler\Delphi, Compiler\Delphi\Messages

93738

Internal Error URW1136 Compiler, Compiler\Delphi, Compiler\Delphi\Messages

118929

Totally broken package compiler for an iOS device Compiler, Compiler\Delphi, Compiler\Delphi\Packages/Libs

118523

[dcc32] Command-line build fails for user account with non-ASCII characters Compiler, Compiler\Delphi, IDE\Build System
DataSnap : Memory leaks caused by TFDJSONDataSetsBase.FOwnsDataSet Data, Data\DataSnap
DataSnap: HTTP request may be broken when sending Delta Data, Data\DataSnap
[C++][DataSnap]Exception raised when trying to execute server method through proxy on OS X 10.9 Data, Data\DataSnap

116417

[ISAPI] DataSnap Server as an ISAPI DLL get a 48KB limitation when receiving POST data Data, Data\DataSnap
[OS X][DataSnap][FireDAC] Unable to find static library: DataSnapFireDAC.a Data, Data\DataSnap, Data\FireDAC
[DataSnap] TX509CertificateIndy.Verify is not operation as specification. Data, Data\DBX
Unable to load libsqlib.dylib Data, Data\DBX
DBX memory leak when running queries on NEXTGEN platforms Data, Data\DBX
FireDAC FDConnection does not autocommit Data, Data\FireDAC
FDExplorer resizing causes lost display of description column message Data, Data\FireDAC
Building a Mobile Application that contains a TFDPhysIBDriverLink component raises an error Data, Data\FireDAC
[SQLite] It can’t encipher by the specified encrypt parameter, so it can’t setup except aes-256 Data, Data\FireDAC
If XML containing MBCS is saved by SaveToStream, It is not copied correctly.. Data, Data\FireDAC
If XML containing MBCS is copied to TFDMemtable, Exception class EDOMParseError occurs Data, Data\FireDAC
FireDAC memory leak when running queries on NEXTGEN platforms Data, Data\FireDAC

119995

“Not editing” error reported with LiveBindings when calling ApplyUpdates on TAdapterBindSource Data, Data\LiveBindings

118633

[iOS device/Android] With TSoapConnection, TClientDataset.ApplyUpdates raises “Exception in safecall method” in iOS device and Android Data, Data\Midas

118633

[iOS device/Android] gdb reports wrong file after step into Debugger
Debugging not working with a FireMonkey Mobile app on Nexus 7 2013 Debugger
[Delphi] Access Violation when Inspecting or Adding a Watch with a function where an array is passed in as a var or const Debugger
Function call evaluation on C++ OSX apps is broken when using Mavericks Debugger, Debugger\Evaluator

120506

[OSX 10.9] Mavericks Modules Debug Window doesn’t show framework dylibs anymore Debugger, Debugger\Views

119777

ReqMulti.pas has been removed from the product File Delivery, Internet
[FMX/Android] TEdit causes SIGSEG if SetFocus method is called inside Forms’s OnCreate event. FireMonkey
[iOS] Sharing popup size is calculated wrong FireMonkey

120259

Bugs in creating forms with TForm.CreateNew() – i.e. without a designer. FireMonkey
Orientation switch breaks app or bars user after device activated again (after sleep) FireMonkey

119176

[iOS7 iPad Simulator] App crash in iOS 7 iPad Simulator FireMonkey

118770

Bad text rendering on Android FireMonkey
Poor application performance on Nexus 10 FireMonkey
[iOS] TMemo – sometimes when using LongTap to bring up the context menu on iOS, the cursor and context menu is moved up with one line FireMonkey

118554

[iOS Device] iOS App crashes on iOS 6.1.3 (iPad) when Showing Forms – but not on Simulator FireMonkey
TabletMasterDetail app takes over 10 seconds to load on Nexus 10 FireMonkey

120566

When adding a TBindNavigator, an Access Violation occurs FireMonkey

118799

2D Empty app does not start on Samsung Galaxy Tab 3 FireMonkey, FireMonkey\3D Components

120517

TMemo.ScrollLayout could cause access violation FireMonkey, FireMonkey\Components

120827

[iOS7] With TMemo, unintentional letter appears when entering with Japanese keyboard. FireMonkey, FireMonkey\Components
Date Picker mobile code snippet TCalendarEdit – decrements the date when you don’t change the date in the picker FireMonkey, FireMonkey\Components
Using German ß (00DF; LATIN SMALL LETTER SHARP S) in TListBoxGroupHeader raises EArgumentOutOfRangeException FireMonkey, FireMonkey\Components
On HTC one X(4.1.1) cannot be typed a set of numbers if the keyboard has the vktPhonePad type FireMonkey, FireMonkey\Components

120515

TMemo.GoToTextEnd crashes at program startup and doesn’t move the horizontal scrollbar FireMonkey, FireMonkey\Components

120517

TMemo.ScrollLayout could cause access violation FireMonkey, FireMonkey\Components

119442

Mobile Code Snippets – Web Browser needs to be updated. Web Browser Top Margin should be 0 FireMonkey, FireMonkey\Components
Problem changing the KeyboardType among different TEdit FireMonkey, FireMonkey\Components

120136

[Android 4.3] TListView component scrolling performance is very slow (Samsung GALAXY Note 3) FireMonkey, FireMonkey\Components
Listview scrolling performance slow on Samsung Galaxy Note 3 FireMonkey, FireMonkey\Components
Custom TabIcon support missing for iOS 7 FireMonkey, FireMonkey\Components

119442

[iOS7 device] Web Browser positioned incorrectly in iOS7 FireMonkey, FireMonkey\Components

120007

[Android, iOS] Viewport3D does not fully display on a mobile form with TabControl FireMonkey, FireMonkey\Components

118859

[iOS] TMedia Volume cannot be changed in iOS FireMonkey, FireMonkey\Components
TWebBrowser misaligned when Align set to alClient FireMonkey, FireMonkey\Components

119891

[Android] Edit.SetFocus in Form.OnShow() will cause app crash when entering text FireMonkey, FireMonkey\Components
TabControl does not fit the screen completely widthwise when it has exactly 6 TabItems FireMonkey, FireMonkey\Components

119821

[Android] Performance of Delphi Apps on Google Nexus 10(Android 4.3) FireMonkey, FireMonkey\Components

119539

[iOS] TMediaplayer pause (stop) on iOS is rewinding FireMonkey, FireMonkey\Components

119447

[Android] Location demo on some Android devices not working FireMonkey, FireMonkey\Components
Korean input problem with Tmemo on OS X FireMonkey, FireMonkey\Components

119192

[Android] Uppercase national characters are drawn bad on Android FireMonkey, FireMonkey\Components

119162

[Android] password is shown on virtual keyboard FireMonkey, FireMonkey\Components
TMemo very slow on Nexus 10 FireMonkey, FireMonkey\Components

119703

Stretched property of TText control does not work properly when TText is a child component for some other component, not a form FireMonkey, FireMonkey\Components

118859

[iOS] TMedia Volume cannot be changed in iOS FireMonkey, FireMonkey\Components

120023

[Android] TGestureManager crash on app close. FireMonkey, FireMonkey\Runtime
Throwing an exception and not catching it during any FMX component in an event have unexpected result FireMonkey, FireMonkey\Runtime

119450

[iOS7] vertical touch co-ordinate is several pixels lower than the actual touch position. FireMonkey, FireMonkey\Runtime

119444

[iOS7 device] Keyboard does not completely disappear when hidden in iOS7 FireMonkey, FireMonkey\Runtime
[NEXUS 10] SpeedButton – it takes too long until OnClick event is triggered FireMonkey, FireMonkey\Runtime

118910

Keyboard shift/ctrl+arrow keys not working for FireMonkey objects on a form FireMonkey, IDE, IDE\FireMonkey Designer
iOS 7 apps showing iOS 6 styled native controls (pickers/keyboard) on iOS Simulator FireMonkey, PAServer
FM C++ app with Mac OS X 10.9 SDK fails to compile IDE, IDE\Build System, IDE\Deployment, PAServer

120029

[Android] lower case of file path in deployedassets.txt IDE, IDE\Deployment
When starting RAD Studio XE5 (with android support installed) as the C++Builder personality it REMOVES the android SDK setting in the registry. IDE, IDE\General

118105

Android apps deployed to emulator will not function, display black screen IDE, Install

118830

Error detected (LME288), [ilink32 Error] Error: Unable to perform link Linker

116888

Strange linker crash Linker
Throw exception crash C++ Win64 app RTL, RTL\C++, RTL\C++\Exception Handling
Wrong behavior when executing code from a catch section on Mac OS RTL, RTL\C++, RTL\C++\Exception Handling
ARC Using Unsafe objects in records are not working properly RTL, RTL\Delphi
FM application crash at init in Android devices when the language is set to Norwegian (Norsk Bokmål) RTL, RTL\Delphi

118726

Application crash with raising exception class Segmentation fault (11) RTL, RTL\Delphi, RTL\Delphi\Other
SOAP: Double precision return values not correct for Android RTL, RTL\Delphi, SOAP

119872

SOAP AsDateTime implementation is wrong SOAP

119741

[Android] Segmentation fault consuming web service SOAP

76053

C++ templates are translated as “Vorlagen” Translation

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-xe5-update-2-muitas-correcoes-firemonkey-para-ios-android-e-compilador/feed/ 6
Delphi XE5 Update 1 – correção para problemas sérios no ClientDataSet http://www.andreanolanusse.com/pt/delphi-xe5-update-1-correcao-problemas-serios-clientdataset/ http://www.andreanolanusse.com/pt/delphi-xe5-update-1-correcao-problemas-serios-clientdataset/#comments Tue, 29 Oct 2013 03:47:43 +0000 http://www.andreanolanusse.com/pt/?p=4343 Foi disponibilizado o Update 1 para o Delphi XE5 e C++Builder XE5. Este update corrige vários em problemas em várias, entre elas FireDAC, FireMonkey, Debugger, IDE e principalmente no ClientDataSet. Abaixo uma lista dos erros do ClientDataSet que foram corrigidos, literalmente críticos e que inviabilizavam qualquer migração para XE5. A lista completa de correções está […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Foi disponibilizado o Update 1 para o Delphi XE5 e C++Builder XE5.

Este update corrige vários em problemas em várias, entre elas FireDAC, FireMonkey, Debugger, IDE e principalmente no ClientDataSet. Abaixo uma lista dos erros do ClientDataSet que foram corrigidos, literalmente críticos e que inviabilizavam qualquer migração para XE5.

Referência no Quality CentralResumoComponente
118951Numeric Filters on a TClientDataSet do not filterData, DataMidas
119028Linker error: TXMLTransformProvider libraries missingData, DataMidas
119164Attempting to use MIDAS (eg TClientDataset) in the simulator on iOS7 failsData, DataMidas
119432TClientDataSet.Locate method fails to work properly with XE5 midas.dllData, DataMidas
Application stops when driver is missingData, DataFireDAC
[Phys]-300 on connecting using Oracle / MSSQL / etc drivers using Arch SKU at design-timeData, DataFireDAC

A lista completa de correções está disponível neste link.

Links para download

Você pode baixar apenas o Update 1 (arquivo menor) ou ISO completo e atualizado já incluindo o Update 1:

  • Update 1 installer – 279.5MB (atualiza uma instalação existente do Delphi XE5 e C++Builder XE5)
  • ISO com Update 1 – 4.7GB (instalador completo do Delphi XE5 e C++Builder XE5, já incluindo o Update 1)

É isso, divirta-se agora.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-xe5-update-1-correcao-problemas-serios-clientdataset/feed/ 2
Delphi XE5 para Android – anúncio oficial http://www.andreanolanusse.com/pt/delphi-xe5-android-anuncio-oficial/ http://www.andreanolanusse.com/pt/delphi-xe5-android-anuncio-oficial/#comments Wed, 11 Sep 2013 13:01:34 +0000 http://www.andreanolanusse.com/pt/?p=4332 Embarcadero acaba de anunciar o Delphi XE5, a grande novidade é o suporte a desenvolvimento para Android. Desde que se iniciou o desenvolvimento do FireMonkey o objetivo foi sempre permitir o desenvolvimento para outras plataformas além do Windows, o que começou com o suporte a Mac e iOS, e agora para Android. O compilador ARM […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Embarcadero acaba de anunciar o Delphi XE5, a grande novidade é o suporte a desenvolvimento para Android. Desde que se iniciou o desenvolvimento do FireMonkey o objetivo foi sempre permitir o desenvolvimento para outras plataformas além do Windows, o que começou com o suporte a Mac e iOS, e agora para Android.

O compilador ARM é baseado na arquitetura LLVM o qual facilitou a possibilidade de se ter o novo compilador Delphi para outras plataformas.

Nas últimas semanas foram publicados diversos artigos na internet sobre esta nova versão, mais precisamente comentando sobre a possibilidade de se compilar o mesmo código para iOS e Android. No mundo mobile a experiência do usuário é um dos fatores criticos para o sucesso da sua aplicação, assim sendo precisamos tomar cuidado com o design da aplicação e não achar que só pelo fato de se ter uma única tela para diferentes plataformas é a solução para se ter produtividade, longe disso.

Recentemente comentei aqui no blog sobre o Android Studio, IDE da Google para desenvolvimento Android, com o lançamento do Delphi XE5 os desenvolvedores ganham mais uma opção para o desenvolvimeto de aplicações para Android que traz uma abordagem diferente e com o “objetivo” de trazer maior produtividade através de um único código em desenvolvimento para iOS e Android.

Hoje podemos destacar os seguintes IDE para Android:

Entre outras novidades para Android estão um conjunto de funcionalidades que permite o deploy direto no emulador, debug da aplicação, suporte da RTL, componentes de acesso a dados, etc. Muito similar ao suporte para iOS. Além disso o suporte a iOS 7 através de estilos customizados.

Foram incorporados uma série de funcionalidades relacionadas ao acesso a serviços REST, como os componentes TRestClient, TRestRequest e TRestResponse, mecanismos de autenticação e ferramenta para debug que pode auxiliar durante o uso de desenvolvimento com REST.

Em resumo o foco é o desenvolvimento mobile, agora com o suporte a Android e a possibilidade de compartilhar o mesmo código utilizando o novo compilador ARM e FireMonkey.

É hora de testar e ver se o Delphi XE5 irá atender suas expectativas.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-xe5-android-anuncio-oficial/feed/ 29
Delphi XE4 – Conheça as novidades para iOS e mais http://www.andreanolanusse.com/pt/delphi-xe4-conheca-as-novidades-para-ios-e-mais/ http://www.andreanolanusse.com/pt/delphi-xe4-conheca-as-novidades-para-ios-e-mais/#comments Mon, 22 Apr 2013 13:34:15 +0000 http://www.andreanolanusse.com/pt/?p=4281 Conheça todas as novidades do Delphi XE4, as mudanças que começam a ser feitas na linguagem e irá impactar futuramente, o InterBase para iOS, FireDac e finalmente as novidades do desenvolvimento com Delphi para iOS

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Semana passada publiquei aqui no blog que o Delphi XE4 estava para sair, hoje foi lançado o Delphi XE4 e o RAD Studio XE4, o foco desta versão é o desenvolvimento para iOS, traz algumas outras novidades em outras áreas e uma mudança importante em relação ao Delphi Prism.

Agile Brazil 2013 - Eu apoio

Antes de começar quero convidar a todos para o Agile Brazil 2013, o maior evento sobre metodologias ágeis do Brasil que acontece do dia 26 à 28 de junho em Brasília. Este evento eu recomendo de olho fechado, seja você desenvolvedor, gerente de produto, líder de equipe, gerente de projeto ou da área de software deve comparecer. Mais informações acesse este link onde escrevi mais detalhes sobre o evento.

 

Voltando ao tema, pela primeira vez na história do Delphi tivermos um novo release em tão pouco espaço de tempo, há 8 meses atrás foi lançado o Delphi XE3. A principal razão para este lançamento é o suporte a iOS.

Vamos então a um resumo das novidades do Delphi XE4 e a mudança no RAD Studio XE4.

Desenvolvimento para iOS no Delphi XE4

O suporte a iOS está de volta, originalmente foi incorporado no Delphi XE2 e removido no XE3, agora no XE4 traz uma série de mudanças, entre elas:

  • O FireMonkey para iOS sofreu diversas alterações para atender e funcionar melhor em iOS
  • O compilador para iOS é o baseado no novo compilador do Delphi para iOS e não mais no FreePascal
  • O deploy e teste das aplicações podem ser feitos diretos no Mac sem a necessidade de fazer export de projetos como anteriormente
  • O acesso via dbExpress a banco de dados SQLite e InterBase em iOS
  • Uso do ClientDataSet em iOS
  • RTL para iOS
  • Novo DataSnap Client para iOS que suporta TCP/IP, HTTP, HTTPS e REST

Existe uma série de classes, componentes e propriedades específicas para tratar as mais diversas particularidades do iOS e que não estarão disponíveis para Windows e Mac obviamente.

Aproveitando, curta a comunidade Developer Point Brasil, essa comunidade é bem bacana e traz diversos assuntos sobre desenvolvimento de software.

Novo compilador Delphi para Mobile

O compilador Delphi para aplicações mobile é 100% novo e traz diversas mudanças que até aqui são pertinentes ao desenvolvimento mobile com Delphi, entretanto é bom você começar a se preparar porque futuramente essas mudanças serão levadas para o desenvolvimento Desktop.

Todas essas mudanças tem como objetivo modernizar a linguagem, na minha opinião o Delphi precisa disso para mesmo que isso venha trazer incompatibilidade com código legado.

No novo compilador para mobile só existe um tipo de String, o próprio String, não há mais:

  • AnsiString
  • WideString
  • AnsiChar e PAnsiChar
  • PWideChar
  • OpenString
  • ShortString

No novo compilador:

  • Strings são imutáveis (constantes), ou seja, você não poderá manipular String como se fosse um array ( A[1] := ‘S’) e passará a usar TStringBuilder
  • String começam a partir da posição zero, você pode usar $ZEROBASEDSTRINGS para mudar este comportamente no seu código, mas não para a RTL para mobile

Além disso várias mudanças relacionadas ao Automatic Reference Counting, em outras palavras o mecanismo para destruir objetos que afeta o desenvolvimento mobile e irá afetar o desenvolvimento para desktop, este tema é extenso e vou voltar a falar nele em breve, enquanto isso de uma lida neste link.

Perguntas em Aberto

Várias pessoas me perguntaram qual será a política de atualização do Delphi quando uma nova versão do iOS for disponibilizada. Se nada mudou na Embarcadero com relação a isso, muito provavelmente a resposta será.

Caso você tenha comprando a manutenção (Software Assurance) do Delphi, você estará recebendo as atualização da versão atual e novas versões no período de um ano. Caso a Embarcadero não atualize na versão atual, você receberá a nova versão que muito provavelmente terá a atualização.

Enfim, pergunte novamente a Embarcadero sobre isso, pois sem dúvida este é um fator que pode impactar na sua decisão.

Também me perguntaram sobre a performance das aplicações geradas com Delphi para iOS quando comparadas a aplicações geradas com XCode.

Eu não tenho como responder a essa pergunta neste momento e explico porque. As aplicações iOS feitas com Delphi tem como run-time o FireMonkey, o qual tem um esquema próprio para a renderização da aplicação e isso faz uma grande diferença, já aplicações desenvolvida com XCode usam diretamente o iOS SDK.

Será necessário fazer testes para saber se a diferença ou não, caso você venha fazer esse tipo de teste, por favor me avise, tenho interesse em saber o resultado.

Adeus Delphi Prism

Primeira mudança esta relacionada ao RAD Studio que anteriormente trazia 4 IDEs, onde você desenvolvia para Delphi, C++, PHP e .NET. A partir do RAD Studio XE4 o conhecido Delphi Prism não estará mais incluido, com isso o RAD Studio fica composto apenas do Delphi, C++Builder e HTML5 Builder.

O Delphi Prism surgiu em 2009 para substituir o Delphi.NET como parte de um acordo entre Embarcadero e RemObjects, a Embarcadero licenciava a tecnologia da RemObjects e vendia como Delphi Prism.Com o fim do acordo o Prism que é o Oxygene continua no mercado através da RemObjects, os usuários do Prism passarão se assim quiser a usar Oxygene e continuarão tendo todo o suporte da RemObjects o qual continua evoluindo a ferramenta. A RemObjects publicou um comunicado oficial sobre isso em seu blog.

Para finalizar este tópico, vale lembrar que o Oxygene não é apenas uma ferramenta para desenvolvimento .NET, nos dias de hoje já suporta desenvolvimento nativo para iOS, Android e Windows Phone, o que leva a ser um concorrente do Delphi.

Download do ISO do Delphi XE4 e C++Builder XE4

Neste link você pode baixar o ISO completo que inclui as versões XE4 do Delphi e C++Builder ou o trial através do instalador web aqui.

Conclusão

Para os interessados em desenvolver apps para iOS o Delphi XE4 está ai, depois do Delphi XE2 e as inúmeras críticas dos clientes e comunidade, todos esperam que a Embarcadero venha com o Delphi XE4 disponibilizar um produto sólido, de qualidade e maduro para iOS.

Faça os testes você mesmo e comente aqui no blog, em futuros artigos estarei trazendo algumas avaliações feitas por mim mesmo. Aguarde!

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-xe4-conheca-as-novidades-para-ios-e-mais/feed/ 44
Delphi XE4 – Anúncio oficial http://www.andreanolanusse.com/pt/delphi-xe4-anuncio-oficial/ http://www.andreanolanusse.com/pt/delphi-xe4-anuncio-oficial/#comments Wed, 17 Apr 2013 04:05:43 +0000 http://www.andreanolanusse.com/pt/?p=4274 Saiba em primeira mão o que traz o Delphi XE4 que será lançado na próxima semana, novidades como o novo compilador ARM pra Delphi que permitirá compilar aplicações Delphi para iOS usando FireMonkey, conheça mais neste artigo.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Geralmente você espera uma nova versão do Delphi por volta do mês de Agosto, esse ano será diferente. Delphi XE4 será lançado semana que vem.

Eu acabo de saber que na próxima semana será feito o anúncio oficial do Delphi XE4, que será parte do RAD Studio XE4 e irá trazer o C++Builder XE4 e HTML5 Builder.

Uma mudança importante que teve início ano passado e está relacionado ao Prism (Delphi for .NET) terá efeito no RAD Studio este ano, eu acredito que você não irá ver o Prism como parte do RAD Studio, obviamente a REM Objects continuará desenvolvendo o compilador e sua integração com o Visual Studio, assim sendo você terá que comprar diretamente deles.

Aproveitando, curta a comunidade Developer Point Brasil, essa comunidade é bem bacana e traz diversos assuntos sobre desenvolvimento de software.

Quais as novidades do Delphi XE4?

Delphi XE4 traz o novo compilador ARM pra Delphi, o qual irá permitir compilar aplicações Delphi para iOS usando FireMonkey. O projeto deste novo compilador começou anos atrás, eu tive a oportunidade de falar sobre este projeto para muitos desenvolvedores Delphi. O compilador é realmente novo e um começo que irá permitir que a linguagem Delphi evolua para outras plataformas de uma maneira muito mais fácil, você já deve ter ouvido a promessa da Embarcadero em suportar Android em breve.

O suporte iOS será melhor do que você viu no XE2 e certamente você está esperando algo muito melhor. Algo muito importante nesta nova versão é o foco em iOS, tentar fazer com que tudo e todos os componentes estejam disponíveis para essa plataforma é o caminho errado, assim sendo no XE4 você terá o que é necessário e específico para iOS quando estiver desenvolvimento projetos para iOS, isso é bom.

Obviamente a Embarcadero irá promover o FireDAC como um novo recurso do XE4, mesmo que ele tenha sido lançado no XE3. Como faz pouco tempo é um bom recurso pra ser divulgar, mesmo porque FireDAC é muito melhor que dbExpress. Eu escrevi um artigo sobre o FireDAC e você pode ler aqui.

O InterBase para iOS certamente estará nesta versão, mesmo que você já possa usar SQLite em dispositivos iOS, existe muito espaço para o InterBase neste mercado, especialmente para desenvolvedores que querem proteger seus dados em dispositivos móveis.

Upgrade e preço

A Embarcadero irá disponibilizar os SKU e opções de upgrade em breve. No início deste ano eles mencionaram disponibilizar o suporte para iOS como um add-on, talvez você possa vir comprar este add-on, vamos esperar para saber.

Na próxima quarta-feira irá ocorrer um webinar para apresentar esta nova versão.

Em breve eu estarei publicando aqui nos blog meu comentários e review sobre esta nova versão.

Acesso o artigo com as novidades sobre o Delphi XE4 aqui.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-xe4-anuncio-oficial/feed/ 5
Client/Server está morto – Repense seus novos projetos http://www.andreanolanusse.com/pt/client-server-esta-morto-repense-seus-novos-projetos/ http://www.andreanolanusse.com/pt/client-server-esta-morto-repense-seus-novos-projetos/#comments Thu, 11 Apr 2013 04:19:19 +0000 http://www.andreanolanusse.com/pt/?p=4270 Client/Server dominou o mundo do desenvolvimento, milhares de aplicações até hoje atendem as necessidades para as quais elas foram projetadas, entretanto a internet revolucionou e a pelo menos 10 anos mudou a forma com que desenvolvemos software.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Ao longo dos anos o modelo Client/Server dominou o mundo do desenvolvimento, milhares de aplicações até hoje funcionam perfeitamente e atendem as necessidades para as quais elas foram projetadas, entretanto este modelo já não suportas as nossas necessidades.

Durante a pesquisa 2013 feita aqui no blog fiz a seguinte pergunta “Na sua opinião as aplicações desenvolvidas nos dias de hoje deveriam adotar qual arquitetura?”, o resultado foi o seguinte.

Pesquisa 2013 - Client/Server, multi-camada, etc.

Não seria necessário fazer essa pergunta para descobrir isso, eu pelo menos venho recomendando arquitetura multi-camada ou distribuída a pelo menos uns 10 anos.

Enfim, se você hoje pretende iniciar novos projetos comece a pensar em uma arquitetura distribuída e baseada em serviços para que assim, você possa integrar suas soluções a outras plataformas.

SOA e REST são modelos de arquitetura que eu hoje recomendaria, tendo uma preferência para REST, mas não ignorado SOA, que pode vir a ser necessário dependendo das necessidade da solução a ser implementada.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/client-server-esta-morto-repense-seus-novos-projetos/feed/ 3
Delphi for iOS? Mas quais os planos dos desenvolvedores Delphi para mobile/tablet? http://www.andreanolanusse.com/pt/delphi-for-ios-mas-quais-os-planos-dos-desenvolvedores-delphi-para-mobiletablet/ http://www.andreanolanusse.com/pt/delphi-for-ios-mas-quais-os-planos-dos-desenvolvedores-delphi-para-mobiletablet/#comments Sat, 30 Mar 2013 08:20:34 +0000 http://www.andreanolanusse.com/pt/?p=4266 Em breve a Embarcadero pretende relançar o suporte a desenvolvimento para iOS (iPad/iPhone) no Delphi, que provavelmente vai se chamar Delphi for iOS, o objetivo é trazer uma plataforma estável e diferente da que veio no Delphi XE2. Segundo rumores este lançamento pode acontecer agora em Abril antecipando o lançamento do Delphi XE4. No início do ano fiz […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Em breve a Embarcadero pretende relançar o suporte a desenvolvimento para iOS (iPad/iPhone) no Delphi, que provavelmente vai se chamar Delphi for iOS, o objetivo é trazer uma plataforma estável e diferente da que veio no Delphi XE2. Segundo rumores este lançamento pode acontecer agora em Abril antecipando o lançamento do Delphi XE4.

No início do ano fiz uma pesquisa aqui no blog com várias perguntas, foram mais de 1500 respostas e a partir desta semana pretendo publicar os resultados, começando por este artigo.

A grande maioria dos leitores do meu blog, utilizam ou já utilizaram Delphi, na pesquisa eles representaram 87%.

Os participantes da pesquisa responderam a seguinte pergunta “Quais os planos da sua empresa em 2013 para desenvolvimento de aplicações para mobile e tablet?”, esta pergunta foi feita para cada plataforma mobile: Android, iOS, Windows Phone, Surface e BlackBerry.

Abaixo o resultado:

  • Podemos notar que Android é a preferência com 45%, 16% estão em dúvida e apenas 5% não pretendem desenvolver para Android.
  • iOS vem em seguida com 28%, entretanto 24% dizem não ter certeza se irão desenvolver para iOS em 2013 e 11% não tem nenhum plano.
  • Windows Phone vem na terceira posição com apenas 13% e Surface (Tablet da Microsoft) bem atrás.
  • BlackBerry como já previsto, apenas 3% pretende desenvolver, 11% na dúvida e 40% não querem nem pensar.

Pesquisa 2013 - Plataforma mobile para desenvolvimento

Não é possível desenvolver aplicações para Android com Delphi hoje, o suporte a Android está no RoadMap. Infelizmente ninguém pode esperar, Android já está no mercado a mais de 4 anos e a  Google oferece gratuitamente todo um ambiente de desenvolvimento baseado em Eclipse usando Java, com vários emuladores, plugins e documentação, abaixo links onde você pode encontrar mais informações:

Já o desenvolvimento para Windows Phone e Microsoft Surface sua melhor opção é o Visual Studio, já na versão Express que é gratuita você pode desenvolver tanto para Windows Phone como Microsoft Surface, você pode obter todas as ferramentas, exemplos e documentação através dos links abaixo:

Vou ficando por aqui e até o próximo artigo.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-for-ios-mas-quais-os-planos-dos-desenvolvedores-delphi-para-mobiletablet/feed/ 7
FireDAC (AnyDAC) – O que isso representa para os desenvolvedores Delphi e C++ http://www.andreanolanusse.com/pt/firedac-anydac-o-que-isso-representa-para-os-desenvolvedores-delphi-e-c/ http://www.andreanolanusse.com/pt/firedac-anydac-o-que-isso-representa-para-os-desenvolvedores-delphi-e-c/#comments Sun, 03 Mar 2013 04:50:32 +0000 http://www.andreanolanusse.com/pt/?p=4257 Recentemente a Embarcadero adquiriu o AnyDAC, conjunto de componentes para a acesso a banco de dados infinitamente superior ao dbExpress. Como resultado desta aquisição, o AnyDAC foi renomeado para FireDAC e acaba de se tornar parte do Delphi e C++Builder XE3, os usuários da edição Enterprise podem baixar o FireDAC gratuitamente, os usuários do Delphi Professional […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Recentemente a Embarcadero adquiriu o AnyDAC, conjunto de componentes para a acesso a banco de dados infinitamente superior ao dbExpress. Como resultado desta aquisição, o AnyDAC foi renomeado para FireDAC e acaba de se tornar parte do Delphi e C++Builder XE3, os usuários da edição Enterprise podem baixar o FireDAC gratuitamente, os usuários do Delphi Professional podem adquiri-lo por US$ 399.

Por muito tempo o até então AnyDAC permitiu aos desenvolvedores Delphi e C++ que usavam a edição Professional conectar a bancos de dados como Oracle, SQL Server, Sybase, Informix e outros, algo que até então somente era possível com as edições Enterprise e Architect.

Eu tenho muito o que dizer sobre o AnyDAC agora então FireDAC, no início do ano passado dediquei pelo menos 1 mês avaliando o então conhecido AnyDAC e agora vocês sabem o porque :).

Eu fiquei bem impressionado com a quantidade de recursos que o AnyDAC oferecia e a superioridade em relação ao dbExpress. FireDAC é tudo aquilo que o dbExpress tentou ser e nunca foi, eu digo isso porque FireDAC permite que você desenvolva aplicações para múltiplos bancos de dados de forma RAD, sem ter que fazer gambiarras e jeitinhos que eram necessários com o dbExpress, como por exemplo: re-mapeamento dos TFields quandos eles eram persistidos na aplicação, acesso a vários outros banco de dados, muito mais simples o desenvolvimento, acesso a recursos específicos de cada banco e muito mais. Abaixo uma lista com alguns recursos suportados pelo FireDAC.

  • Para todos os bancos de dados
    • Recuperação automática da conexão com o banco
    • Suporte unificad a eventos do banco de dados
    • Arquitetura simplificada, isso quer dizer que você não precisará mais colocar 3 componentes (Query + ClientDataSet + Provider) para simplesmente ter um cursor bi-direcional
    • Performance muito superior ao dbExpress
    • TADMemTable – dataset em memória e mais rápido que o TClientDataSet
    • Muito mais fácil migrar aplicações que ainda usam BDE para FireDAC, o que era mais trabalhoso quando se tentava migrar para dbExpress
  • Oracle
    • SELECT FOR UPDATE – não precisar mais de gambiarras como forçar UPDATE para travar um registro
    • Abortar execução de Query – quem não precisa disso?
    • Suporte a colunas ROWID – facilita e torna mais rápida a edição e refresh de dados
    • Suporte a RETURNING clause para refresh mais rápido dos dados – você não precisa mais fazer um novo select para obter o valor de um campo que foi atualizado por uma trigger
    • e muito mais…
  • Firebird
    • Suporte a RETURNING clause para refresh mais rápido dos dados
    • Trusted authentication
    • Suporte a serviços do banco de dados – backup, restore, validate, security, etc
    • Abortar execução de Query
  • PostgreSQL
    • Isso mesmo, agora suporte nativo a PostgreSQL
    • e muito mais…
  • SQL Server
    • Suporte a execução de comandos batch que retornam múltiplos result sets – Batch commands with multiple result sets
    • Abortar execução de Query
    • e muito mais
  • MySQL
    • Suporte a colunas AUTO_INCREMENT e retorno do último valor inserido
  • Drivers para vários bancos de dados compatíveis com Windows, Mac e iOS

Essa é uma pequena lista do que o FireDAC oferece, você pode saber mais sobre outros recursos do FireDAC, acessando a lista de recursos do AnyDAC através deste link.

FireDAC é sem dúvida uma solução melhor, sem dúvida vale a pena migrar suas aplicações de BDE ou dbExpress para FireDAC, muito recursos que os desenvolvedores Delphi e C++ vinham pedindo por muito tempo, estão agora presentes no FireDAC.

Claro que todos estão perguntando “O que irá acontecer com o dbExpress?”, o BDE morreu mas continua sendo usado nos dia de hoje:), o dbExpress ainda não está morto e acho que irá levar um tempo para que a Embarcadero oficialmente deixe de suporta-lo, entretanto não há porque manter duas tecnologias de acesso a banco de dados no Delphi, como eu já disse FireDAC é muito superior ao dbExpress, assim sendo o futuro é FireDAC.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/firedac-anydac-o-que-isso-representa-para-os-desenvolvedores-delphi-e-c/feed/ 35
Update 2 para Delphi XE3 e C++Builder XE3 http://www.andreanolanusse.com/pt/update-2-para-delphi-xe3-e-cbuilder-xe3/ http://www.andreanolanusse.com/pt/update-2-para-delphi-xe3-e-cbuilder-xe3/#comments Fri, 25 Jan 2013 02:23:38 +0000 http://www.andreanolanusse.com/pt/?p=4248 Foi disponibilizado o Update 2 para Delphi XE3 e C++Builder XE3, a maioria das correções no compilador 64-bit do C++, a lista completa de correções está disponível aqui. Você terá de desinstalar o seu Delphi e C++Builder XE3, mesmo que você tenha aplicado o Update 1. Caso você tenha instalado o Platform Assistant faça a […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Foi disponibilizado o Update 2 para Delphi XE3 e C++Builder XE3, a maioria das correções no compilador 64-bit do C++, a lista completa de correções está disponível aqui.

Você terá de desinstalar o seu Delphi e C++Builder XE3, mesmo que você tenha aplicado o Update 1. Caso você tenha instalado o Platform Assistant faça a desinstalação, pois o Update 2 traz atualizações para o mesmo.

Para efetuar o download do Update 2, visite a página de usuários registrados conforme os links abaixo:

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/update-2-para-delphi-xe3-e-cbuilder-xe3/feed/ 2
Dica – MySQL com dbExpress no Delphi 2010/XE – evitando problemas http://www.andreanolanusse.com/pt/dicas-mysql-com-dbexpress-no-delphi-2010xe-evitando-problemas/ http://www.andreanolanusse.com/pt/dicas-mysql-com-dbexpress-no-delphi-2010xe-evitando-problemas/#respond Wed, 16 Jan 2013 15:28:03 +0000 http://www.andreanolanusse.com/pt/?p=4207 Desde que o Delphi suporta MySQL através do driver dbExpress é comum ver desenvolvedores com certa dificuldade para conectar ao MySQL, vejo isso acontecer mais com aqueles que usam a versão do Delphi ou C++Builder 2010 e XE, isso poderia ser evitado ao ler o arquivo readme.html que está localizado no diretório de instalação do […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Desde que o Delphi suporta MySQL através do driver dbExpress é comum ver desenvolvedores com certa dificuldade para conectar ao MySQL, vejo isso acontecer mais com aqueles que usam a versão do Delphi ou C++Builder 2010 e XE, isso poderia ser evitado ao ler o arquivo readme.html que está localizado no diretório de instalação do Delphi.

Este arquivo documenta todas as versões de banco suportada pelo dbExpress, incluindo o MySQL que tem uma particularidade, a combinação de versões de DLL que podem ser feita, isso acontece porque o MySQL muda com frequência sua API e assim dificulta para qualquer fornecedor manter a compatibilidade, por isso essa combinação.

Abaixo informações que você deve saber e que estão no readme.html

Versões de servidores MySQL oficialmente suportadas e testadas pelo Delphi e C++Builder

MySQL 5.1, 5.0.27, 4.1 (Todas) (Driver dbxMYS.dll, Client libmysql.dll)

Combinação das versões de servidores e clientes MySQL que foram testados, ou seja, veja bem as versões de DLL que devem ser usadas no server e client

  • LibMySQL.dll (5.1.XX) Client  – DBXMys.dll MySQL 4.0.XX Server
  • LibMySQL.dll (5.1.XX) Client  – DBXMys.dll MySQL 5.0.XX Server
  • LibMySQL.dll (5.1.XX) Client  – DBXMys.dll MySQL 5.1.XX Server

Sendo objetivo, instale a versão do cliente do MySQL 5.1.xx para que sua aplicação cliente possa conectar a servidores MySQL 4.0.XX, 5.0.XX e 5.1XX.

Lembre-se de instalar o cliente do  MySQL 32-bits, se você instalar o cliente 64-bits jamais irá funcionar com o Delphi 2010 e XE.

Caso você tenha mais de uma versão Delphi instalada na mesma máquina, faça o seguinte?

Duas versões de IDE na mesma máquina pode fazer com que uma  das versões antigas do driver dbExpress para MySQL seja carregado, isso irá acontecer por causa da variável de sistema PATH, coloque o diretório bin da versão do Delphi que você quer executar a frente na variável de sistema PATH, você pode fazer isso através do menu Tools -> Options -> Environment Variables. Faça este procedimento se você desejar usar outra versão do Delphi.

Uma dica simples, mas que pode ajudar a economizar um tempinho.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/dicas-mysql-com-dbexpress-no-delphi-2010xe-evitando-problemas/feed/ 0
Migração de sistemas legado ou mal estruturados – Parte 1 http://www.andreanolanusse.com/pt/migracao-de-sistemas-legado-ou-mal-estruturados-parte-1/ http://www.andreanolanusse.com/pt/migracao-de-sistemas-legado-ou-mal-estruturados-parte-1/#comments Mon, 14 Jan 2013 07:02:22 +0000 http://www.andreanolanusse.com/pt/?p=4243 Migração de sistemas legados é um assunto que pode render horas, dias, semanas ou meses em qualquer empresa, algo que considero normal, pois envolve uma quantidade enorme de variáveis e traz grandes desafios. Não precisamos ir muito longe para identificar sistemas legado e os desafios para mantê-lo nos dias de hoje. Sistemas que cresceram muito […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Migração de sistemas legados é um assunto que pode render horas, dias, semanas ou meses em qualquer empresa, algo que considero normal, pois envolve uma quantidade enorme de variáveis e traz grandes desafios. Não precisamos ir muito longe para identificar sistemas legado e os desafios para mantê-lo nos dias de hoje.

Sistemas que cresceram muito rápido e em um curto espaço de tempo, menos de 1 ano por exemplo, pode não ser considerado legado, entretanto na maioria das vezes este crescimento rápido e não planejado não irá suportar o crescimento da empresa a médio e longo. Com isso, o assunto migração entra em cena novamente.

Meu objetivo nesta série de artigos é ir a fundo no tema, trazer um pouco da minha experiência, sugerir caminhos e alternativas para uma migração menos dolorosa, além de recomendar soluções que irão ajudá-los. Vale lembrar que não existe receita de bolo e vocês verão isso aqui, cada caso é um caso e ninguém melhor do que você para saber dos problemas nas soluções desenvolvidas por você ou sua empresa. Faça seus comentários ao final do artigo, eles irão agregar e ajudar outros a refletir sobre que caminho tomar na neste processo, além de me ajudar nos próximos artigos.

Se não é fácil e sabemos, então por onde começamos?

Todos tem de estar desarmados

A primeira coisa a se fazer neste processo é entrar desarmado, aberto a mudança, aceitar ideias, críticas e sugestões, expor o que você pensa e ouvir, ouvir, ouvir e ouvir muito. Todos aqueles envolvidos neste projeto, deverão estar conscientes disso e preparados para mudar seu comportamento, a pior coisa neste longo projeto é ter um grupo de pessoas remando contra, enquanto todos os outros estão remando para frente. Trabalho em equipe será fundamental, críticas, sugestões e debates calorosos existirão, mas todos tem que estar cientes de que é para o melhor do projeto.

Incorporar métodos ágeis como SCRUM já na fase inicial do projeto pode ser de grande ajuda, as práticas ágeis enfatizam muito a colaboração, trabalho equipe, interação entre as pessoas, etc. Isso pode começar a estabelecer um ponto de equilíbrio na equipe e reforçar de forma continua o trabalho em equipe.

Por que migrar?

Faça esta pergunta a si mesmo “Por que migrar?”, esqueça por um instante o famoso ditado “Time que está ganhando não se mexe”, ou seja, “sistema que está funcionando não se mexe”.

A grande maioria dos sistemas ERP desenvolvidos na década de 80 e início dos anos 90 adotaram a arquitetura Cliente/Servidor (Cliente/Server) e foram desenvolvidos para plataforma Desktop, ao longo do tempo isso foi mudando, a web se tornou uma plataforma mais atrativa e hoje vivemos no mundo dos dispositivos móveis. Naquela época muitas soluções baseadas em Web surgiram, mas o avanço da tecnologia foi tão rápido que essas antigas aplicações web não foram bem estruturadas, trazendo vários outros problemas. Enfim, integração entre plataformas e diversidade de meios de acesso tornou o modelo Cliente/Servidor obsoleto.

Considere como exemplo sistemas ERPs legado ou outros similares, reflita sobre o cenário mencionado no parágrafo anterior e traga para sua realidade, seus clientes hoje querem acesso as informações via web, via iPhone, iPad, Android e seus muitos celulares e tablets e assim por diante. A recente pesquisa que fiz aqui no blog mostrou que 75% dos entrevistados irão desenvolver aplicações para mobile e 45% irão migrar suas aplicações desktop para web em 2013. Como você faria essa migração hoje de forma rápida e escalável? Como você integraria apps com seu backend? Quanta regra de negócio seria reutilizada? Já se perguntou?

Seja Desktop ou Web, se seu sistema está baseado em Cliente/Servidor, a eficiência da sua empresa está comprometida pois você está o tempo todo fazendo remendos para atender as necessidades do mercado, isso eleva a dificuldade de manutenção do código, diminui a eficiência da sua equipe, aumenta o seu custo e o custo do seu cliente, ou seja, diminui sua competitividade no mercado.

Já deve fazer um tempo que seu cliente pede para que TODO o sistema seja Web, ele faz questão de dizer TODO O SISTEMA, ele não precisa de tudo e sim certos módulos importantes, como por exemplo relatórios, gráficos estatísticos em tempo real, acesso ao cadastro de clientes, etc. Mais uma vez arquitetura Cliente/Servidor se torna um problema, o seu cliente disse que os relatórios tem de estar acessíveis pela web e relatórios na web podem trazer uma carga enorme em todo o sistema. Como você atenderia a estas solicitações? Não precisa me dizer dos remendos, eu já imagino, replicar os dados para um servidor web, manter sincronizado, etc.. Isso é caro, não é escalável e se torna um remendo temporário que irá rasgar em pouco tempo.

Já se perguntou quanto custa manter seus sistemas Desktop? Depois de muitos anos sua aplicação virou um grande sistema, com dezenas de módulos, integrações, recursos, dependências, etc.. Para responder essa pergunta, você precisa se fazer as perguntas abaixo:

  • Quantos problemas de instalação do sistema são registrados mensalmente?
  • Quantos problemas de compatibilidade de Windows são registrados mensalmente?
  • Quantos problemas de atualização do sistema são registrados mensalmente?
  • Quantas visitas mensais os técnicos do suporte técnico fazem a clientes para resolver problemas que não são possíveis de resolver remotamente?
  • Quanto representa essa grande estrutura de suporte técnico no seu custo final?
  • Que crescimento você estima para o negócio se todo sistema estivesse na Web?
  • Quais diferenciais a web traria para o seu negócio?
  • Quanto tempo irá levar para você desenvolver uma aplicação Android com base na atual infra que sua empresa oferece?
  • Etc…

Provavelmente você não tenha a resposta para todas, então é hora de começar a buscar e mensurar estes custos.

Aplicações desktop aumentam o custo final, principalmente por causa do alto-custo do suporte técnico, não estou dizendo para mandar embora metade da equipe de suporte técnico, muito pelo contrário, a equipe de suporte técnico tem um grande conhecimento do sistemas e pode ser reutilizado em outras funções, como desenvolvedores, testadores, analistas, etc…

Que tal oferecer sua solução como serviço (SaaS), o negócio do seu cliente não é TI, porque não ter  uma infra-estrutura na nuvem e oferecer sua solução? Cobrar por este serviço.

São inúmeros os pontos a se pensar, os pontos aqui mencionados são alguns entre os milhares e talvez não seja razão para você, o que é totalmente aceitável da minha parte, entretanto reflita sobre outros pontos que você acha importante e faça sua própria análise.

Vou ficando por aqui com esta primeira parte, enquanto isso reflita sobre as razões que o levaria a migrar sistemas legados ou mal estruturados.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/migracao-de-sistemas-legado-ou-mal-estruturados-parte-1/feed/ 38
Delphi XE3 e C++Builder XE3 Hotfix 4 http://www.andreanolanusse.com/pt/delphi-xe3-e-cbuilder-xe3-hotfix-4/ http://www.andreanolanusse.com/pt/delphi-xe3-e-cbuilder-xe3-hotfix-4/#comments Sat, 03 Nov 2012 06:55:06 +0000 http://www.andreanolanusse.com/pt/?p=4183 Se você desenvolve aplicações para o mercado Koreano, o hotfix 4 para Delphi X3 e C++Builder XE3 é pra você. Esse hotfix resolve um problema ao utilizar IME com FireMonkey, o download pode ser feito aqui. Caso você queira saber mais sobre o Hotfix 1, 2 e 3 você as encontra aqui.  

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Se você desenvolve aplicações para o mercado Koreano, o hotfix 4 para Delphi X3 e C++Builder XE3 é pra você.

Esse hotfix resolve um problema ao utilizar IME com FireMonkey, o download pode ser feito aqui.

Caso você queira saber mais sobre o Hotfix 1, 2 e 3 você as encontra aqui.

 

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-xe3-e-cbuilder-xe3-hotfix-4/feed/ 2
Delphi Conference 2012 http://www.andreanolanusse.com/pt/delphi-conference-2012/ http://www.andreanolanusse.com/pt/delphi-conference-2012/#comments Fri, 19 Oct 2012 06:01:12 +0000 http://www.andreanolanusse.com/pt/?p=1623 Na próxima semana dia 23 acontece o Delphi Conference 2012, conferência que irá reunir a comunidade Delphi em um dia. As inscrições já foram encerradas e foi aberta uma lista de espera, talvez seja tarde mas vale apena tentar. A agenda foi publicada e está quase completa, você pode baixar a versão PDF aqui. Este ano Michael Swindell (Senior […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Na próxima semana dia 23 acontece o Delphi Conference 2012, conferência que irá reunir a comunidade Delphi em um dia. As inscrições já foram encerradas e foi aberta uma lista de espera, talvez seja tarde mas vale apena tentar. A agenda foi publicada e está quase completa, você pode baixar a versão PDF aqui.

Este ano Michael Swindell (Senior VP de Produtos e Marketing da Embarcadero), além de amigo pessoal é um profissional que admiro muito estará presente ao evento, aqueles que forem ao evento terão a chance de compartilhar suas sugestões e críticas com ele, seja em relação ao Delphi ou Embarcadero, certamente ele irá ouvir e trazer seu feedback na volta.

Antes que perguntem, não estarei lá, razões obvias como todos já sabem, porem muito em breve vamos nos encontrar  em um evento online onde falarei sobre Gestão de Equipes Ágeis e Portfolio de Projetos integrado, vamos ver em detalhes como usar SCRUM no dia a dia e ao mesmo tempo dar visibilidade aos gerentes de projetos, vai ser bem legal

O tema é suporte importante e relevante para todos aqueles que estão ou pretendem embarcar no mundo dos métodos ágeis, sejam gerentes de projeto, produto ou desenvolvimento, além de líderes de equipe, testadores e desenvolvedores, vale super a pena e vocês irão gostar.

Fique ligado aqui no blog ou cadastre seu email logo abaixo para ser notificado assim que eu anunciar o evento aqui.


 

 

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-conference-2012/feed/ 5
Delphi XE3 e suas novidades – Parte 2 http://www.andreanolanusse.com/pt/delphi-xe3-e-suas-novidades-parte-2/ http://www.andreanolanusse.com/pt/delphi-xe3-e-suas-novidades-parte-2/#comments Mon, 01 Oct 2012 08:30:45 +0000 http://www.andreanolanusse.com/pt/?p=1616 Dando sequência no review do Delphi XE3, vamos conhecer as novidades relacionadas ao IDE, VCL e RTL. IDE O IDE agora traz alguns novos Wizard para criação de aplicações Metropolis para VCL e FireMonkey, você verá dois novos tipos de assistentes (wizards): VCL Metropolis UI Application FireMonkey Metropolis UI Application Assinatura da Aplicação na Apple […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Dando sequência no review do Delphi XE3, vamos conhecer as novidades relacionadas ao IDE, VCL e RTL.

IDE

O IDE agora traz alguns novos Wizard para criação de aplicações Metropolis para VCL e FireMonkey, você verá dois novos tipos de assistentes (wizards):

  • VCL Metropolis UI Application
  • FireMonkey Metropolis UI Application

Assinatura da Aplicação na Apple Mac Store

Nas opções do projeto você verá algumas novas opções relacionados a compilação de aplicações para Mac OS que irá lhe ajudar a fazer o sandbox, code sign e preparação da aplicação para ser enviada à Apple Mac Store, a Apple exige que seja feito o sandbox e code sign, assim este recurso facilita e melhora a experiência do desenvolvedor no processo como um todo.

Conversão de Forms VCL e FireMonkey para Metropolis

No Designer do Formulário ao clicar com o botão direito você terá a opção “Convert to UI Metropolis Form”, essa opção converte seu Form VCL ou FireMonkey para o estilo metropolis.

RTL

Record Helpers para tipos simples

Delphi XE3 traz uma novidade bem legal que permite extender tipos primitivos ou simples através do uso de Record Helpers, se você não está familiarizado com Record ou Class Helpers leia este artigo.

[quote style=”boxed”]Aproveite e me siga no Twitter  [/quote]

Vamos usar o TStringHelper que é um dos record helpers que vem na RTL do XE3, com ele vamos basicamente acessamos diversos métodos diretamente a partir de uma String como se ele fosse um “objeto”, por exemplo em vez de escrever Length(Nome) para saber o tamanho da variável Nome, vamos escrever Nome.Length e obter como retorno o tamanho da mesma, basicamente o TStringHelper extende o tipo String implementando uma série de métodos que nos permite fazer isso.

Abaixo a definição original da RTL para o TStringHelper.

TStringHelper = record helper for string
private
  function GetChars(Index: Integer): Char; inline;
  function GetLength: Integer; inline;
  class function CharInArray(const C: Char; const InArray: array of Char): Boolean; static;
  function IndexOfAny(const Values: array of string; var Index: Integer): Integer; overload;
public
  const Empty = '';
  // Methods
  class function Create(C: Char; Count: Integer): string; overload; inline; static;
  class function Create(const Value: array of Char; StartIndex: Integer; Length: Integer): string; overload; static;
  class function Create(const Value: array of Char): string; overload; static;
  class function Compare(const StrA: string; const StrB: string): Integer; overload; static;
  class function Compare(const StrA: string; const StrB: string; IgnoreCase: Boolean): Integer; overload; static;
  class function Compare(const StrA: string; IndexA: Integer; const StrB: string; IndexB: Integer; Length: Integer): Integer; overload; static;
  class function Compare(const StrA: string; IndexA: Integer; const StrB: string; IndexB: Integer; Length: Integer; IgnoreCase: Boolean): Integer; overload; static;
  class function CompareOrdinal(const strA: string; const strB: string): Integer; overload; static;
  class function CompareOrdinal(const strA: string; indexA: Integer; const strB: string; indexB: Integer; length: Integer): Integer; overload; static;
  function CompareTo(const strB: string): Integer;
  function Contains(const Value: string): Boolean;
  class function Copy(const Str: string): string; inline; static;
  procedure CopyTo(SourceIndex: Integer; var destination: array of Char; DestinationIndex: Integer; Count: Integer);
  class function EndsText(const ASubText, AText: string): Boolean; static;
  function EndsWith(const Value: string): Boolean; overload;
  function EndsWith(const Value: string; IgnoreCase: Boolean): Boolean; overload;
  function Equals(const Value: string): Boolean; overload;
  class function Equals(const a: string; const b: string): Boolean; overload; static;
  class function Format(const Format: string; const args: array of const): string; overload; static;
  function GetHashCode: Integer;
  function IndexOf(value: Char): Integer; overload; inline;
  function IndexOf(const Value: string): Integer; overload; inline;
  function IndexOf(Value: Char; StartIndex: Integer): Integer; overload;
  function IndexOf(const Value: string; StartIndex: Integer): Integer; overload;
  function IndexOf(Value: Char; StartIndex: Integer; Count: Integer): Integer; overload;
  function IndexOf(const Value: string; StartIndex: Integer; Count: Integer): Integer; overload;
  function IndexOfAny(const AnyOf: array of Char): Integer; overload;
  function IndexOfAny(const AnyOf: array of Char; StartIndex: Integer): Integer; overload;
  function IndexOfAny(const AnyOf: array of Char; StartIndex: Integer; Count: Integer): Integer; overload;
  function Insert(StartIndex: Integer; const Value: string): string;
  function IsDelimiter(const Delimiters: string; Index: Integer): Boolean;
  function IsEmpty: Boolean;
  class function IsNullOrEmpty(const Value: string): Boolean; static;
  class function IsNullOrWhiteSpace(const Value: string): Boolean; static;
  class function Join(const Separator: string; const values: array of const): string; overload; static;
  class function Join(const Separator: string; const Values: array of string): string; overload; static;
  class function Join(const Separator: string; const Values: IEnumerable): string; overload; static;
  class function Join(const Separator: string; const value: array of string; StartIndex: Integer; Count: Integer): string; overload; static;
  function LastDelimiter(const Delims: string): Integer;
  function LastIndexOf(Value: Char): Integer; overload;
  function LastIndexOf(const Value: string): Integer; overload;
  function LastIndexOf(Value: Char; StartIndex: Integer): Integer; overload;
  function LastIndexOf(const Value: string; StartIndex: Integer): Integer; overload;
  function LastIndexOf(Value: Char; StartIndex: Integer; Count: Integer): Integer; overload;
  function LastIndexOf(const Value: string; StartIndex: Integer; Count: Integer): Integer; overload;
  function LastIndexOfAny(const AnyOf: array of Char): Integer; overload;
  function LastIndexOfAny(const AnyOf: array of Char; StartIndex: Integer): Integer; overload;
  function LastIndexOfAny(const AnyOf: array of Char; StartIndex: Integer; Count: Integer): Integer; overload;
  function PadLeft(TotalWidth: Integer): string; overload; inline;
  function PadLeft(TotalWidth: Integer; PaddingChar: Char): string; overload; inline;
  function PadRight(TotalWidth: Integer): string; overload; inline;
  function PadRight(TotalWidth: Integer; PaddingChar: Char): string; overload; inline;
  function Remove(StartIndex: Integer): string; overload; inline;
  function Remove(StartIndex: Integer; Count: Integer): string; overload; inline;
  function Replace(OldChar: Char; NewChar: Char): string; overload;
  function Replace(OldChar: Char; NewChar: Char; ReplaceFlags: TReplaceFlags): string; overload;
  function Replace(const OldValue: string; const NewValue: string): string; overload;
  function Replace(const OldValue: string; const NewValue: string; ReplaceFlags: TReplaceFlags): string; overload;
  function Split(const Separator: array of Char): TArray; overload;
  function Split(const Separator: array of Char; Count: Integer): TArray; overload;
  function Split(const Separator: array of Char; Options: TStringSplitOptions): TArray; overload;
  function Split(const Separator: array of string; Options: TStringSplitOptions): TArray; overload;
  function Split(const Separator: array of Char; Count: Integer; Options: TStringSplitOptions): TArray; overload;
  function Split(const Separator: array of string; Count: Integer; Options: TStringSplitOptions): TArray; overload;
  function StartsWith(const Value: string): Boolean; overload;
  function StartsWith(const Value: string; IgnoreCase: Boolean): Boolean; overload;
  function Substring(StartIndex: Integer): string; overload;
  function Substring(StartIndex: Integer; Length: Integer): string; overload;
  function ToCharArray: TArray; overload;
  function ToCharArray(StartIndex: Integer; Length: Integer): TArray; overload;
  function ToLower: string;
  function ToLowerInvariant: string;
  function ToUpper: string;
  function ToUpperInvariant: string;
  function Trim: string; overload;
  function Trim(const TrimChars: array of Char): string; overload;
  function TrimEnd(const TrimChars: array of Char): string;
  function TrimStart(const TrimChars: array of Char): string;
  property Chars[Index: Integer]: Char read GetChars;
  property Length: Integer read GetLength;
end;

Abaixo um exemplo prático:

{$APPTYPE CONSOLE}

uses
  System.SysUtils;

var
  s1 :string;
begin

  s1 := 'Usando TStringHelper no Delphi XE3';
  Writeln( Format('O tamanho da string é is %d',[s1.Length] ));

  Writeln(Format('Convertendo para Maiúsculo %s',[s.ToUpper]));

  //Usando a função Contains
  if s1.Contains('XE3') then
      Writeln(Format('A string "%s" contém a string "%s"',[s1,'XE3']));

  Readln;
end.

O mais importante neste novo recurso é poder extender os tipos simples, mas eu diria também que isso abre as portas para podermos utilizar os tipos primitivos (simples) como objetos, eles ainda não são, mas fique atento, pois as portas estão abertas.

A RTL ainda traz diversos outros record helpers:

  • System – TSingleHelper = record helper para Single
  • System – TDoubleHelper = record helper para Double
  • System – TExtendedHelper = record helper para Extended
  • System.Classes – TUInt32Helper = record helper para UInt32
  • System.SyncObjs – TCriticalSectionHelper = record helper para TRTLCriticalSection
  • System.SyncObjs – TConditionVariableHelper = record helper para TRTLConditionVariable
  • System.Mac.CFUtils – CFGregorianDateHelper = record helper para CFGregorianDate
  • System.SysUtils – TGuidHelper = record helper para TGUID
  • Winapi.D2D1 – D2DMatrix3x2FHelper = record helper para TD2DMatrix3X2F
  • Vcl.Themes – TElementMarginsHelper = record helper para TElementMargins

Variáveis Globais (TFormatSettings)

Vinte variáveis globais parte da System.SysUtils foram removidas (deprecated), estas variáveis são aquelas relacionadas ao formato da data, moeda, separados de decimal e milhar, etc…, para ser mais preciso algumas delas: DateSeparator, DecimalSeparator, CurrencyFormat, etc..

A partir do XE3 você terá de usar a variável System.SysUtils.FormatSettings ou criar a sua instância de TFormatSettings, todas as variáveis anteriormente globais agora são parte do TFormatSettings.

Ao compilar você receberá um erro de identificador não declarado, assim é só fazer a mudança já mencionado. Particularmente eu gosto desta mudança, variáveis globais não são uma boa prática.

Refactoring FireMonkey

Diversos tipos do FireMonkey e funções matemáticas relacionadas ao FireMonkey foram movidas para a RTL (unit System), alguns exemplos:

  • Vector passou de FMX.Types para System.Types.Vector
  • Os seguintes tipos TMatrix3D, Point3D, TQuaternion3D, TVector3D, Vector3D sairam da unit FMX.Types3D e foram para System.Types.

Novos métodos e helpers

Abaixo alguns métodos adicionados a RTL e o link para a documentação explicando cada um.

Três novos helper types (TSingleHelper,TDoubleHelper, and TExtendedHelper) que substituem os seguintes records: TSingleRec, TDoubleRec, TExtendedRec.

VCL

Além dos suporte a UI Metropolis que comentei na parte 1 das novidades do XE3, alguns refactoring aconteceram na VCL também e a razão disto é o suporte a Actions no FireMonkey, desta forma Actions agora passa a ser independente de plataforma e com isso abre a possibilidade de suportar outras plataformas futuramente.

Outra novidade é o suporte a efeitos quando você passa o mouse sobre controles da VCL, por exemplo o TBitBtn ou TButton, basta mudar a propriedade AnimationOnControls para True e seus controles irão se comportar conforme definido no estilo corrente.

Vou ficando por aqui com a segunda parte e em breve volto com a terceira e última parte do das novidades do XE3.

Até breve!!!

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-xe3-e-suas-novidades-parte-2/feed/ 14
Delphi XE3 e C++Builder XE3 Hotfixes 1, 2 e 3 http://www.andreanolanusse.com/pt/delphi-xe3-e-cbuilder-xe3-hotfixes-1-2-e-3/ http://www.andreanolanusse.com/pt/delphi-xe3-e-cbuilder-xe3-hotfixes-1-2-e-3/#comments Thu, 27 Sep 2012 06:32:26 +0000 http://www.andreanolanusse.com/pt/?p=1614 Foram disponibilizados 3 hotfixes para Delphi XE3 e C++Builder XE3. Hotfix 1 – Resolve problema com o ShowMessage em aplicações FireMonkey em Mac OS X – download Hotfix 2 – Resolve problemas relacionados ao uso do GestureManager em aplicações FireMonkey – download Hotfix 3 – Somente para a edição Professional, resolve problema com o driver do SQLite na edição […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Foram disponibilizados 3 hotfixes para Delphi XE3 e C++Builder XE3.

  • Hotfix 1 – Resolve problema com o ShowMessage em aplicações FireMonkey em Mac OS X – download
  • Hotfix 2 – Resolve problemas relacionados ao uso do GestureManager em aplicações FireMonkey – download
  • Hotfix 3 – Somente para a edição Professional, resolve problema com o driver do SQLite na edição Professional – download

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-xe3-e-cbuilder-xe3-hotfixes-1-2-e-3/feed/ 1
Rave Reports não mais no Delphi XE3 e C++Builder XE3 http://www.andreanolanusse.com/pt/rave-reports-nao-mais-no-delphi-xe3-e-cbuilder-xe3/ http://www.andreanolanusse.com/pt/rave-reports-nao-mais-no-delphi-xe3-e-cbuilder-xe3/#comments Sun, 16 Sep 2012 14:03:05 +0000 http://www.andreanolanusse.com/pt/?p=1607 Caso o Rave Reports é a sua solução para gerar relatórios em Delphi ou C++Builder, você pode notar que ele não vem mais incluído no Delphi e C++Builder. Por muito tempo os desenvolvedores vem reclamando da falta de suporte e inovação do Rave, isso continua nos dias de hoje. Até o momento a Nevrona não […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Caso o Rave Reports é a sua solução para gerar relatórios em Delphi ou C++Builder, você pode notar que ele não vem mais incluído no Delphi e C++Builder. Por muito tempo os desenvolvedores vem reclamando da falta de suporte e inovação do Rave, isso continua nos dias de hoje. Até o momento a Nevrona não atualizou para XE3 e não publicou nenhum comunicado no seu website.

Fast Report uma outra solução para relatórios compatível com Delphi e C++Builder é parte da ferramenta desde o XE2, isso leva você a pensar no trabalho de migração e os recursos que deveram ser alocados para efetuar tal tarefa. Com relação aos recursos nada pode ser feito, entretanto com relação a conversão dos relatórios você pode usar 0 conversor que acompanha o Fast Report e migrar seus relatórios do Rave, o conversor também suporte migração de relatórios do Quick Report e Report Builder.

A um tempo atrás eu utilizei o conversor para migrar relatórios do Rave, foram relatórios simples, se você usar para migrar relatórios mais complexos, relate sua experiência aqui no blog para outros saberem como foi.

Caso você tenha dificuldades para converter seus relatórios do Rave usando conversor do Fast Report, visite o fórum da Fast.

Além disso é bom lembrar que você tem diversas outras opções para relatório, entre elas: Report Builder (comercial), FortesReport (free e open source) e outras.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/rave-reports-nao-mais-no-delphi-xe3-e-cbuilder-xe3/feed/ 16
Delphi XE3 e suas novidades – Parte 1 http://www.andreanolanusse.com/pt/delphi-xe3-e-suas-novidades-parte-1/ http://www.andreanolanusse.com/pt/delphi-xe3-e-suas-novidades-parte-1/#comments Tue, 11 Sep 2012 04:20:28 +0000 http://www.andreanolanusse.com/pt/?p=1586 Como prometido aqui está a parte 1 do meu review sobre o Delphi XE3 que foi anunciado recentemente e é parte da suíte RAD Studio XE3 e traz também as versões XE3 do C++Builder e Prism, além do HTML5 Builder o novo nome para o RadPHP e com algumas novidades. Aproveitando a oportunidade de uma olhada […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Como prometido aqui está a parte 1 do meu review sobre o Delphi XE3 que foi anunciado recentemente e é parte da suíte RAD Studio XE3 e traz também as versões XE3 do C++Builder e Prism, além do HTML5 Builder o novo nome para o RadPHP e com algumas novidades.

Aproveitando a oportunidade de uma olhada nos artigos sobre desenvolvimento ágil de software que estou publicando semanalmente, já são 3 artigos e estão disponíveis neste link http://www.andreanolanusse.com/pt/tag/agile

Voltando ao tema principal, até aqui esta versão foi cercada de várias polêmicas, algumas delas você acompanhou aqui no blog e pelas centenas de blogs na internet, entre elas:

  • A mudança no contrato de licença foi abortada, ou seja, os novos usuários de Delphi Professional continuarão podendo utilizar a ferramenta para desenvolver suas aplicações Client/Server com os componentes dbGo (ADO) ou drivers dbExpress de terceiros.
  • O suporte ao desenvolvimento iOS (iPad, iPhone) que vinha no XE2 foi retirado do Delphi XE3, para desenvolver algo para iOS você terá que usar o XE2.
  • Na semana passada veio a tona a saída do Barry Kelly, o principal engenheiro do compilador do Delphi anunciou no seu blog sua saída da Embarcadero, tive a oportunidade de trabalhar com ele, sem dúvida um grande profissional e um dos mais brilhantes do mundo.

Voltando ao tema da falta de suporte a desenvolvimento mobile no XE3, a Embarcadero pretende lançar no primeiro trimestre de 2013 um addon para o XE3 que está sendo chamado de “Mobile Studio”, basicamente será um “novo produto” que irá rodar dentro do IDE do Delphi. A promessa é que o “Mobile Studio” traga o novo compilador ARM que já vem sem trabalhado a algum um tempo, não só para iOS mas para Android também, além dos drivers dbExpress, ClientDataSet e acesso a bancos de dados SQLite e InterBase ToGo, além claro de componentes específicos para mobile, aqueles que assistiram ano passado o webinar que apresentei sobre desenvolvimento mobile com XE2 sabem do que estou falando, se você não participou pode assistir aqui.

 

Detalhes comerciais sobre o “Mobile Studio” não foram e nem serão divulgados tão cedo, mas como será um novo produto eu acredito que você terá que adquirir separadamente. É esperar o primeiro trimestre de 2013 para conferir o que virá e como virá. A ideia deste artigo é falar sobre as novidades e deixar para outra oportunidade o tema relacionado a desenvolvimento de aplicações Mobile . Vamos em frente e abaixo um pequeno resumo das principais melhorias do Delphi XE3, visto que novos recursos nesta versão foram muito poucos.

FireMonKey 2

O Delphi XE2 recebeu 5 updates e todos eles praticamente focados em atualizações para o FireMonkey, assim sendo as melhorias nesta nova versão focaram em trazer recursos que não estavam presentes na primeira versão do FireMonkey, como Actions, Anchors, Touch e Gesture. Recursos estes existentes na VCL e que faziam muita falta para quem começava a usar FireMonkey, agora eles estão presentes no Delphi XE3. O Editor de Styles traz algumas novas funcionalidades, incluindo o suporte a edição de BitMap no próprio designer. O mais importante em relação a Style nesta versão é que você pode agora aplicar estilos a non-client area, em outras palavras aplicar estilo as bordas do formulário em Windows e Mac.

[quote style=”boxed”]Aproveite e me siga no Twitter  [/quote]

FM2 agora traz componentes e classes para trabalhar com aúdio e vídeo no Windows e Mac, basicamente FM2 abstrai as API’s do sistema operacional e os traz como componentes e classes para Delphi. Além disso existem dois novos componentes não visuais, o Location Sensor (Windows e Mac) e Motion Sensor (somente Windows).

Windows 8 e UI Metropolis

Esta novidade deu o que falar nos blogs e forums de Delphi pela internet, principal razão é que o suporte a UI Metropolis, anteriormente chamado pela Microsoft “Metro” permite que aplicações VCL e FireMonkey tenham a aparência “Metro”, basicamente com o botão direito do mouse no form você transformar o visual do seu Form em interface Metropolis.

A discussão toda na internet foi porque todos esperavam poder desenvolver este tipo de aplicação em Delphi e distribuir através da nova loja online da Microsoft que virá com Windows 8, infelizmente isso não será possível neste momento, pois o suporte a WinRT não está disponível para parceiros Microsoft ainda, somente o Visual Studio neste momento traz este suporte. É esperar que a Microsoft libere para seus parceiros e assim a Embarcadero possa implementar.

Mesmo assim existe alguns valores neste recurso, por exemplo poder simular UI Metropolis em aplicações que rodam em Windows XP, 2000, Vista e 7 de forma nativa, talvez isso seja muito específico ou não, vai depender de você avaliar a sua necessidade e verificar se o seu negócio pode tirar proveito ou não deste recurso.

Driver dbExpress para SQLite e InterBase ToGo

Agora temos um novo driver dbExpress para SQLite, como SQLite é o banco de dados padrão em iOS e Android, certamente este driver será utilizado para o Mobile Studio.

E foi adicionado um driver específico para InterBase ToGo que é a versão do InterBase de fácil deploy, basicamente uma DLL e você tem server e client juntos.

DataSnap

Apenas correções no DataSnap XE3, nenhum recurso novo foi adicionado até então

No próximo artigo vou comentar sobre as melhorias na VCL, IDE, RTL, linguagem e claro minha conclusão sobre esta nova versão.

Enquanto isso você pode ler a série de artigos sobre desenvolvimento ágil de software que estou publicando semanalmente aqui no blog, já são 3 artigos.

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-xe3-e-suas-novidades-parte-1/feed/ 50
Delphi Third Party Alliance e mudança na licença do Delphi XE3 revertido http://www.andreanolanusse.com/pt/delphi-third-party-alliance-e-mudanca-na-licenca-do-delphi-xe3-revertido/ http://www.andreanolanusse.com/pt/delphi-third-party-alliance-e-mudanca-na-licenca-do-delphi-xe3-revertido/#comments Mon, 03 Sep 2012 04:49:33 +0000 http://www.andreanolanusse.com/pt/?p=1588 Delphi Third Party Alliance Eu acabo de receber um convite para participar de um grupo no Facebook chamado “Delphi Third Party Alliance”, baseado na descrição do grupo o objetivo é “promover  de forma saudável o ecosistema de componentes de terceiro para Delphi e a comunidade de usuários”. Eu gostei da ideia, existem muitos componentes espalhados por […]

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Delphi Third Party Alliance

Eu acabo de receber um convite para participar de um grupo no Facebook chamado “Delphi Third Party Alliance”, baseado na descrição do grupo o objetivo é “promover  de forma saudável o ecosistema de componentes de terceiro para Delphi e a comunidade de usuários”. Eu gostei da ideia, existem muitos componentes espalhados por ai e este grupo pode se tornar uma forma de compartilhar o que existem por ai para toda a comunidade Delphi.

O grupo é administrado por diversos representantes das empresas que desenvolvem componentes pra Delphi, é um grupo aberto e qualquer um pode se juntar ao grupo, acesse o link http://www.facebook.com/groups/DelphiThirdPartyAlliance/

Os fornecedores de componentes estão unindo forças.

Reversão da mudança do contrato de licença (EULA) do Delphi XE3

A Embarcadero acaba de notificar os seus Technology Partners sobre a versão final do EULA para XE3, eles reverteram a decisão que afetaria novos usuários no desenvolvimento de aplicações Cliente/Servidor com Delphi Pro.

Abaixo o comunicado enviado pela Embarcadero a seus Technology Partners e também detalhes do novo contrato de licença (EULA).

We now have a final license agreement. There should be nothing in the final EULA – when it is truly finalized in the RTM version – that should cause any problems for partners or our customers. The license (EULA) is basically similar to the XE2 file. The EULA (which is included with every shipping product) will become “final” when the we sign off the release to manufacturing build. We have included portions of the final EULA below. Note that any Professional edition restrictions still included are only related only to the use of “dbExpress” technology and do not restrict the use of technolgy partner or other 3rd party client/server or multi-tier technologies by Professional edition customers.


ADDITIONAL LICENSE TERMS APPLICABLE TO STARTER EDITION

In the event Licensee has obtained a Starter Edition license the following terms hereby apply. Licensee may use the Product to develop software (i) for which Licensee does not charge directly or indirectly a fee or receive other consideration including but not limited a license fee, a service fee, a development fee, a consulting fee, a subscription fee, a support fee, a hosting fee or the like and (ii) for which Licensee only charges fees (including but not limited a license fee, a service fee, a development fee, a consulting fee, a subscription fee, a support fee, a hosting fee or the like) that cumulatively, on an annual basis, do not exceed USD$1000. In the event any (for profit or non-profit) company elects to license the software then (i) the total company revenues may not exceed USD$1000 and (ii) the total number of Starter Edition licenses deployed may not exceed 5.

ADDITIONAL LICENSE TERMS APPLICABLE TO SOFTWARE LICENSED FOR EDUCATIONAL USE

In the event Licensee has obtained an educational license the following terms apply. Licensee may exercise Licensee’s rights under this Agreement to use the Product and to create Works solely for Licensee’s own personal use in providing or receiving instruction within the limited scope of guided computer programming and/or software training courses in which Licensee are a direct and personal participant, either as student or instructor (“Courses”). Licensee may only reproduce, distribute and use Works, in source or object code form, to other participants of the Courses and then only for educational or training purposes. Licensee may not use the Products or Works created with the products for any commercial, business, governmental or institutional purpose of any kind, except to the extent Licensee are an instructor teaching a Course. All rights not specifically granted to Licensee herein are retained by Licensor.

ADDITIONAL LICENSE TERMS APPLICABLE TO RAD STUDIO, DELPHI AND C++BUILDER,
PROFESSIONAL AND PROFESSIONAL ACADEMIC EDITIONS

In the event Licensee has obtained a RAD Studio, Delphi or C++Builder Professional, or Professional Academic product license then the following terms apply.

Subject to the terms and conditions of this Agreement, Licensor grants to Licensee as the licensed user of the Product the limited right to use that portion of the Product identified as “dbExpress”, in executable form only, to access a local database installed on the same machine as the Work. Licensee may not use that portion of the Product identified as “dbExpress” in association with a database located on a different machine other than the machine on which the Works are installed.

CLIENT/SERVER PACK

If licensee has purchased a Client/Server Pack, the Licensee of RAD Studio, Delphi, or C++Builder XE3 Professional Edition (“Product”) may deploy that portion of the Product identified as “dbExpress” and dbExpress enterprise database drivers, in executable form only, to enable client server database access. Embarcadero may deliver the Product identified as “Enterprise,” however Licensee is licensed to use only the “Professional” edition features plus “dbExpress” and the Enterprise dbExpress database drivers in a client/server configuration. Licensee may evaluate the n-Tier DataSnap functionality included in the Enterprise Product delivered, but may not deploy or redistribute DataSnap.

 

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/delphi-third-party-alliance-e-mudanca-na-licenca-do-delphi-xe3-revertido/feed/ 4
Polêmica mudança no contrato de licença do Delphi XE3 e C++Builder XE3 http://www.andreanolanusse.com/pt/polemica-mudanca-no-contrato-de-licenca-do-delphi-xe3-e-cbuilder-xe3/ http://www.andreanolanusse.com/pt/polemica-mudanca-no-contrato-de-licenca-do-delphi-xe3-e-cbuilder-xe3/#comments Wed, 29 Aug 2012 08:12:10 +0000 http://www.andreanolanusse.com/pt/?p=1574 Delphi XE3 será lançado muito em breve e alguns previews já foram publicados, infelizmente essa versão vem recheada de polêmicas, algumas notícias tem vazado o que é lastimável quando isso acontece, pois demonstra a falta de respeito e palavra daqueles que assinam o acordo de confidencialidade (NDA).

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>

Delphi XE3 será lançado muito em breve e alguns previews já foram publicados, infelizmente essa versão vem recheada de polêmicas, algumas notícias tem vazado o que é lastimável quando isso acontece, pois demonstra a falta de respeito e palavra daqueles que assinam o acordo de confidencialidade (NDA).

A maior polêmica está no novo contrato de licença (EULA) que vazou esta semana, onde os novos usuários de Delphi somente poderão utilizar a edição Professional para acesso a banco de dados local, seja com os componentes do Delphi ou de terceiros, para desenvolver aplicações Client/Server os novos usuários deverão utilizar a edição Enterprise ou superior, ou comprar o Addon Client/Server para a edição Professional. Caso você tenha uma licença entre o Delphi 1 até o XE2 você não será afetado por essa restrição do XE3.

Abaixo o texto original:

. the use of data access technologies for client/server
connectivity will no longer be allowed in the Professional edition.
This includes both Embarcadero and 3rd party solutions. Professional
users may only, legally, access local databases with their applications.

Users who want to use client/server database access can purchase a
Client/Server Add-On Pack for their Professional edition or purchase
an Enterprise, Ultimate or Architect edition product.

This restriction if for new licenses only. Users upgrading to XE3
will be “grandfathered” in that they will be able to continue to use
3rd party data access technologies for client/server database access
in version XE3 ..

 

Ainda existem questões em abertas sobre a definição de novos usuários, por exemplo, se você tem uma licença do Delphi 2006 ou versão anterior e deseja atualizar para uma nova versão, hoje você terá que comprar uma nova licença, pois somente quem tem uma das 3 últimas versões do Delphi pode fazer o upgrade, ai fica a pergunta este usuário será ou não afetado?

Além de tudo isso, os Technology Partners, aqueles que desenvolvem componentes pra Delphi serão impactados, pois muitos usuários de Delphi Professional utilizam componentes de terceiros para acesso remote de bancos de dados como Oracle, SQL Server, DB2 e outros.

A polêmica é gigantesca, o forum da Embarcadero tem uma threads sobre o assunto com mais de 300 replies, outros blogs tratam do tema também.

O produto ainda não foi lançado e toda essa discussão tem um lado positivo, deixar a Embarcadero saber a opinião dos usuários de Delphi e fazer as correções necessárias se assim desejar antes do lançamento oficial.

O que você acha desta mudança?

Andreano Lanusse | Tecnologia e Desenvolvimento de Software Siga-me no Twitter: @andreanolanusse

]]>
http://www.andreanolanusse.com/pt/polemica-mudanca-no-contrato-de-licenca-do-delphi-xe3-e-cbuilder-xe3/feed/ 26