C++Builder – 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.13 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
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
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
dbExpress Framework no Windows e Mac com C++Builder e FireMonkey http://www.andreanolanusse.com/pt/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey/ http://www.andreanolanusse.com/pt/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey/#comments Sat, 12 Jan 2013 05:34:57 +0000 http://www.andreanolanusse.com/pt/?p=4234 O objetivo deste artigo é demonstrar o uso do dbExpress Framework para executar SQLs em um bancos de dados InterBase ou Firebird, através uma aplicação FireMonkey Console em C++ que poderá ser executa em Windows e Mac, desta forma teremos um único código para as duas plataformas. A aplicação FireMonkey Console usada como exemplo foi […]

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

]]>

O objetivo deste artigo é demonstrar o uso do dbExpress Framework para executar SQLs em um bancos de dados InterBase ou Firebird, através uma aplicação FireMonkey Console em C++ que poderá ser executa em Windows e Mac, desta forma teremos um único código para as duas plataformas.

A aplicação FireMonkey Console usada como exemplo foi criada através do Wizard do IDE e irá efetuar as seguintes operações:

  • Conectar ao banco de dados, que aqui usado foi InterBase e Firebird, mas você pode usar qualquer banco suportado pelo dbExpress Framework; alguns drivers do dbExpress não são suportados em Mac, como é o caso do SQL Server e ODBC driver;
  • Executar um SELECT na tabela COUNTRY e mostrar os resultados percorrendo os cursor retornado.

O código abaixo é simples e de fácil leitura e traz uma série de comentários para facilitar o entendimento.

#include <fmx.h>

#pragma hdrstop
#pragma argsused

#include <tchar.h>
#include <stdio.h>
#include <System.SysUtils.hpp>
#include <Data.DBXDynalink.hpp>
#include <Data.DBXCommon.hpp>
#include <Data.DBXInterbase.hpp>
#include <memory>

int _tmain(int argc, _TCHAR* argv[]) {

	// Get database connection instance
	std::auto_ptr<TDBXConnection>conn
		(TDBXConnectionFactory::GetConnectionFactory()->GetConnection
		("EMPLOYEE", "sysdba", "masterkey"));

	if (conn.get() != NULL) {

		printf("================= Connection Properties ============\n");

		AnsiString s = conn->ConnectionProperties->Properties->Text + "\n";
		printf(s.c_str());

		// create command and transaction objects to execute the query
		std::auto_ptr<TDBXCommand>command(conn->CreateCommand());

                // initiate a transaction
		TDBXTransaction *transaction =
			conn->BeginTransaction(TDBXIsolations::ReadCommitted);

		command->Text = "SELECT * FROM Country";
		command->Prepare();

		// execute the query and get the cursor (DBXReader)
		std::auto_ptr<TDBXReader>reader(command->ExecuteQuery());

		// print number of columns and each record
		printf(AnsiString("Number of Columns:" + IntToStr(reader->ColumnCount) +
			"\n").c_str());

		// display the list of records
		while (reader->Next()) {
			printf((reader->Value[reader->GetOrdinal("COUNTRY")]->GetAnsiString
				() + "\n").c_str());
		}

		printf("====================================================\n");

		conn->CommitFreeAndNil(transaction);
	}

	Sleep(5000);
	return 0;
}

Certifique-se que o alias dbExpress EMPLOYEE foi criado e configurado corretamente para conectar ao banco de dados EMPLOYEE.GDB, além claro do cliente do InterBase ou FireBird que dever estar instalado. Com estes passos efetuados compile e execute sua aplicação no Windows ou Mac.

Ao executar no Mac, certifique-se de que o arquivos dbxconnection.ini está no mesmo diretório da aplicação, caso contrário você poderá ter problemas, pois a aplicação não irá encontrar os parâmetros para conectar ao banco.

O resultado abaixo representa a aplicação sendo executada no Mac.

Aplicação FireMonkey em C++ em execução no Mac

 

Você pode baixar o código fonte direto do repositório de demos do RAD Studio utilizando a linha de comando abaixo:

svn co https://radstudiodemos.svn.sourceforge.net/svnroot/radstudiodemos/RadStudio_XE2/CPP/Database/dbExpress/DBXFramework/

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

]]>
http://www.andreanolanusse.com/pt/dbexpress-framework-no-windows-e-mac-com-cbuilder-e-firemonkey/feed/ 1
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 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 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
Vem aí o Delphi XE3, C++Builder XE3, Prism XE3 e HTML5 Builder http://www.andreanolanusse.com/pt/vem-ai-o-delphi-xe3-cbuilder-xe3-prism-xe3-e-html5-builder/ http://www.andreanolanusse.com/pt/vem-ai-o-delphi-xe3-cbuilder-xe3-prism-xe3-e-html5-builder/#comments Wed, 15 Aug 2012 07:59:30 +0000 http://www.andreanolanusse.com/pt/?p=1561 Embarcadero acaba de anunciar o RAD Studio XE3 World Tour, onde irá mostrar as novas versões do Delphi, C++Builder, Prism e o “novo” HTML5 Builder. Até o momento o Brasil não foi incluido, mas certamente isso deve ser atualizado em breve. Entre as novidades está o suporte a nova interface do Windows 8, até então […]

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

]]>

Embarcadero acaba de anunciar o RAD Studio XE3 World Tour, onde irá mostrar as novas versões do Delphi, C++Builder, Prism e o “novo” HTML5 Builder. Até o momento o Brasil não foi incluido, mas certamente isso deve ser atualizado em breve.

Entre as novidades está o suporte a nova interface do Windows 8, até então conhecida como Metro (codenome utilizado pela Microsoft), além de novidades no FireMonkey e outras coisas a serem anunciadas.

Assim que oficialmente lançado, estarei publicando aqui no blog o que penso sobre esta nova versão, será minha primeira análise desde que sai da Embarcadero, onde serei bem imparcial, fique ligado!!!

Aproveitando a oportunidade, estarei palestrando no Agile Brasil entre os 5-7 de setembro, todos estão convidados e o tema será de alta relevância para equipes de desenvolvimento e claro centenas de outras palestras que prometem, mais informações aqui.

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

]]>
http://www.andreanolanusse.com/pt/vem-ai-o-delphi-xe3-cbuilder-xe3-prism-xe3-e-html5-builder/feed/ 9
Disponibilizado o Update 4 para Delphi XE2 e C++Builder XE2 http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2/ http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2/#comments Tue, 28 Feb 2012 21:44:12 +0000 http://www.andreanolanusse.com/pt/?p=1472 Delphi e C++Builder XE2 Update 4 requer reinstalação de todo o produto, será necessário desinstalar o seu RAD Studio XE2 atualmente instalado em sua máquina antes de instalar este update. Você pode obter este update de 3 formas: Atualizando via o mecanismo de Automatic Upgrade Manualmente através da opção Checking for Updates Fazendo o download a […]

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

]]>

Delphi e C++Builder XE2 Update 4 requer reinstalação de todo o produto, será necessário desinstalar o seu RAD Studio XE2 atualmente instalado em sua máquina antes de instalar este update.

Você pode obter este update de 3 formas:

A lista completa de alterações, correções e novos recursos neste update está disponível aqui.

Dois novos recursos que destaco neste update é o suporte a impressora em Mac através do FireMonkey Printing API e o suporte a geração de proxy para FreePascal através do DataSnap Mobile Connector.

Você poder fazer o download do ISO para Delphi XE2 e C++Builder XE2 que inclui o Update 4 aqui.

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

]]>
http://www.andreanolanusse.com/pt/disponibilizado-o-update-4-para-delphi-xe2-e-cbuilder-xe2/feed/ 5
Desenvolvendo o FireMonkey 3D Text Editor para Windows e Mac http://www.andreanolanusse.com/pt/desenvolvendo-o-firemonkey-3d-text-editor-para-windows-e-mac/ http://www.andreanolanusse.com/pt/desenvolvendo-o-firemonkey-3d-text-editor-para-windows-e-mac/#respond Fri, 24 Feb 2012 00:34:17 +0000 http://www.andreanolanusse.com/pt/?p=1468 Durante o Webinar de comemoração do aniversário do Delphi apresentei uma aplicação FireMonkey 3D que venho desenvolvendo para demonstração já algum tempo. A aplicação é um editor de objetos 3D (3D Text Editor) que permite ao usuário interagir com objetos 3D através de rotação, mudança de cores, textura, tamanho dos objetos, exportar o texto 3D […]

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

]]>

