In action
Download
1 / 112

… in ACTION! - PowerPoint PPT Presentation


  • 98 Views
  • Uploaded on

… in ACTION!. David Intersimone “David I” Vice President of Developer Relations and Chief Evangelist [email protected] Agenda. RAD Studio XE2 Overview FireMonkey Overview Break FireMonkey Principles Applied FireMonkey Break Platform C onsiderations End-to-End FireMonkey

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' … in ACTION!' - colby-riley


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
In action

… in ACTION!

David Intersimone “David I”

Vice President of Developer Relations and Chief Evangelist

[email protected]


Agenda
Agenda

  • RAD Studio XE2 Overview

  • FireMonkey Overview

  • Break

  • FireMonkey Principles

  • Applied FireMonkey

  • Break

  • Platform Considerations

  • End-to-End FireMonkey

  • Android and iOS mobile development with RadPHP XE2

  • Delphi for 64-bit Windows

  • Summary and Close


Rad studio xe overview

RAD Studio XE Overview

Windows, Macintosh, Web and Mobile Development


Rad studio xe2
RAD Studio XE2

…and more!


Fast native applications for windows macintosh web and mobile
Fast Native applications for Windows, Macintosh, Web and Mobile

  • Write app once, compile for multiple platforms

  • Data-rich, Component-based

  • Delphi and C++ native code performance

  • Delphi for 64-bit Windows

  • VCL Styles

  • RadPHP for full visual web development


Introducing
Introducing Mobile

The Next Generation Business Application Platform

  • Stunning HD and 3D Business Applications

  • Native Power and Performance

  • Connect with any Data and Services

  • Full Suite of UI Controls

  • Visualize Live Data

  • Styled Vector UIs without coding

  • Communicate with Animations

  • No-Code Hardware Effects


A pplications that connect everywhere
A Mobilepplications that Connect Everywhere

  • High-speed connectivityto popular databases

  • Multi-tier applications

  • Clients on multiplecomputers and devices

  • Connect to the worldof data, services,and the cloud


Mobile choices for you and your users
Mobile choices for you and your users Mobile

  • Native mobile apps for DataSnap

    • iOS, Android, Blackberry, and Windows Phone 7

    • Delphi and C++Builder DataSnap Servers

  • Mobile-optimized PHP web apps

    • Web apps that look great

    • Web apps that work great on mobile devices

    • Package applications for distribution

    • Sell on Apple App Store and Android Marketplace


Rad studio xe2 editions for every developer
RAD Studio XE2 - Editions for Every Developer Mobile

  • Starter (Delphi/C++Builder)

  • Professional

  • Enterprise

  • Ultimate

  • Architect


Beyond xe2
Beyond XE2 Mobile

  • Frequent and regular FireMonkey updates

  • Expanded Mobile UI and Device support including

    • Location, Camera, Accelerometers, etc.

  • Next generation compilers

    • Delphi compiler - multiple HW/OS targets

    • RAD C++ compiler - multiple HW/OS targets

    • 64bit RAD C++

    • GPU computing

    • Parallel programming

    • Delphi and C++ native ARM Support

      • Extended iOS support

      • Android support

  • Win8/Metro support - Intel & ARM


Firemonkey overview

FireMonkey Mobile Overview

The Next Generation Application Development Platform


Firemonkey
FireMonkey Mobile

  • Next generation CPU/GPU powered application platform for business, enabling developers to rapidly build visually engaging HD and 3D applications with blazing performance on

  • Windows, Mac and Mobile


Firemonkey is application development platform
FireMonkey is MobileApplication Development Platform

C++Builder

Delphi

Windows

Mac OS

iOS


Business industry software stuck in past
Business/Industry Software Stuck in Past Mobile

  • 90’s Windows user experiences

  • Confined to mouse/keyboard interaction

  • Complex to learn - slow to use


Consumer s oftware i nnovative user experience
Consumer MobileSoftware - Innovative User Experience

  • Media and graphics rich user experiences

  • Intuitive and interactive – easy to learn

  • Touch and motion interaction


Consumer software renaissance
Consumer Software Renaissance Mobile

  • Media and graphics Rich user experiences

  • Intuitive and interactive – easy to learn

  • Simulated real world physics

  • Touch and motion interaction


Key markets
Key Markets Mobile

  • ISV’s / Packaged Software

  • Healthcare / Medical

  • Manufacturing

  • Financial Services

  • Telecommunications

  • Energy

  • Aviation & Automotive

  • BioSciences

  • Pharmaceuticals

  • Utilities


