August 31, 2010

Last chance to register for free RAD Studio XE North America Tour events September 1-23

See what’s new in RAD Studio XE at a free seminar in your area

Developers and teams need an advantage more than ever before, and the new RAD Studio XE is that edge. Get a first-hand look at the new capabilities that will make you more productive, build more software and ensure project success with Delphi, C++Builder, Delphi Prism, RadPHP, and Embarcadero RAD Studio XE. RAD Studio XE combines the latest technology like Cloud computing with the fastest development environment on the planet utilizing over 500 components, wizards and examples to build the start of your application and then simply write the rest. Learn about the new programming, version control, performance tuning, build automation, multi-tier, web and cloud computing capabilities that will help you be amazing.

You’ll learn how to:

  • Speed your development using new IDE and debugging enhancements
  • Use the new Subversion integration in Delphi, C++Builder and Delphi Prism to better manage your source code
  • Take advantage of new tools in Delphi and C++Builder for build automation, profiling and logging to help you build high-performance, high-quality applications
  • Migrate your earlier Delphi projects to Delphi XE
  • Rapidly create multi-tier, desktop and Web applications
  • Work with Windows Azure cloud storage and deploy apps to Amazon EC2
  • Use RadPHP to rapidly build PHP web applications and Facebook applications

All event attendees will receive:

  • Special discounts on Delphi XE, C++Builder XE, Delphi Prism XE, RadPHP XE, and RAD Studio XE
  • Entry in a drawing for a free copy of RAD Studio XE Professional

RAD Studio XE Tour Cities:

To register, click the city of your choice:
September 17:00pm-9:00pmOrange Co., CASeptember 1611:30am-1:30pmSan Francisco, CA
September 27:00pm-9:00pmLos Angeles, CASeptember 215:00pm-7:00pmDenver, CO
September 75:00pm-7:00pmToronto, ONSeptember 2112:00pm-2:00pmPhoenix, AZ
September 76:00pm-8:00pmVancouver, BCSeptember 225:00pm-7:00pmDallas, TX
September 86:00pm-8:00pmMontreal, QCSeptember 226:00pm-8:00pmSalt Lake City, UT
September 86:00pm-8:00pmPortland, ORSeptember 226:00pm-8:00pmWashington, DC
September 95:30pm-7:30pmCalgary, ABSeptember 236:00pm-8:00pmHouston, TX
September 96:30pm-8:30pmSeattle, WASeptember 236:00pm-8:00pmRaleigh, NC
September 146:00pm-8:00pmSacramento, CA

Featured speakers:

David Intersimone
VP Developer Relations
& Chief Evangelist
Houston, TX
Washington, DC
Mike Rozlog
Senior Director
Delphi Solutions
Calgary, AB
Dallas, TX
Montreal, QC
Phoenix, AZ
Raleigh, NC
Toronto, ON
Anders-OhlssonAnders Ohlsson
Staff Engineer
Developer Relations
Portland, OR
Sacramento, CA
San Francisco, CA
Seattle, WA
Vancouver, BC
Andreano Lanusse
Technical Lead Evangelist
Developer Relations
Denver, CO
Los Angeles, CA
Orange Co., CA
Salt Lake City, UT

August 25, 2010

Working with Windows Azure Cloud Data in Delphi XE and C++Builder XE

Here's an excerpt from the Delphi XE and C++Builder XE documentation that gives further details on the new components for working with Windows Azure. You can see an example of this in the RAD Studio XE Sneak Preview 3 video.

Components for working with Windows Azure accounts are shipped with RAD Studio XE. Windows Azure (not to be confused with SQL Azure) allows you to store and manage Blobs, Queues of messages, and Tables of data on the Azure cloud. Once you have created an account, you can use the corresponding components found under the Microsoft Azure section of the Tool Palette. The available Azure components are: TAzureTableManagementTAzureQueueManagement, and TAzureBlobManagement. There is also a component called TAzureConnectionString, which takes into consideration information for connecting to your Windows Azure account. All these components use the Windows Azure REST API to manage the features that come with each of these services.
Azure components are useful for any developer who wants to make an application that manages a Windows Azure account. If used programmatically, the application itself could use information from the end-user's Azure account.


The TAzureConnectionString component is used to provide Azure connection information like AccountKey,AccountName, and Protocol.
Every Azure component from the Tool Palette requires a TAzureConnectionString placed on the same form, to provide Azure connection parameters.


