You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: notes/version-features.html
+119-21
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@
6
6
7
7
<h1>Delphi Version Features</h1>
8
8
9
-
<p>This page contains notes about which features were introduced in which versions of Delphi<ahref="#footnote-1"><sup>1</sup></a>.</p>
9
+
<p>This page contains an incomplete list of which features were introduced in which versions of Delphi<ahref="#footnote-1"><sup>1</sup></a>.</p>
10
10
11
11
<p>If you have any additions or corrections please <ahref="https://github.com/delphidabbler/delphidabbler.github.io/issues">create an issue</a> on GitHub (<small>GitHub account required</small>).</p>
12
12
@@ -49,10 +49,22 @@ <h1>Delphi Version Features</h1>
49
49
<td><code>{$MESSAGE}</code> directive</td>
50
50
<td>Delphi 6</td>
51
51
</tr>
52
+
<tr>
53
+
<td><code>{$POINTERMATH}</code> directive</td>
54
+
<td>Delphi 2009</td>
55
+
</tr>
56
+
<tr>
57
+
<td><code>{$TEXTBLOCK}</code> directive to determine how line breaks are treated in multiline strings.</td>
58
+
<td>Delphi 12</td>
59
+
</tr>
52
60
<tr>
53
61
<td><code>{$WARN}</code> directive</td>
54
62
<td>Delphi 7</td>
55
63
</tr>
64
+
<tr>
65
+
<td>64 bit binary versions of the Delphi 32 and 64 bit compilers</td>
66
+
<td>Delphi 12.2</td>
67
+
</tr>
56
68
<tr>
57
69
<td>64 bit compiler</td>
58
70
<td>Delphi XE2</td>
@@ -69,6 +81,10 @@ <h1>Delphi Version Features</h1>
69
81
<td>Attributes</td>
70
82
<td>Delphi 2010</td>
71
83
</tr>
84
+
<tr>
85
+
<td>Binary integer literals, e.g. <code>%100101</code></td>
86
+
<td>Delphi 11</td>
87
+
</tr>
72
88
<tr>
73
89
<td>class constructors / destructors</td>
74
90
<td>Delphi 2010</td>
@@ -109,10 +125,18 @@ <h1>Delphi Version Features</h1>
109
125
<td>Dynamic arrays</td>
110
126
<td>Delphi 4</td>
111
127
</tr>
128
+
<tr>
129
+
<td>Digit separators in integer and floating point literals: e.g. <code>1_000_000</code></td>
130
+
<td>Delphi 11</td>
131
+
</tr>
112
132
<tr>
113
133
<td>Dynamic array concatenation and addition extensions. Dynamic arrays can be initialised by assigning an array constant, as in <code>DI := [1, 2, 3];</code> and can be concatenated using code like <code>DI := DI + [1, 2, 3];</code> or <code>DI := DJ + DK</code>, where <var>DI</var>, <var>DJ</var> & <var>DK</var> are all dynamic integer arrays.</td>
114
134
<td>Delphi XE7</td>
115
135
</tr>
136
+
<tr>
137
+
<td><var>EncodePath</var>, <var>EncodeAuth</var>, <var>EncodeQuery</var> & <var>EncodeForm</var> functions</td>
138
+
<td>Delphi 10.1</td>
139
+
</tr>
116
140
<tr>
117
141
<td><var>EOSError</var> (instead of <var>EWin32Error</var>)</td>
118
142
<td>Delphi 6</td>
@@ -125,10 +149,18 @@ <h1>Delphi Version Features</h1>
125
149
<td><var>Exit</var> with result parameter</td>
126
150
<td>Delphi 2009</td>
127
151
</tr>
152
+
<tr>
153
+
<td><var>Extended</var> type changes size depending upon the hardware and operating system<sup><ahref="#footnote-5">5</a></sup></td>
154
+
<td>Delphi XE2</td>
155
+
</tr>
128
156
<tr>
129
157
<td>Final methods</td>
130
158
<td>Delphi 2006</td>
131
159
</tr>
160
+
<tr>
161
+
<td><var>FixedInt</var> & <var>FixedUInt</var> types - 32 bit signed & unsigned integers respectively across all platforms</td>
162
+
<td>Delphi XE8</td>
163
+
</tr>
132
164
<tr>
133
165
<td>Floating point number comparison routines added to <var>Math</var> unit.</td>
@@ -149,6 +181,14 @@ <h1>Delphi Version Features</h1>
149
181
<td>Generics</td>
150
182
<td>Delphi 2009</td>
151
183
</tr>
184
+
<tr>
185
+
<td><var>GetCompilerVersion</var> & <var>GetRTLVersion</var> routines to get compiler & RTL versions as 16 bit unsigned integers with major version in the high byte and minor version in the low byte.</td>
186
+
<td>Delphi 12</td>
187
+
</tr>
188
+
<tr>
189
+
<td>Hash (System.Hash) unit</td>
190
+
<td>Delphi XE8</td>
191
+
</tr>
152
192
<tr>
153
193
<td><var>IInterface</var></td>
154
194
<td>Delphi 6</td>
@@ -158,7 +198,7 @@ <h1>Delphi Version Features</h1>
158
198
<td>Delphi 6</td>
159
199
</tr>
160
200
<tr>
161
-
<td>Inline variable declarations</td>
201
+
<td>Inline variable declarations: e.g. <code><strong>for var</strong> I: Integer := 0 <strong>to</strong> 9 <strong>do</strong></code> or, with type inference, <code><strong>for var</strong> I := 0 <strong>to</strong> 9 <strong>do</strong></code></td>
162
202
<td>Delphi 10.3</td>
163
203
</tr>
164
204
<tr>
@@ -174,15 +214,7 @@ <h1>Delphi Version Features</h1>
174
214
<td>Delphi XE7</td>
175
215
</tr>
176
216
<tr>
177
-
<td><var>Int8</var> type</td>
178
-
<td>Delphi 2009</td>
179
-
</tr>
180
-
<tr>
181
-
<td><var>Int16</var> type</td>
182
-
<td>Delphi 2009</td>
183
-
</tr>
184
-
<tr>
185
-
<td><var>Int32</var> type</td>
217
+
<td><var>Int8</var>, <var>Int16</var> & <var>Int32</var> types</td>
186
218
<td>Delphi 2009</td>
187
219
</tr>
188
220
<tr>
@@ -193,10 +225,26 @@ <h1>Delphi Version Features</h1>
193
225
<td>Interface to object casting</td>
194
226
<td>Delphi 2010</td>
195
227
</tr>
228
+
<tr>
229
+
<td>IOUtils unit</td>
230
+
<td>Delphi 2010</td>
231
+
</tr>
196
232
<tr>
197
233
<td><strong>library</strong> directive</td>
198
234
<td>Delphi 6</td>
199
235
</tr>
236
+
<tr>
237
+
<td>Linux compiler for server applications</td>
238
+
<td>Delphi 10.2</td>
239
+
</tr>
240
+
<tr>
241
+
<td>Long string literal support: string literals can now be longer than 255 characters.</td>
242
+
<td>Delphi 12</td>
243
+
</tr>
244
+
<tr>
245
+
<td><var>LongInt</var> & <var>LongWord</var> type sizes become platform dependent: 32 bit on 32 bit platforms, 64 bit on 64 bit platforms.</td>
246
+
<td>Delphi XE8</td>
247
+
</tr>
200
248
<tr>
201
249
<td><var>LongWord</var> type</td>
202
250
<td>Delphi 4</td>
@@ -205,10 +253,26 @@ <h1>Delphi Version Features</h1>
205
253
<td><var>Margins</var> and <var>Padding</var> properties on <var>TControl</var></td>
206
254
<td>Delphi 2006</td>
207
255
</tr>
256
+
<tr>
257
+
<td>Multiline string literals, delimited by triple quotes (<code>'''</code>)</td>
258
+
<td>Delphi 12</td>
259
+
</tr>
208
260
<trid="namespaces">
209
261
<td>Namespaces [<ahref="https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Using_Namespaces_with_Delphi">more info</a>]. See also: <ahref="#unit-scope-names"><em>Unit scope names</em></a>.</td>
210
262
<td>Delphi 2005</td>
211
263
</tr>
264
+
<tr>
265
+
<td>NaN number comparisons supported</td>
266
+
<td>Delphi 12</td>
267
+
</tr>
268
+
<tr>
269
+
<td><var>NativeInt</var> & <var>NativeUInt</var> types</td>
@@ -342,15 +442,7 @@ <h1>Delphi Version Features</h1>
342
442
<td>Delphi 6</td>
343
443
</tr>
344
444
<tr>
345
-
<td><var>UInt8</var> type</td>
346
-
<td>Delphi 2009</td>
347
-
</tr>
348
-
<tr>
349
-
<td><var>UInt16</var> type</td>
350
-
<td>Delphi 2009</td>
351
-
</tr>
352
-
<tr>
353
-
<td><var>UInt32</var> type</td>
445
+
<td><var>UInt8</var>, <var>UInt16</var> & <var>UInt32</var> types</td>
354
446
<td>Delphi 2009</td>
355
447
</tr>
356
448
<tr>
@@ -405,6 +497,10 @@ <h1>Delphi Version Features</h1>
405
497
<td>XMLDoc documentation</td>
406
498
<td>Delphi 2005</td>
407
499
</tr>
500
+
<tr>
501
+
<td>Zip file support added with new <var>TZipFile</var> class</td>
502
+
<td>Delphi XE2</td>
503
+
</tr>
408
504
</tbody>
409
505
410
506
</table>
@@ -418,6 +514,8 @@ <h1>Delphi Version Features</h1>
418
514
<liid="footnote-1">All this information relates to the native Delphi compiler, not the .NET compiler.</li>
419
515
<liid="footnote-2">From Delphi XE5 the use of the <code>{$IFEND}</code> directive results in a compiler error unless a <code>{$LEGACYIFEND}</code> directive precedes the first <code>{$IFEND}</code> directive or unless the use of legacy <code>{$IFEND}</code> is enabled in project options.</li>
420
516
<liid="footnote-3">Source: EFG's Computer Lab (<small>defunct website</small>). This source also stated that the Math unit did not change from Delphi 4 to Delphi 5.</li>
517
+
<liid="footnote-4"><var>NativeInt</var> and <var>NativeUInt</var> were introduced as 64 bit signed / unsigned integers respectively with Delphi 7. Delphi 2009 redefined them as 32 bit and Delphi XE2 made them either 32 or 64 bit depending on the operating system's native integer size. Source: <ahref="https://blog.dummzeuch.de/2018/09/08/nativeint-nativeuint-type-in-various-delphi-versions/">twm's blog.</a></li>
518
+
<liod="footnote-5">See the <ahref="https://docwiki.embarcadero.com/Libraries/en/System.Extended">Embarcadero DocWiki for the <var>Extended</var> type</a> for a full explanation.</li>
0 commit comments