Shortcomings of today s s olutions
Shortcomings of Today’s MobileSolutions

Script and VM/JIT engines lack UX (User Experience) performance, responsiveness, and hardware accessibility for desktop business, ISV, and Vertical industry applications


Firemonkey is not
FireMonkey is not … Mobile

RIA

Managed

Game Engine

HTML5/CSS3


User experience
User Experience Mobile

FireMonkey

Business SW

is stuck here

VCL

UE Richness

MFC

UE Performance


Firemonkey rich business a pplications
FireMonkey – Rich Business MobileApplications

More visually stunning and interactive

More power and performance

More connected


Firemonkey rich b usiness a pplications
FireMonkey – Rich MobileBusiness Applications

More visually stunning and interactive

More power and performance

More connected


Hd forms
HD Forms Mobile

  • High performance GPU powered Scalable Vector Uis

  • Maximum resolution on any device

  • Hundreds of visual UI components

  • GPU based Style Engine to control UI look & feel

  • HUDs with transparencies and transition effects


3d forms
3D Forms Mobile

  • GPU powered 3D Forms

  • Hardware based lighting, textures, and animation

  • 3D Forms can contain HD UI elements and effects


Effects animation
Effects & Animation Mobile

  • 50+ Photoshop-like GPU Effects

  • Simultaneous multiple effects without performance hit

  • Path based animation for all HD and 3D UI and graphics


Demonstrations
Demonstrations Mobile

  • Delphi and C++ project types

  • HD and 3D business apps and database

  • Using Styles

  • Using Effects and Animations


Firemonkey rich b usiness applications
FireMonkey – Rich MobileBusiness Applications

More visually stunning and interactive

More power and performance

More connected


Development speed fast p rototyping
Development Speed – Fast MobilePrototyping

  • Rapid Application Development to reduce development time

  • Show customers what they are looking for with fast prototyping

  • Easily move from prototype to production without wasted effort


Development speed built in components
Development Speed - Built-in Components Mobile

  • Built-in advanced components to increase quality and functionality including:

    • user interface components

    • database

    • multi-tier

    • web apps

  • Extend and customize components

  • Create your own components

  • Use free and commercial components created by the developer community


Native cpu gpu application platform
Native CPU/GPU Application Platform Mobile

  • Compile natively to Windows, Mac, and iOS

  • Application, database, and animation are CPU powered

  • All UI, graphics, and effects are GPU powered


Demonstrations1
Demonstrations Mobile

  • Pixel Shader

  • Simple native Windows/Mac/iOS demo


Firemonkey rich b usiness a pplications1
FireMonkey – MobileRich Business Applications

More visually stunning and interactive

More power and performance

More connected


Enterprise database connectivity
Enterprise Database Connectivity Mobile

  • Built-in native connectivity to all popular databases

  • Connectivity with Amazon and Azure cloud services


Livebindings data visualization
LiveBindings Mobile Data Visualization

  • Connect any UI, HD, or 3D graphics to any data source

  • Create active “interdependent” bindings


Demonstrations2
Demonstrations Mobile

  • FireFlow

  • MultiFormView

  • MultiFormViewApp

  • VCL and FireMonkey together

  • MIDA VCL to FireMonkey converter – first look


Overview summary
Overview Summary Mobile

Quickly create visually stunning HD and 3D business applications with blazing native performance on Windows, Mac and iOS

Ensure high performance of your business applications by utilizing the full GPU power of today’s hardware

Handle any architecture requirement with the ability to easily connect to multiple devices, databases, protocols and services


Break

Break Mobile


Firemonkey principles

FireMonkey Principles Mobile

Lights! Camera! Action!


Firemonkey hd 3d and gpu
“FireMonkey” – HD, 3D, and GPU Mobile

  • FireMonkey takes advantage of GPU whenever possible

  • HD Form can be rendered on a computer without a GPU with a few restrictions:

    • No TViewport3D, No Shader based Filters

  • A 3D Form requires a GPU - performs sophisticated transitions and manipulations of the user interface…

    … in other words, a 3D form may be the best choice for building a sophisticated HD user interface


Comparing vcl fmx
Comparing Mobile VCL & FMX

  • FMX and VCL share Common Ancestry

  • TObjectTPersistentTComponent

  • After TComponent dramatically different…

