Delphi

Delphi er et objektorienteret programmeringsmiljø til udvikling af software.
Delphi er langt det mest udbredte udviklingsværktøj for Object Pascal-programmører, og bliver brugt af millioner  af softwareudviklere verden over. Delphi blev udviklet af det amerikanske firma Borland, men udvikles i dag af Embarcadero som er ejet af Idera.

Delphi 1 
Delphi 1 udkom i 1995 og var revolutionerende i form af sin stærke native compiler, sit stærke sprog i form af Object Pascal og med super gode værktøjer i form af Visual Component Library og ikke mindst database egenskaber.

Delphi 1's slogan var meget sigende
Delphi and Delphi Client/Server are the only development tools that provide the Rapid Application Development (RAD) benefits of visual component-based design, the power of an optimizing native code compiler and a scalable client/server solution.

De første 3 udgaver af Delphi er i øvrigt bl.a. udviklet af danskeren Anders Hejlsberg inden han skiftede over til konkurrenten Microsoft.

Delphi 2 
Delphi 2 udkom i 1996 og fortsatte sin konkurrence imod Microsofts Visual Basic med fuld Win32 (Windows 95 integrering) med endnu bedre databaseværktøjer, datatyper og bedre mulighed for at videreudvikle sine grafiske brugergrænseflade.
Borland skrev følgende om Delphi 2
Delphi 2 is the only Rapid Application Development tool that combines the performance of the world's fastest optimizing 32-bit native-code compiler, the productivity of visual component-based design, and the flexibility of scalable database architecture in a robust object-oriented environment.
Delphi 2: the Ease of VB with the Power of C++"

Delphi 3 
Delphi 3 udkom i 1997 og introducerede helt nye funktioner.
Nogle af de vigtigste nye funktioner i Delphi 3 var "DLL Debugging", komponent skabeloner, TDecisionCube og TTeeChar komponenterne, Komponent pakker, integrering med COM Objekter og WebBroker teknologien.

Delphi 4

Delphi 5

Delphi 6 
Nye compiler directiver:

 {$IFDEF MSWINDOWS}

 {$IFDEF LINUX}

 {$LIBPREFIX}

 {$LIBSUFFIX}

 {$LIBVERSION}

 {$MESSAGE 'message'}

 {$SetPEFlags}

Support for {$IF}{$ELSE}

Styring af compiler hints: Experimental, Deprecated, Library, Platform 
Variant datatypen baseres ikke længere på COM men er ren Object Pascal.

COM baseret variant hedder nu OLEVariant

Styring af om "Typed constants" kan overskrives {$J+}

Styring af om enumerations værdier kan tildeles specifikke værdier (lign. C++)

Interface properties

Support for at kalde eksterne varargs funktioner hvis de følger cdecl kalde konventionen

Support for custom variants

Delphi 7 
3 nye kompiler warnings som default er disablet, men kan enables via {$WARN UNSAFE_CODE ON} etc.: 

 Unsafe_Type,
 Unsafe_Code
 Unsafe_Cast

Overload af rutiner til formattering of parsning af numeriske strenge, date/tids strenge og currency vha TFormatSettings record.

Delphi 8 for .NET

Delphi 2005 
D2005 tilføjede:

 for ... in loop
 inline keyword
 Wildcard i uses statement tillades
 nested types
 nested constants
 {$REGION}/{$ENDREGION} directiver

Delphi 2006 
Tilføjede:
 Enhanced records
 Operator overloading
 Static methoder og properties
 Class helpers
 FastMM er nu standard memory manager
 strict private/protected visibility keywords
 final keyword til virtuelle methoder
 {$METHODINFO} direktiv

Delphi 2007 
 Generics blev introduceret i .NET Delphi compileren

Delphi 2009 
 Følgende blev tilføjet:
 String mapper tilUnicodeString
 Generics introduceres i Win32 compileren
 function Default(T): T intrinsic function
 Smart pointers 
 Anonymous methods 
 Nested exception og exception tracing
 Support for pointer matematik og nyt compiler direktiv: {$POINTERMATH ON|OFF}
 4 nye compiler warnings:
 W1057 Implicit string cast from '%s' to '%s',
 W1058 Implicit string cast with potential data loss from '%s' to '%s',
 W1059 Explicit string cast from '%s' to '%s',
 W1060 Explicit string cast with potential data loss from '%s' to '%s';
 Exit funktionen kan acceptere et resultat argument
 resourcestrings er nu Widestrings
 TObject includerer en TMonitor, som kan bruges til at lave objekt orienteret trådsikring  
 Der kan angives beskrivende tekst til deprecated keywordet