To use a TAzureQueueManagement component, drop it on a form, and then drop aTAzureConnectionString onto the form as well. Type your AccountKey and AccountName into the appropriate properties of the TAzureConnectionString component. The next step is to set the ConnectionInfo property of the TAzureQueueManagement component to use this TAzureConnectionString. That is all you need to do in order to set up the TAzureQueueManagement component. However, you can also choose to set the Active property to True on the component, when the form is created. If you don't do this, then there will be a context menu item on the component at run time to activate it.
Once the component is running and activated, you can right-click the root node to add a new Queue or to refresh the current list of queues. With Windows Azure, you can have many queues, and each queue can have many messages, although the REST API, and therefore the TAzureQueueManagement component, is limited to showing only the first 100 messages of each queue. There is no guarantee the list you are looking at is in sync with the server any time after it is populated. At any time, to get the most current list of queues/messages, refresh the component from the context menu.
Note: When adding a queue, you need to specify a name that is at least 3 characters long, all lowercase (the component will automatically do this for you), and containing only letters, numbers, and/or hyphens (-).
On each queue node, you can choose to remove the queue, clear all messages from the queue, or add a message to the queue. A message is a string that has been pushed into the queue to serve whatever purpose the consumer of the queue uses it for. Unless you are clearing all the queue messages, only one message can be removed at a time. You also have the option, from this node, to refresh only this specific queue.
On the first (top) message node of a queue, you have the context menu option that can be used to remove it. This displays the message and then the next message in line becomes the new top message, as expected.


The Azure table component is a bit more complex than TAzureQueueManagement, but the setup is exactly the same. First drop theTAzureTableManagement component on the form, then drop the connection string component. Make sure you add connection information to the TAzureConnectionString, connect the two components, and then activate the table component.
Once you have your application running and the table component activated, you can right-click the root node to add a new table or to refresh the list of tables.
Note: When naming a table, make sure you do not start with a number; only letters are allowed as first character. Table names follow the naming guidelines listed above for queue names, but hyphens (-) are not supported in the name.
On each table node, there are additional context menu items for deleting the selected table or viewing the table's data in another dialog box. You can also bring up this table dialog by double-clicking the table node, or by holding the SHIFT key while pressing the ENTER key.

Table Data Dialog

The Table Data Dialog has, on the left, a list of all table rows. When you select a row, the table on the right will be automatically populated. The keys of this table will be the row's column name, and the value will be the value stored in the cell of the table (specific row and column).
Note: Windows Azure tables have no schema. This means that each row in the table can have a completely unique set of columns. For example, the first row may have 3 columns, while the second row may have 50 columns. If you want the table to behave like a standard Database table, then you need to manually enforce a specific schema.
To add a new row to the table, right-click the left list and choose to create a new Entity. The table on the right will be populated with two items,RowKey and PartitionKey. These two columns are required for all table rows. In this way, the row can be uniquely identified within the table. You can edit the values for RowKey and PartitionKey by right-clicking them and choosing to edit the property. This option is only available forRowKey and PartitionKey when you create a new row. Once you have committed the row for the first time, you cannot change the value of these properties.
Another option on the right table available while adding a new Entity (row) is creating a new property. Doing this will bring up the same dialog as the edit context menu item does. You will specify in this dialog the name of the property, the value, and the data type. Basic validation is done here to reduce the risk of you entering a value and/or datatype combination that is invalid.
Note: Even if you pass input validation, the value/datatype pairing you choose may still fail when you attempt to commit the new (or modified) row to the server. If this happens, you may lose data you had entered for that row before committing.
After making the changes to the new row, press Commit to push the changes to the server.

Filtering the List

Filtering the list is another action you can perform with the list on the left side of the table data dialog.
Notice that above the table row list there is a filter field. You can type in a value and validate it by pressing the ENTER key. In this way you filter the list to show only the rows that have that value as either their RowKey or PartitionKey. However, note that no partial matches or wild cards are supported in the Azure REST API, so the value you enter needs to be an exact match.
If you want to match on more than one Column (property) of the row, you can use the ADVANCED FILTER option. Note that on theTAzureTableManagement component there is a property, AdvancedFilterPrefix, which by default has a value of ~. In the table data dialog's filter field, you can enter something like:

~RowKey eq '1' and PartitionKey eq '1'

You can match on any column this way, not just PartitionKey and RowKey. If the datatype of the column is a string, you need to use single quotation marks around the value in the filter. If it is a number, you must use no quotation marks at all. RowKey and PartitionKey are always string types.

Importing Rows

To import rows, you have to select the context menu item for importing entities, which allows you to choose a text file to read the rows from. The text file needs to have a single JSON Value as its content.
The format of the file is as follows:

{"RowKey":"row1","PartitionKey":"Imported","AnyKeyName":"Hello World!"},

Note that the format previously shown describes a JSON Array, where each item in the array is a JSON Object. Each JSON Object must contain a property for RowKey and PartitionKey. Any other property has its key as a string following the naming convention for a table column. The value of the key is either a string (meaning the column is of string data type) or a JSON Array of size 2, where the value at index 0 is the string representation of the column value, and the value at index 1 is the data type of the column.
Note: If one or more rows from the text file cannot be imported, the text is skipped and the process continues for the rest of the rows, if they can be imported. In other words, it is not an all-or-none import.


The TAzureBlobManagement component is used to manipulate blobs (or Binary Large Objects). To use the TAzureBlobManagementcomponent, drop it on a form. Then drop the TAzureConnectionString component from the Tool Palette. Specify connection information in the TAzureConnectionString component, then connect both components. Do not forget to activate the Azure Blobs table.
Once you have your application running and the blob component activated, you can right-click the root node to add a new blob or to refresh the list of blobs.
Note: Naming conventions are the same as for the table component. Hyphens (-) are not allowed within the name.
Other operation options available while the application is running and you are within a TAzureBlobManagement component are: Create ContainerCopy BlobBlock Blob PropertiesCreate Block BlobCreate Snapshot Blob, and Page Blob.

RAD Studio XE Sneak Preview #3 - Multi-Tier, Cloud and Web

The third RAD Studio XE Sneak Preview video is now live.

Join Embarcadero’s Chief Evangelist David I and Product Manager Mike Rozlog as they discuss some of the new multi-tier, Web and cloud computing features in RAD Studio XE, including:
  •  Extended multi-tier development with new wizards, new protocol support, encryption and compression 
  • Cloud computing access to Windows Azure services - Easy deployment to Amazon EC2
  • Flexibility to build DataSnap clients in native Delphi and C++Builder, .NET with Delphi Prism, and now PHP/JavaScript with RadPHP 
Now you can see all three weeks of sneak preview content on RAD Studio XE including Delphi XE, C++Builder XE, Delphi Prism XE, and RadPHP XE.

August 24, 2010

Live at Delphi Live!

I'm working in the Embarcadero booth at Delphi Live! in San Jose CA this afternoon and thought I'd take some pictures to share with you.

Here are Sven from US Sales and Anders from Developer Relations at the Embarcadero booth.

Here's the product names panel on the sides of the booth outside the photo above.

Raize Software is an Embarcadero Technology Partner. We include Raize CodeSite with Delphi Prism 2011 and will also be including it as part of Delphi XE, C++Builder XE, and Delphi Prism XE which you can see as part of our RAD Studio XE Sneak Preview #2.

The Advantage Database Server from Sybase is a popular choice among Delphi developers.

August 12, 2010

What beta testers are saying about RAD Studio XE

We recently asked our beta testers to tell us what they think about RAD Studio XE (including Delphi XE, Delphi Prism XE, C++Builder XE and RadPHP XE).

Here are just some of the great things they had to say:

“I'm very excited about the integrated SVN support, since I rely very much on SVN in my own projects. Having SVN accessible directly in the IDE certainly gives a whole new meaning to the RAD concept.”

“Very stable environment, all features have matured. DataSnap has become very important in a lot of our projects. It’s just very easy to develop Internet enabled apps.”

“Delphi XE also has some interesting news w.r.t. the compiler. The new {$CODEALIGN 16} directive will allow procedures to be aligned to 16 byte boundaries, which can be very useful for certain low-level optimizations.”

“It's great to see that tools such as AQTime and CodeSite will now be part of the default setup -- I have nothing but good things to say about these tools; they provide an external layer that makes it so much easier to debug even the most intricate multithreaded problems.”

“My profiler needs aren't sufficient to justify the cost of purchasing AQTime. If it's included with Delphi then it should come in handy for the occasional profiling job.”