Courtesy: Ray Konopka

Raize Software


VCL Mobile

Courtesy: Ray Konopka

Raize Software


FMX Mobile

Courtesy: Ray Konopka

Raize Software


Comparing vcl fmx1
Comparing Mobile VCL & FMX

  • Event model is the same

  • Persistence is shared

  • No Component Messages in FMX

  • Coordinate System

    • Origin is upper left

    • VCL – Integer

    • FMX – Floating-point

  • Property changes

    • Caption ➜ Text (except for TForm)

    • Left, Top ➜Position.X, Position.Y

Courtesy: Ray Konopka

Raize Software


Owners parents and children
Owners, Parents, and Children Mobile

  • Concept of Ownership is the same

  • FMX has the notion of Parent, but it is not quite the same as in VCL

  • Any control can be the parent of another control

    • Not restricted to container-like controls.

    • e.g. a TEdit can be the parent of a TLabel

  • Child objects share attributes of parent

    • Coordinate space

    • Visibility & Opacity

    • Rotation & Scale.

Courtesy: Ray Konopka

Raize Software


Tcanvas differences
TCanvas Mobile Differences

  • More abstract in FMX than in VCL

    • i.e. not a direct wrapper around device context

  • Fills and Strokes handled by separate calls

    • FillRect

    • DrawRect

  • Text displayed using FillText

    • Draws text and fills with specified TBrush

    • Allows gradient fills in text

  • However, rarely use TCanvas directly

    • Use primitives instead.

Courtesy: Ray Konopka

Raize Software


Supported platforms
Supported Mobile Platforms

  • RTL is shared between VCL & FMX

  • VCL and FMX are more than Component Libraries, they are Application frameworks

  • As a result, you cannot intermix VCL & FMX in the same application.

Courtesy: Ray Konopka

Raize Software


3d programming
3D Programming Mobile

  • One object model to target multiple platforms

  • FM uses right-handed orientation in 3D

  • Hardware acceleration

    • Windows – DirectX

    • MacOS – OpenGL

    • iOS – OpenGL ES


Firemonkey graphics architecture
FireMonkey Graphics Architecture Mobile

*)

*) Delphi only in XE2


Firemonkey technology
FireMonkey Technology Mobile

  • Windows - Direct2D for HD, Direct3D for 3D

    • Note: FireMonkey can use GDI+ for HD vector forms/controls, when GPU is not available

  • Mac- Quartz for HD, OpenGL for 3D

  • iOS - Core:Graphics for HD, OpenGL/ES for 3D


Firemonkey graphic elements
FireMonkey Mobile graphic elements

  • HD

    • TLayout, TScaledLayout

    • TGridLayout, TScrollBox

    • Shapes

  • 3D

    • TLayout3D, TLayer3D

    • TViewport3D

    • TCamera, TLight

    • Shapes including TMesh, TModel3D, TGrid3D

  • Grids

    • TStringGrid, TGrid


When to use hd 3d animations effects
When to use HD, 3D, Animations, Effects Mobile

  • UI guidelines and things to consider

    • Effects (glow) to draw attention to control

    • Animations for appearance of UI elements

    • Opacity – dim parts of a complex form

    • Move non-focus parts of 3D UI into the distance

    • Using a 2D mouse in a 3D world – button use

    • Use ViewPort3D in an HD form


Demonstrations3
Demonstrations Mobile

  • Controls Demo – scaling forms/controls

  • Lights, Camera, Action!


Applied firemonkey

Applied FireMonkey Mobile

Styles, Animations, Filters and LiveBindings


Applied firemonkey1
Applied FireMonkey Mobile

  • Styles

  • Animations

  • Effects/Filters

  • Building Components

  • LiveBindings


Firemonkey styles
FireMonkey Styles Mobile

  • FireMonkey Stylebook

    • Any object inherited from TBaseObject

    • Set StyleName to identify

    • Found using FindStyleResource method from parented object

    • Stored In / Loaded From a stream file

  • FireMonkey Styles

    • A collection of FireMonkey resource style

    • WPF type of implementation

    • Styles can be inherited, saved, loaded

    • Look and Feel style files for Win7, MacOS, iOS and custom themes


Firemonkey animation
MobileFireMonkey” – Animation

  • Used to modify property values over time

  • Machine speed independent

  • Can be looped and / or reversed

  • Can follow a variety of time / value curves

  • Can be triggered by MouseOver, Focus, Visibility, etc.