Durante o Webinar de comemoração do aniversário do Delphi apresentei uma aplicação FireMonkey 3D que venho desenvolvendo para demonstração já algum tempo.

A aplicação é um editor de objetos 3D (3D Text Editor) que permite ao usuário interagir com objetos 3D através de rotação, mudança de cores, textura, tamanho dos objetos, exportar o texto 3D como imagem PNG e muito mais.

Essa aplicação é um excelente começo para quem está interessado em aprender sobre FireMonkey e expõe muitos recursos interessantes, não somente mostra como usar 3D, animações, luz, camera, elementos 2D in containers 3D, etc., mas também como criar interfaces de usuário modernas, como tirar proveito do conceito de componente composto, como usar Scalable Vector Graphics (SVG) e mais.

Em breve estarei publicando uma série de artigos e vídeos em português que irão explicar em detalhes os recursos do FireMonkey utilizados neste aplicação, até lá lhe convido a assistir o vídeo (inglês) abaixo onde eu mostro a aplicação em ação.

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

]]>
http://www.andreanolanusse.com/pt/desenvolvendo-o-firemonkey-3d-text-editor-para-windows-e-mac/feed/ 0
Lista de discussão sobre Intraweb no yahoo http://www.andreanolanusse.com/pt/lista-de-discussao-sobre-intraweb-no-yahoo/ http://www.andreanolanusse.com/pt/lista-de-discussao-sobre-intraweb-no-yahoo/#comments Wed, 15 Feb 2012 21:01:31 +0000 http://www.andreanolanusse.com/pt/?p=1460 Para aqueles que utilizam Intraweb com Delphi ou C++Builder, existe um grupo para discussões relacionada ao tema no yahoo groups. Este grupo tem o suporte direto da Atozed e em português 🙂 http://br.groups.yahoo.com/group/iwbr/ Além disso, se está anunciando na lista um curso de 36 horas, pago e online de Intraweb, maiores detalhes acesse a lista. […]

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

]]>

Para aqueles que utilizam Intraweb com Delphi ou C++Builder, existe um grupo para discussões relacionada ao tema no yahoo groups.

Este grupo tem o suporte direto da Atozed e em português 🙂

http://br.groups.yahoo.com/group/iwbr/

Além disso, se está anunciando na lista um curso de 36 horas, pago e online de Intraweb, maiores detalhes acesse a lista. O curso está programado para dia 28 de fevereiro.

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

]]>
http://www.andreanolanusse.com/pt/lista-de-discussao-sobre-intraweb-no-yahoo/feed/ 2
Usando expressões regulares em aplicações FireMonkey com C++Builder http://www.andreanolanusse.com/pt/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder/ http://www.andreanolanusse.com/pt/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder/#comments Wed, 25 Jan 2012 11:00:24 +0000 http://www.andreanolanusse.com/pt/?p=1440 Vamos a outro exemplo em C++ onde demonstro como usar expressões regulares a partir da RTL em aplicações FireMonkey e C++Builder. Este exemplo demonstra como validar um conteúdo a partir de uma string em quatro diferentes expressões regulares, que são: Validar se a string enviada contém um endereço de e-mail Validar se a string enviada […]

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

]]>

Vamos a outro exemplo em C++ onde demonstro como usar expressões regulares a partir da RTL em aplicações FireMonkey e C++Builder.

Este exemplo demonstra como validar um conteúdo a partir de uma string em quatro diferentes expressões regulares, que são:

  • Validar se a string enviada contém um endereço de e-mail
  • Validar se a string enviada contém um endereço de IP válido
  • Validar se a string enviada está no formato dd-mm-yyyy
  • Validar se a string enviada está no formato mm-dd-yyyy

O código a seguir mostra as quatro expressões regulares usadas por essa aplicação.