Delphi 2010 
I D2010 blev følgende tilføjet:
 Udvidet Delphi RTTI (Run Time Type Information).
 Attributes 
 as operatoren kan caste en interface reference til sit oprindelige objekt.
 is operatoren kan bruges til at tjekke om et interface reference er baseret på en specifik klasse.
 Man kan nu lave unsafe casting fra en interface reference til et objekt: TObject(SomeInterface).
 Nyt delayed direktiv, som indikerer at en ekstern DLL ikke skal loades ind på deklarations tidspunkt, men først når funktioner i den bruges første gang.
 Class Constructor/Destructor
 Touch funktionalitet til Visual Component Library som understøtter Windows 7's Touch Brugergrænseflade.

Delphi for PHP 
Med Delphi for PHP udviklede Codegear det første Rapid Application Development udviklingsvæktøj til PHP.
Delphi for PHP inkluderer et helt Visual Component Library for PHP, med over 50 komponenter, ud fra PHP 5s definitioner om objekt orienteret programmering og brugen af klasser.
VCL for PHP indeholder knapper, labels, check bokse, billeder, DHTML menuer, Flash objekter og meget mere.

Delphi XE 
 {$STRINGCHECKS} compiler direktivet ignoreres i XE
 Ny 16-byte mulighed til record og data alignment i {$ALIGN} direktivet
 Nyt {$CODEALIGN} direktiv, som styrer start adressen for en procedure eller funktion.
 {$STRONGLINKTYPES ON} direktiv
 Runtime regulære udtryk

Delphi XE2 
 Cross platform support mod Mac OSX (32-bit), iOS 32 bit og Windows 64 bit. 
 Packed records byte alignes nu. Det skete ikke altid tidligere.
 8 nye DEFINEs:
ALIGN_STACK
CPUX86
CPUX64
MACOS (Mac operating system)
MACOS32
PC_MAPPED_EXCEPTIONS
PIC
WIN64
Brug af fuld unit scope navngivning kræves nu i uses sektion. F.eks. Windows.WinAPI i stedet for WinAPI.
Native data typer afhænger nu af den valgte arkitektur. Extended data type er 80 bit på Win32, men 64 bit på andre arkitekturer.
FireMonkey introduceres. Det er et nyt "all is a container" 2D/3D GPU accelereret UI. Det er en forudsætning for iOS applikationer, men optionelt for Win32 applikationer som fortsat kan bruge VCL.

Delphi XE3 
Record hjælpere for indbyggede data typer (String, Integer etc).
 iOS support midlertidigt fjernet. I XE2 var supporten i form af FreePascal compileren.
 Atomare indbyggede funktioner:
AtomicExchange()
AtomicIncrement()
AtomicCmpExchange()
AtomicDecrement()

Delphi XE4 
Et antal nye precompiler conditionals introduceres:
AUTOREFCOUNT
CPUARM
EXTERNAL_LINKER
IOS
NEXTGEN
UNDERSCOREIMPORTNAME
WEAKREF
WEAKINSTREF
WEAKINTREF
Reintroduceret support for iOS, nu med Embarcaderos egen compiler.
ARC (Automatic Reference Count) GC support i NextGen compilere

Delphi XE5 
Android Support. Kræver device med ARMv6 + NEON eller ARMv7
Nyt precompiler conditional ANDROID
Operator overloading på klasser i Nextgen compilere (iOS og Android)

Delphi XE6 
 Enum identifier navne uden prefixes

Delphi XE7 
String ligenende metoder supporteres nu på dynamiske arrays.
Parallel Library tilføjet RTL
Nye intrinsic funktioner:
function IsManagedType(T: TypeIdentifier): Boolean; 
function HasWeakRef(T: TypeIdentifier): Boolean;
function GetTypeKind(T: TypeIdentifier): TTypeKind;
function IsConstValue(Value): boolean;

Delphi XE8 
Support for iOS 64-bit
Nye integer typer: FixedInt/FixedUInt som er 32-bit på alle platforme.
Nye (gamle) arkitektur afhængige integer typer: LongInt, LongWord (64-bits på iOS 64-bit, ellers 32 bit)
FQN (Fully qualified names) skal nu indeholde unit scope.

Delphi 10 Seattle 
Support for Android 5.1.1 og iOS 8.4
Forbedret OSX exception håndtering

Delphi 10.1 Berlin 
 Support for Utf8String  og RawByteString  på alle arkitekturer
 Performance forbedringer ved kompilering af generics
 [weak], [unsafe] og [volatile] attributes  supporteres på alle arkitekturer
 Data typen extended er nu 16 bytes på OSX 
 class og record hjælpere kan ikke tilgå private medlemmer af klasser eller records som de tilføjer til
 Support for Android op til 6.01
 Support for Windows 10 Notifications
 Support for DirectX 12 på Windows https://www.embarcadero.com/products/delphi/whats-new

Eksterne henvisninger 
 Dansk Delphi brugergruppe 
 Delphi i Danmark 
 Delphi Tricks 
 Delphi and C++ Builder roadmap 
 Delphi History

Referencer 

Udviklingsværktøjer
Windows-software