Firemonkey effects filters
MobileFireMonkey” – Effects / Filters

  • Can be applied to bitmaps

  • Can be applied to controls

  • Can be triggered by MouseOver, Focus, Visibility, etc.

  • GPU shader based implementation


Building firemonkey components
Building MobileFireMonkey Components

  • Bruno/Ray slides

  • Docwilki


Firemonkey components the process
FireMonkey Components - The Process Mobile

  • Basically the same as creating VCL components

  • Prepare for new component

    • Create a new directory

    • Create a test application

  • Create the component unit

    • Manually or Component Expert?

    • Name the component

    • Create the component class

  • Test runtime behavior

    • Dynamically create component in test application.

Courtesy: Ray Konopka

Raize Software


The process cont
The Process (cont.) Mobile

  • Register and install component

    • Register component in a new or existing registration unit

    • Add component unit to a runtime package

    • Add registration unit to design package

      • which will require the runtime package

    • Build packages, deploy, install

  • Test design-time behavior.

Courtesy: Ray Konopka

Raize Software


Creating new styles
Creating Mobile new Styles

  • Use the built-in Style Designer

  • Save to *.style file

  • Create separate styles to handle platform differences

Courtesy: Ray Konopka

Raize Software


Component guidelines
Component Guidelines Mobile

  • Use Styles

    • Name style elements appropriately

    • Be sure to document all Style contracts

  • Utilize primitives for painting whenever possible

    • When used within styles, they can be replaced or subclassed

  • Complex controls can be built through code with styled components.

Courtesy: Ray Konopka

Raize Software


Livebinding engine
LiveBinding Engine Mobile

  • Allows developers to create live binding in run-time between components/objects at design-time.

  • The LiveBinding visual components use the engine:

    • TBindScope for bindings to components

    • TBindScopeDB for bindings to databases

    • TBindingsList for holding of binding lists

  • A number of conversion services in the box and allows to create new conversion service

  • Automatic updates

    • Expressions automatically re-evaluated when a variable (e.g.; property) referenced by an expression has changed value.

    • Requires - external notification – Notify(object, ‘variable’);


Expression engine simple expressions
Expression Engine – Simple Expressions Mobile

  • Operators: +, -, /, *

  • Literals: ‘abc’, 1, 1.23, True, False, nil

  • Scope: Provides symbols and values available to an expression. Includes operators. Scopes may be nested.

  • TDictionaryScope: Associates a name with an object

  • Expression string: String to evaluate

  • TBindingExpression: Expression engine object which holds a scope and expression string.

  • Evaluate: Expression engine processes the expression string and returns a value.

  • TValue: Delphi RTTI representation of a value. May be an object, string, integer, array, etc.


Expression engine simple expressions1
Expression Engine – Simple Expressions Mobile

  • Built-in Methods: Global methods registered by the expression engine

  • WrapObject(): Create a scope which exposes members of the object, including properties and methods

  • RTTI: Delphi RTTI is used by expression engine to access the member of an object

  • Self: A scope can be associated with “Self”. Members can be accessed without a qualifier.

  • Association: A scope can be associated with a name. The name is used as a qualifier.

  • Custom Methods: Global methods registered in user code


Expression engine binding scope etc
Expression Engine – Binding, Scope, etc Mobile

  • Binding: Expressions are used to assign from one value to another

  • Input expression and scope: Evaluated to get the input value

  • Output expression and scope: Evaluated to get the output location

  • Managed: Managed bindings are owned by the expression engine and may be automatically re-evaluated.

  • Unmanaged: Unmanaged bindings are owned by application and must be explicitly evaluated by calling Evaluate.


Expression engine unmanaged bindings
Expression Engine – Unmanaged Bindings Mobile

  • Output Converters

    • Used when assigning the value of the input to the location of the output.

    • Typically used to handle assignment of mismatched types such as integer to string.


Expression engine managed bindings
Expression Engine – Managed Bindings Mobile

  • Notify()

    • The Notify method informs the manager that the value of an object/property has changed.

    • The manager will re-evaluate dependent bindings.

  • Events

    • Events are called during expression evaluation.

      • OnAssigning

      • OnAssign

      • OnException