void __fastcall TForm1::lbRegExpChange(TObject *Sender) {
	switch (lbRegExp->ItemIndex) {
	case 0:
		lbType->Text = "E-mail for validation";

		MemoRegEx->Text =
			"^((?>[a-zA-Z\d!#$%&''*+\\-/=?^_`{|}~]+\\x20*" "|\"((?=[\\x01-\\x7f])[^\"\\\\]|\\\\[\\x01-\\x7f])*\"\\"
			"x20*)*(?\.?[a-zA-Z\d!" "#$%&''*+\\-/=?^_`{|}~]+)+|\"\"((?=[\\x01-\\x7f])"
			"[^\"\\\\]|\\\\[\\x01-\\x7f])*\")@(((?!-)[a-zA-Z\\d\\" "-]+(?)$";

		break;
	case 1: {
			// Accept IP address between 0..255
			lbType->Text = "IP address for validation (0..255)";
			MemoRegEx->Text =
				"\\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\" ".(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\."
				"(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\." "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b";
			break;

		}
	case 2: {
			// Data interval format mm-dd-yyyy
			lbType->Text =
				"Date in mm-dd-yyyy format from between 01-01-1900 and 12-31-2099";
			MemoRegEx->Text =
				"^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[" "01])[- /.](19|20)\\d\\d$";
			break;

		}
	case 3: {
			// Data interval format mm-dd-yyyy
			lbType->Text =
				"Date in dd-mm-yyyy format from between 01-01-1900 and 31-12-2099";
			MemoRegEx->Text =
				"^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[01" "2])[- /.](19|20)\\d\\d$";
			break;

		}
	}
	EditTextChangeTracking(EditText);

}

Para executar a validação, utilizamos o método TRegExp::IsMatch como demonstrado a seguir:
To execute the validation you can use the method TRegExp::IsMatch as you can see bellow:

void __fastcall TForm1::EditTextChangeTracking(TObject *Sender) {
       // EditText contain the string value and MemoRegEx the regular expression
	if (TRegEx::IsMatch(EditText->Text, MemoRegEx->Text)) {
		SEResult->ShadowColor = TAlphaColors::Green;
	}
	else
		SEResult->ShadowColor = TAlphaColors::Red;

}

Uma vez que este é um aplicativo FireMonkey, utilizei o efeito de sombra para demonstrar ao usuário se o valor informado no Edit é válido ou não (Verde = válido / Vermelho = inválido). A seguinte imagem demonstra o que irá acontecer caso o usuário informe um endereço de e-mail inválido no Windows e Mac.

Abaixo o resultado quando o usuário informar o endereço de e-mail válido.

Você pode baixar o código fonte  aqui ou atualizar a pasta de exemplos local do seu RAD Studio XE2 a partir do repositório do RAD Studio XE2 no SVN.

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

]]>
http://www.andreanolanusse.com/pt/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder/feed/ 3
Hora de seguir em frente http://www.andreanolanusse.com/pt/hora-de-seguir-em-frente/ http://www.andreanolanusse.com/pt/hora-de-seguir-em-frente/#comments Wed, 21 Dec 2011 10:00:35 +0000 http://www.andreanolanusse.com/pt/?p=1420 Tem certas coisas que não podemos deixar passar em branco, durante todo o ano tento manter meus artigos relacionados a desenvolvimento de software e tecnologia relacionadas, mas desta vez preciso comentar sobre algo que estamos fazendo aqui na Embarcadero e está relacionado a oportunidade de migrar para XE2 e ainda levar várias ferramentas grátis. Se […]

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

]]>

Tem certas coisas que não podemos deixar passar em branco, durante todo o ano tento manter meus artigos relacionados a desenvolvimento de software e tecnologia relacionadas, mas desta vez preciso comentar sobre algo que estamos fazendo aqui na Embarcadero e está relacionado a oportunidade de migrar para XE2 e ainda levar várias ferramentas grátis.

Se você pretende adquirir novas licenças ou ainda não atualizou para Delphi XE2, C++Builder XE2, RAD Studio XE2, agora é hora. Ao adquirir uma das seguintes edições você pode levar até 4 ferramentas grátis, além de um voucher para a Certificação Delphi Developer para cada licença adquirida.