“I love the ability to copy C# code and paste to Oxygene Pascal”

“All of RadPHP is exciting me. I think most of desktop database developers have been waiting for a product like this to develop web based database applications.”

The Unicode support introduced in version 2010 is a huge benefit, and has already been put to a very good use. The migration was almost effortless, making Delphi the only product we have ever used that allowed switching from non-Unicode to Unicode version in matter of only few days.”

“The improvements in the code editor and the designer are significant. I use the RAD Studio for enhanced GUI applications mostly as customer information systems or similar administrative applications.”

“With so many features, in-depth debugging support, powerful IDE, & even with all the views activated, the IDE response remains lightning fast. But the main benefit, in my views, is that I can deliver real robust products, much faster and with added flavors (like gesture support) wide across different markets (including iPhone users and as assemblies to other .Net developers) utilizing my same Pascal skills.”

“With Delphi I can write world-ready applications in a high level language that are easy to deploy. Not only are there's a wealth of components available in the box to get the job done, but there's also a thriving community with code samples and components to fill in the gaps.”

“I don't have the figures, but I think the number of bug fixes in this release exceeds that of any preceding release. I will vouch for that all of my own reported bugs have been fixed and I'm especially glad to the improvements made to generics. Subversion support, cloud computing, new profiling and logging tools (AQTime and CodeSite) are just some of the new features in this release.”

“I am keen on whole Delphi Prism… it means I am excited about all its features.”

“Prism is totally cool and so easy to use. It gives you full access to the latest .NET stack without limits.”

“I actually like to see that the future of this project is good. Integration of Delphi Prism with Mono is actually a very good idea.”

“Delphi Prism = Considering the additional features included into Prism, compared with any other .NET language, I think it is the obvious alternative to C#”

“Recently, using beta version of Prism I was able to showcase to one of my client's CEO that if required we can even beat best of VS developers at their own game by delivering a real good eye candy and stable WPF application within few hours!”

“Your products are I think Best Database Application Developer tools both desktop and the web… You have great tools , easy usable and powerful. I like your tools.”

“For Delphi, Hands down, best dev. tool for native apps. I can literally program anything, quickly, fantastic database connectivity, fast compile and run speeds.”

“RAD Studio is the only product to offer true native platform rapid development for Windows applications. It offers unmatched performance, ease of use, expandability, and flexibility.”

“It's on every level comparable with other developer tools, usually even far better. There is no reason to prefer MS Visual Studio or similar tools.”

“We are using Delphi for Win32 since 16 bit version, and we can confirm that, Delphi 2011 has the strongest feature set from the history.”

August 9, 2010

Sneak Preview: Delphi 2011 is Delphi XE

We just posted the RAD Studio XE Sneak Preview at Each Tuesday for the next three weeks, we'll be previewing some of the great new things that are coming in the upcoming versions of RAD Studio XE, Delphi XE, C++Builder XE, Delphi Prism XE and RadPHP XE (formerly Delphi for PHP).

You may be wondering what is Delphi XE?  Is this Delphi 2011?

Yes it is, just with a different name.

We've changed to a new consistent branding and version numbering for all the products so the new versions will be called XE. You may have already seen our earlier XE product releases including DB Artisan XE, DB Change Manager XE, Rapid SQL XE, DB Optimizer XE, and Embarcadero All-Access XE. This new version of Delphi is a major upgrade and the equivalent of a "2011" version. Going forward, future versions will be called XE2, XE3, etc.

What does XE mean? It's not really an acronym for anything. However, there are three things that are common across all of our XE products.

  1. Heterogeneous database support where you get a consistent experience when working with multiple databases and you don't have to pay an additional cost per-platform for database support. This is something that we've always offered with the RAD products but now has been extended to our database products as they move to the XE branding.
  2. XE products are ToolCloud-enabled. The ToolCloud license management and provisioning system is a great solutions for companies and organizations that want to streamline license management.
  3. Embarcadero XE products offer an easy upgrade to Embarcadero All-Access XE. I look at All-Access as kind of the Embarcadero equivalent of MSDN. You get the complete range of Embarcadero database tools and developer tools plus a year of upgrades. 

Let me know what you think about the RAD Studio XE Sneak Preview and be sure to keep checking back for more blogs and articles being added throughout the week and a new video added each Tuesday.