Components unmanaged binding
Components – Unmanaged Binding Mobile

  • TBindExpression

    • Component to create a managed or unmanaged binding

    • Properties

      • SourceComponent

      • SourceExpression

      • ControlComponent

      • ControlExpression

      • Direction

  • TBindScope

    • Component to wrap a TObject in a scope

    • Properties

      • DataObject


Components unmanaged bindings
Components – Unmanaged Bindings Mobile

  • TBindExprItems

    • Component to create one or more managed or unmanaged binding

    • Properties

      • SourceComponent

      • SourceExpression

      • ControlComponent

      • ControlExpression

      • FormatExpressions collection


Components designing tbindexpression
Components – Designing MobileTBindExpression

  • TBindingsList: List of binding components such as TBindExprItems

  • Bindings List Editor: Edits the list of binding components

  • TBindExpression

    • properties

      • Active

        • Binding expressions are evaluated when Active is set to True

      • AutoActivate

        • Set Active when the component is loaded

  • Expression Editor

    • Edit the expression strings of a binding component

    • Test expressions


Demonstrations4
Demonstrations Mobile

  • Styles

    • Loading a style from resource, file?

    • Modifying styles at design time and runtime

      • Style Lookup, Apply Style?

  • Animations and effects

  • LiveBindings

    • BindScopeDB – uses DataSource

    • Managed and Unmanaged bindings

    • Circle example method for condition test returning color

  • Building components - TRkDialogButtons for FMX


Break1

Break Mobile


Platform considerations

Platform Considerations Mobile

Deployment to Windows, OSX and iOS


Platform considerations1
Platform Considerations Mobile

  • Project Types

  • Windows, Mac, iOS

  • Project | Deployment

    • Feature Files

    • Additional files

  • Platform Assistant

    • Debugging, Deployment

    • Win32, Win64, Mac


Firemonkey and cross platform
FireMonkey Mobile and Cross Platform

  • FM is a platform that supports

    • RTL

    • GUI

    • Database

    • Operating System

  • Compile / Run on all platforms we support *

    • * subset for mobile platforms


Firemonkey ios
FireMonkey MobileiOS

  • UI design on Windows

  • Handling devices, orientation

  • Code for iOS hardware, file system, OS

  • Anders’ slides

  • http://itunes.apple.com/us/app/anders-analog-clock/id475178939?mt=8


Ios user interface guidelines
iOS Mobile User Interface Guidelines

  • Find the problems… ;)

    • Green buttons? Maybe…

    • Button font size?

    • Scroll bars?


Ios user interface guidelines1
iOS Mobile User Interface Guidelines

  • That’s better!

  • Need to turn off scroll bars!

  • Edit box at the bottom? No!

    • Has to be upper half of screen

    • Why?


Ios user interface guidelines2
iOS Mobile User Interface Guidelines

  • We’re getting somewhere!

  • But wait…

  • Rounded corners?


Ios user interface guidelines3
iOS Mobile User Interface Guidelines

  • Nice!

  • Modeled after the Contacts app

    • Edit boxes have labels in them

    • Text fields are right adjusted

  • Minute details remain

    • Text in memo should be padded more

    • Maybe Panel with Label and Edit (LJ) inside?

    • Button should have rounded edges to it


Ios user interface guidelines4
iOS Mobile User Interface Guidelines

  • Close!


Ios user interface guidelines resources
iOS Mobile User Interface Guidelines Resources

  • iOS Human Interface Guidelines web site

    • http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/MobileHIG/Introduction/Introduction.html

  • Apple’s iOS Human Interface Guidelines

    • http://developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig/MobileHIG.pdf


Handling multi platform issues
Handling Multi-Platform issues Mobile

  • TMenuBar – UseOSMenu property

  • Dialogs, ShowMessage

  • File System – IOUtils – Win/Mac

  • Malcolm’s hidden user files

  • TRegistryvsTIniFile

  • TOSVersion (run time), conditional defines (compile time)

  • File Volume/Path issues

  • DLLs, Dylibs

  • Debugging


Demonstrations5
Demonstrations Mobile

  • TOSversion database example

  • UseMenuBar

  • iOS client applications


End to end firemonkey

End-to-End FireMonkey Mobile

Enterprise Solutions


Enterprise landscape
Enterprise Landscape Mobile

  • CORBA

  • JEE

  • WCF

  • DataSnap

  • SOA

  • SaaS

  • PaaS


End to end firemonkey1
End-to-End FireMonkey Mobile