Adquira Delphi, C++Builder ou RAD Studio XE2… E receba gratuitamente
Professional edition
  • Rapid SQL XE2 – GRÁTIS!
  • FastCube – GRÁTIS!
  • Uma Certificação Delphi Developer – GRÁTIS!
Enterprise edition
  • Rapid SQL XE2 – GRÁTIS!
  • FastCube – GRÁTIS!
  • DB Optimizer – GRÁTIS!
  • Uma Certificação Delphi Developer – GRÁTIS!
Architect edition
  • Rapid SQL XE2 – GRÁTIS!
  • FastCube – GRÁTIS!
  • DB Optimizer – GRÁTIS!
  • DB Change Manager – GRÁTIS!
  • Uma Certificação Delphi Developer – GRÁTIS!

Recentemente publiquei o artigo em inglês “Razões para migrar para o Delphi XE2 | O que você pode ter perdido desde o Delphi 7”, que pode lhe ajudar na decisão sobre migrar.

Aproveita porque essa promoção, pois acaba dia 24 de dezembro de 2011, você pode obter mais informações neste aqui ou contactar a E do Brasil nosso parceiro no Brasil.

É hora de seguir em frente 🙂

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

]]>
http://www.andreanolanusse.com/pt/hora-de-seguir-em-frente/feed/ 10
CopyReaderToClientDataSet, Blob e a mensagem “Feature not implemented” http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/ http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/#comments Thu, 03 Nov 2011 23:57:19 +0000 http://www.andreanolanusse.com/pt/?p=1409 Se você já utilizou o método TDBXDataSetReader.CopyReaderToClientDataSet provavelmente já se deparou com a mensagem “Feature not implemented”, esta exception ocorre porque o método CopyReaderToClientDataSet não suporta a cópia de campos Blob de um DBXReader para um ClientDataSet. A partir do Delphi XE2 Update 2 isso não é mais problema, o suporte a blob no método CopyReaderToClientDataSet […]

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

]]>

Se você já utilizou o método TDBXDataSetReader.CopyReaderToClientDataSet provavelmente já se deparou com a mensagem “Feature not implemented”, esta exception ocorre porque o método CopyReaderToClientDataSet não suporta a cópia de campos Blob de um DBXReader para um ClientDataSet.

A partir do Delphi XE2 Update 2 isso não é mais problema, o suporte a blob no método CopyReaderToClientDataSet foi implementando.

Para saber como utilizar o método CopyReaderToClientDataSet na prática leia o artigo “Copiando estrutura e dados de um DBXReader para ClientDataSet  – DataSnap“

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

]]>
http://www.andreanolanusse.com/pt/copyreadertoclientdataset-blob-e-a-mensagem-feature-not-implemented/feed/ 5
Conectando ao PostgreSQL com dbExpress ODBC driver http://www.andreanolanusse.com/pt/conectando-ao-postgresql-com-dbexpress-odbc-driver/ http://www.andreanolanusse.com/pt/conectando-ao-postgresql-com-dbexpress-odbc-driver/#comments Wed, 02 Nov 2011 07:41:23 +0000 http://www.andreanolanusse.com/pt/?p=1403 O Delphi XE2 e C++Builder XE2 finalmente trouxeram o driver ODBC para dbExpress, com este driver você pode conectar a qualquer banco de dados que disponibilize um driver ODBC usando o dbExpress em aplicações FireMonkey e VCL. Até o Delphi XE3 o driver ODBC somente é compatível com a plataforma Windows. Para exemplificar melhor como […]

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

]]>

O Delphi XE2 e C++Builder XE2 finalmente trouxeram o driver ODBC para dbExpress, com este driver você pode conectar a qualquer banco de dados que disponibilize um driver ODBC usando o dbExpress em aplicações FireMonkey e VCL. Até o Delphi XE3 o driver ODBC somente é compatível com a plataforma Windows.

Para exemplificar melhor como funciona criei uma aplicação FireMonkey que mostra como podemos utilizar o dbExpress ODBC driver para conectar ao banco de dados PostgreSQL.