FireMonkey client and …

  • Scenario 1: Remote RDBMS or Cloud Storage

  • Scenario 2: XML/SOAP & JSON/REST Web Services

  • Scenario 3: Delphi/C++ DataSnap server deployed to EC2 cloud

  • Scenario 4: Delphi FM iOS client to DataSnap server

  • Scenario 5: FireMonkey client connected to Enterprise Infrastructure – JEE, CORBA, and .NET


Scenario 5 firemonkey net web service
Scenario 5: FireMonkey & .NET Web Service Mobile

  • .NET WCF web service

  • Embarcadero Prism console application

  • FireMonkey client

  • WSDL importer and HTTPRIO component


Demonstration
Demonstration Mobile

  • Embarcadero Prism WCF calculator service


Android and ios app development with radphp xe2
Android and MobileiOS app development with RadPHP XE2

JQueryMobile visual, component-based development of mobile optimized web pages

Create iOS and Android applications that you can sell on the Apple and Android app stores


Demonstration1
Demonstration Mobile

  • RadPHP XE2 – web mobile client

  • RadPHP XE2 – native mobile clients



What s the same
What’s the same? Mobile

  • Integer, Longint, Cardinal – still 32bits

  • Int64, UInt64 – still 64bits

  • UnicodeString, AnsiString, WideString

  • Exceptions

  • Runtime Library (RTL)

  • SysUtils, Classes, etc…


What s different
What’s different? Mobile

  • NativeInt, NativeUint – 64bits

  • Pointer (all pointers) – 64bits

  • Dynamic Arrays – 64bit indexing

  • Floating point math - Double


Delphi 32 and 64 bit pointer types
Delphi 32 and 64-bit Pointer Types Mobile

Pointer types Delphi/32 Delphi/64

Pointer

String

Class instance

Class reference

Interface

AnsiString 4 bytes 8 bytes

WideString

UnicodeString

Procedure pointer

Dynamic array

PAnsiChar

PWideChar

PChar


Delphi 64 bit on windows
Delphi 64-bit on Windows Mobile

  • Same Windows API

    • CreateWindowEx, PeekMessage, etc..

  • Same Delphi RTL

    • SysUtils, Classes, Generics.Collections, etc…

  • Same VCL

    • Forms, Graphics, Controls, Menus, etc..


Delphi 64 bit on windows some gotcha s
Delphi 64-bit on Windows – some Mobilegotcha’s

  • SizeOf(Pointer) <> SizeOf(Integer)

    • Integer<->Pointer casts will break in 64bit

    • SizeOf(THandle) = SizeOf(Pointer)

    • All Handles = SizeOf(Pointer) (HWND, HDC, etc..).

  • All code in process must be 64bit

    • Must have 64bit versions of external non-Delphi libraries (DLLs)

  • One, and only one, calling convention

    • register, pascal, cdecl, stdcall are ignored.

  • safecall is still “special”

  • Old “pointer math” code may break

    • Works in 32 and 64bit: MyPtr := PByte(P) + 10;

  • TList’s internal FList is now a TPointerList. Used to be a PPointerList. Removing ^ should be sufficient to port from 32-bit to 64-bit.

  • Tag property is now a NativeInt (32-bit vs 64-bit)


Delphi 64 bit on windows some gotcha s1
Delphi 64-bit on Windows – some Mobilegotcha’s

  • Inline Assembly

    • Cannot mix asm blocks with Pascal code

    • Only procedural level asm blocks supported

    • Stack must be 16-byte aligned at each call instruction

    • Define locals for temp storage

    • Do not modify the RSP stack pointer

    • New unified calling convention. First 4 parameters in registers, RCX, RDX, R8, R9 (or XMM0-XMM3)

  • Exception unwinding

    • No change for pure Delphi code. Exceptions function identically.

    • Inline Assembly can cause exception unwinding to fail if not properly written.

  • SHL/SHR – 32-bit values (Integer et al) will only shift in 32-bit space. 64-bit values will of course shift in 64-bit space.

  • No Extended type in 64-bit. Use TExtendedRec80 if necessary (binary files with Extendeds in them for instance)


Windows api gotcha s
Windows API Mobilegotcha’s

  • SetWindowLong / GetWindowLong should be replaced by SetWindowLongPtr / GetWindowLongPtr for GWLP_HINSTANCE, GWLP_WNDPROC, etc… as they return pointers and handles.

    • Pointers passed to SetWindowLongPtr should be type-casted to LONG_PTR and not to Integer / Longint.

  • SetWindowLong mapped to SetWindowLongPtr in Windows.pas.

    • Calls to our declaration of SetWindowLong are safe, as long as they are cast correctly.


Windows api gotcha s con t
Windows API Mobilegotcha’s (con’t)

  • Use explicit casts to WPARAM and LPARAM where appropriate.

    • Example: Passing pointers through SendMessageSendMessage(hWnd, WM_SETTEXT, 0, LPARAM(@MyCharArray));

  • Use LRESULT to cast message results

    • Example: Message.Result := LRESULT(Self);

  • Message cracker records (TWMxxx) changed

    • Alignment changes and field-size changes


Summary

Summary Mobile


Firemonkey1
FireMonkey Mobile

  • FireMonkey - The Next Generation Business Application Platform

  • Fully harness the powerful GPU graphics hardware

  • Rapidly build visually spectacular applications

  • Invest in one platform and deploy to numerous OS-s

  • Delphi and C++ compiled, native executable

  • Fully programmable animations and effects

  • Your imagination is the only limit !!!

  • Go FIREMONKEY !!!


Rad studio xe21
RAD Studio XE2 Mobile

The ultimate application development suite for Windows, Mac, mobile and Web

  • Deliver Fast Native Applications on Windows, Mac, Web and Mobile

  • Speed Up Your Development Process with RAD

  • Create Visually Stunning and Interactive Business Applications

  • Build Applications that Connect Everywhere

  • Break Free from Grids – Visualize Live Data


Resources
Resources Mobile

  • RAD Studio XE2 samples on SourceForge

    • https://radstudiodemos.svn.sourceforge.net/svnroot/radstudiodemos/branches/RadStudio_XE2/

  • FireMonkey components Guide

    • http://docwiki.embarcadero.com/RADStudio/en/FireMonkey_Components_Guide

  • Anders Ohlsson FireMonkey iOS blog

    • http://blogs.embarcadero.com/ao/2011/10/26/39188

  • CodeRage 6 – session replays

    • http://cc.embarcadero.com/coderage

  • RAIZE Software

    • http://www.raize.com

  • MIDA VCL to FireMonkey Converter

    • http://midafiremonkey.wordpress.com/

  • JQueryMobile

    • http://jquerymobile.com/


Q&A Mobile



Z skejte licence nav c
Získejte licence navíc Mobile

Nabídka platí pro objednávky podané od 3.11. do 30.12.2011

Produkty získané zdarma si musíte vyžádat do 15.1.2012


Co je co
Co je co Mobile

  • Rapid SQL XE2 – je integrované vývojové prostředí jazyka SQL, které vám umožní vytvářet výkonný kód SQL pro vaše aplikace napsané v Delphi a C++Builderu.

  • Fastcube – je nástroj pro efektivní analýzu dat.

  • DB Optimizer XE2 – pomůže vám zvýšit celkový výkon vašich databázových aplikací a maximalizovat odezvu databází.

  • DB Change Manager XE2 – umožní vám sledovat a zvládat změny v používaných databázích stejným způsobem, jakým například sledujete změny zdrojového kódu.


Pamatujte taky e
Pamatujte taky, že … Mobile

  • Možnost upgrade z verze 2007 na verzi novější skončí zároveň s koncem roku 2011

  • S nákupem verze XE2 produktu z rodiny RAD Studio XE2 získáte i starší verze XE, 2010, 2009, 2007 a Delphi 7 či C++Builder 6

  • S nákupem verze XE2 získáte to, co zatím nemáte a jinde nenajdete:

    • 64bitový kompilátor Delphipro aplikace, které využijí možnosti nejnovějšího hardware

    • Skutečně oslňující vizuální obchodní aplikace vytvořené pomocí komponent FireMonkey™

    • Výkonné nativní aplikace proWindows, Mac a iOS

    • LiveBindings™ dovolící propojit jakýkoli vizuální prvek s libovolným typem dat

    • Propojitenost s mobilními systémy a cloudempomocí vícevrstvé technologie DataSnap


Dal informace najdete zde
Další Mobileinformace najdete zde

http://www.embt.cz

Borland s.r.o.

Belgická 15, 120 00 Praha 2, CZ

e-mail: [email protected]

telefon: +420 273 132 190


Thank you

Thank You Mobile

www.embarcadero.com/products/firemonkey

[email protected]


ad