Antes de iniciar o desenvolvimento você precisa configurar o seu ambiente conforme os passos abaixo:

  • Instalar o driver ODBC do PostgreSQL na máquina que irá executar a aplicação, o driver pode ser baixado aqui.
    Vale lembrar que aplicações compiladas como 32-bit requerem a versão 32-bit do driver ODBC da base de dados a ser utilizada, para aplicações 64-bit será necessário o driver ODBC 64-bit.
  • Depois de instalar o driver, através do ODBC Data Source Administrator (odbcad32.exe) crie e configure um alias ODBC, pode ser do tipo User DSN ou System DSN:

Instruções para aqueles que usam Windows 64-bit

  • Para aplicações 32-bit use o c:\Windows\SysWOW64\odbcad32.exe
  • Para aplicações 64-bit use o c:\Windows\system32\odbcad32.exe

Instruções para aqueles que usam Windows 32-bit

  • Use o c:\Windows\system32\odbcad32.exe

A seguir crie um alias dbExpress ODBC no Data Explorer, lembrando que Database Name é o nome do Data Source criado no ODBC Administrator, neste exemplo o chamei de PostgreSQL35W. Configurações adicionais do driver para acessar a base de dados, como usuário e senha já foram configuradas no Data Source, você pode sobrescrever o usuário e senha na conexão dbExpress.

Suponho que você já sabe como utilizar os componentes de acesso a dados do dbExpress (SQLConnection, DataSetProvider e ClientDataSet), basta conectá-los da mesma forma que você sempre fez com aplicações que utilizam os componentes dbExpress. A configuração do SQLConnection será configurada conforme abaixo:

  object SQLConnection1: TSQLConnection
    ConnectionName = 'PostgreSQLOdbc'
    DriverName = 'ODBC'
    LoginPrompt = False
    Params.Strings = (
      'drivername=ODBC'
      'Database=PostgreSQL35W')
  end

Além de poder utilizar os componentes dbExpress em aplicações VCL e FireMonkey, você pode utilizar o dbExpress framework para conectar a bancos de dados que não tenham um driver nativo. A figura abaixo mostra a aplicação FireMonkey conectada a PostgreSQL através do dbExpress ODBC driver.

Este exemplo pode ser encontrado no diretório de exemplos do Delphi ou no repositório de demos do RAD Studio no Source Forge através deste  link.

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

]]>
http://www.andreanolanusse.com/pt/conectando-ao-postgresql-com-dbexpress-odbc-driver/feed/ 23
Disponibilizado Update 2 para Delphi XE2, C++Builder XE2 e RadPHP XE2 http://www.andreanolanusse.com/pt/disponibilizado-update-2-para-delphi-xe2-cbuilder-xe2-e-radphp-xe2/ http://www.andreanolanusse.com/pt/disponibilizado-update-2-para-delphi-xe2-cbuilder-xe2-e-radphp-xe2/#comments Tue, 01 Nov 2011 23:20:05 +0000 http://www.andreanolanusse.com/pt/?p=1401 O Update 2 para as versões XE2 do Delphi, C++Builder e RadPHP já estão disponíveis para download nos links abaixo. Você pode efetuar o download do Update 2 para Delphi e C++Builder através da opção “Check for Updates”. [box type=”alert” size=”large” style=”rounded”]Se o IDE do Delphi XE2 ou C++Builder XE2 estiver instalado em Windows XP, […]

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

]]>

O Update 2 para as versões XE2 do Delphi, C++Builder e RadPHP já estão disponíveis para download nos links abaixo.

Você pode efetuar o download do Update 2 para Delphi e C++Builder através da opção “Check for Updates”.

[box type=”alert” size=”large” style=”rounded”]Se o IDE do Delphi XE2 ou C++Builder XE2 estiver instalado em Windows XP, você terá de efetuar o download do update diretamente da página de usuários registrados.[/box]

RAD Studio XE2 Update 2

RAD Studio XE2 Help Update 1 – http://cc.embarcadero.com/item/28613

RadPHP XE2 Update 2

Update 2 para o RadPHP – http://cc.embarcadero.com/item/28614
Lista de bugs resolvidos no RadPHP XE2 Update 2 – http://edn.embarcadero.com/article/41756

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

]]>
http://www.andreanolanusse.com/pt/disponibilizado-update-2-para-delphi-xe2-cbuilder-xe2-e-radphp-xe2/feed/ 2