~ubuntu-branches/ubuntu/feisty/fpc/feisty

« back to all changes in this revision

Viewing changes to docs/typinfo.xml

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Werner
  • Date: 2007-01-27 20:08:50 UTC
  • mfrom: (1.2.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20070127200850-9mrptaqqjsx9nwa7
Tags: 2.0.4-5
* Fixed Build-Depends.
* Add myself to Uploaders in debian/control.
* Make sure that the sources are really patched before building them.
* Build unit 'libc' on powerpc too.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<?xml version="1.0" encoding="ISO8859-1"?>
2
 
<fpdoc-descriptions>
3
 
<!--  
4
 
 
5
 
   $Id: typinfo.xml,v 1.5 2005/05/07 09:41:09 michael Exp $ 
6
 
   This file is part of the FPC documentation. 
7
 
   Copyright (C) 1997, by Michael Van Canneyt 
8
 
 
9
 
   The FPC documentation is free text; you can redistribute it and/or 
10
 
   modify it under the terms of the GNU Library General Public License as 
11
 
   published by the Free Software Foundation; either version 2 of the 
12
 
   License, or (at your option) any later version. 
13
 
 
14
 
   The FPC Documentation is distributed in the hope that it will be useful, 
15
 
   but WITHOUT ANY WARRANTY; without even the implied warranty of 
16
 
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
17
 
   Library General Public License for more details. 
18
 
 
19
 
   You should have received a copy of the GNU Library General Public 
20
 
   License along with the FPC documentation; see the file COPYING.LIB.  If not, 
21
 
   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
22
 
   Boston, MA 02111-1307, USA. 
23
 
 -->
24
 
<package name="rtl">
25
 
<module name="typinfo">
26
 
<short>Access Run-Time Type Information (RTTI)</short>
27
 
<!-- \FPCexampledir{typinfex} -->
28
 
<descr>
29
 
<p>
30
 
The <file>TypeInfo</file> unit contains many routines which can be used for
31
 
the querying of the Run-Time Type Information (RTTI) which is generated
32
 
by the compiler for classes that are compiled under the <var>{$M+}</var>
33
 
switch. This information can be used to retrieve or set property values
34
 
for published properties for totally unknown classes. In particular, it
35
 
can be used to stream classes. The <var>TPersistent</var> class in the 
36
 
<file>Classes</file> unit is compiled in the <var>{$M+}</var> state and serves
37
 
as the base class for all classes that need to be streamed.
38
 
</p>
39
 
<p>
40
 
The unit should be compatible to the Delphi 5 unit with the same name. 
41
 
The only calls that are still missing are the Variant calls, since Free Pascal
42
 
does not support the variant type yet.
43
 
</p>
44
 
<p>
45
 
The examples in this chapter use a <file>rttiobj</file> file, which contains
46
 
an object that has a published property of all supported types. It also
47
 
contains some auxiliary routines and definitions.
48
 
</p>
49
 
</descr>
50
 
 
51
 
<topic name="ExaminePropInfo">
52
 
<short>Examining published property information</short>
53
 
<descr>
54
 
<p>
55
 
Functions for retrieving or examining property information
56
 
</p>
57
 
<table>
58
 
<th><td>Name</td><td>Description</td></th>
59
 
<tr><td><link id="FindPropInfo"/></td><td>Getting property type information, With error checking.</td></tr>
60
 
<tr><td><link id="GetPropInfo"/></td><td>Getting property type information, No error checking.</td></tr>
61
 
<tr><td><link id="GetPropInfos"/></td><td>Find property information of a certain kind</td></tr>
62
 
<tr><td><link id="GetObjectPropClass"/></td><td>Return the declared class of an object property </td></tr>
63
 
<tr><td><link id="GetPropList"/></td><td>Get a list of all published properties</td></tr>
64
 
<tr><td><link id="IsPublishedProp"/></td><td>Is a property published</td></tr>
65
 
<tr><td><link id="IsStoredProp"/></td><td>Is a property stored</td></tr>
66
 
<tr><td><link id="PropIsType"/></td><td>Is a property of a certain kind</td></tr>
67
 
<tr><td><link id="PropType"/></td><td>Return the type of a property</td></tr>
68
 
</table>
69
 
</descr>
70
 
</topic>
71
 
 
72
 
<topic name="ManipulatePropValues">
73
 
<short>Getting or setting property values</short>
74
 
<descr>
75
 
<p>
76
 
Functions to set or set a property's value.
77
 
</p>
78
 
<table>
79
 
<th><td>Name</td><td>Description</td></th>
80
 
<tr><td><link id="GetEnumProp"/></td><td>Return the value of an enumerated type property</td></tr>
81
 
<tr><td><link id="GetFloatProp"/></td><td>Return the value of a float property</td></tr>
82
 
<tr><td><link id="GetInt64Prop"/></td><td>Return the value of an Int64 property</td></tr>
83
 
<tr><td><link id="GetMethodProp"/></td><td>Return the value of a procedural type property</td></tr>
84
 
<tr><td><link id="GetObjectProp"/></td><td>Return the value of an object property</td></tr>
85
 
<tr><td><link id="GetOrdProp"/></td><td>Return the value of an ordinal type property</td></tr>
86
 
<tr><td><link id="GetPropValue"/></td><td>Return the value of a property as a variant</td></tr>
87
 
<tr><td><link id="GetSetProp"/></td><td>Return the value of a set property</td></tr>
88
 
<tr><td><link id="GetStrProp"/></td><td>Return the value of a string property</td></tr>
89
 
<tr><td><link id="GetVariantProp"/></td><td>Return the value of a variant property</td></tr>
90
 
<tr><td><link id="SetEnumProp"/></td><td>Set the value of an enumerated type property</td></tr>
91
 
<tr><td><link id="SetFloatProp"/></td><td>Set the value of a float property</td></tr>
92
 
<tr><td><link id="SetInt64Prop"/></td><td>Set the value of an Int64 property</td></tr>
93
 
<tr><td><link id="SetMethodProp"/></td><td>Set the value of a procedural type property</td></tr>
94
 
<tr><td><link id="SetObjectProp"/></td><td>Set the value of an object property</td></tr>
95
 
<tr><td><link id="SetOrdProp"/></td><td>Set the value of an ordinal type property</td></tr>
96
 
<tr><td><link id="SetPropValue"/></td><td>Set the value of a property trhough a variant</td></tr>
97
 
<tr><td><link id="SetSetProp"/></td><td>Set the value of a set property</td></tr>
98
 
<tr><td><link id="SetStrProp"/></td><td>Set the value of a string property</td></tr>
99
 
<tr><td><link id="SetVariantProp"/></td><td>Set the value of a variant property</td></tr>
100
 
</table>
101
 
</descr>
102
 
</topic>
103
 
 
104
 
<topic name="AuxiliaryTypinfo">
105
 
<short>Auxiliary functions</short>
106
 
<descr>
107
 
<p>
108
 
Other typinfo related functions.
109
 
</p>
110
 
<table>
111
 
<th><td>Name</td><td>Description</td></th>
112
 
<tr><td><link id="GetEnumName"/></td><td>Get an enumerated type element name</td></tr>
113
 
<tr><td><link id="GetEnumValue"/></td><td>Get ordinal number of an enumerated tye, based on the name.</td></tr>
114
 
<tr><td><link id="GetTypeData"/></td><td>Skip type name and return a pointer to the type data</td></tr>
115
 
<tr><td><link id="SetToString"/></td><td>Convert a set to its string representation</td></tr>
116
 
<tr><td><link id="StringToSet"/></td><td>Convert a string representation of a set to a set</td></tr>
117
 
</table>
118
 
</descr>
119
 
</topic>
120
 
 
121
 
 
122
 
<element name="BooleanIdents">
123
 
<short>Names for boolean values</short>
124
 
</element>
125
 
 
126
 
<element name="DotSep">
127
 
<short>Name separator character</short>
128
 
</element>
129
 
 
130
 
<element name="ptField">
131
 
<short>Property acces directly from field</short>
132
 
</element>
133
 
 
134
 
<element name="ptStatic">
135
 
<short>Property acces via static method</short>
136
 
</element>
137
 
 
138
 
<element name="ptVirtual">
139
 
<short>Property acces via virtual method</short>
140
 
</element>
141
 
 
142
 
<element name="ptConst">
143
 
<short>Constant used in acces method</short>
144
 
</element>
145
 
 
146
 
<element name="tkAny">
147
 
<short>Any property type</short>
148
 
</element>
149
 
 
150
 
<element name="tkMethods">
151
 
<short>Only method properties. (event handlers)</short>
152
 
</element>
153
 
 
154
 
<element name="tkProperties">
155
 
<short>Real properties. (not methods)</short>
156
 
</element>
157
 
 
158
 
<element name="PShortString">
159
 
<short>Pointer to shortstring</short>
160
 
</element>
161
 
 
162
 
<element name="PByte">
163
 
<short>Pointer to byte</short>
164
 
</element>
165
 
 
166
 
<element name="PWord">
167
 
<short>Pointer to Word</short>
168
 
</element>
169
 
 
170
 
<element name="PLongint">
171
 
<short>Pointer to longint</short>
172
 
</element>
173
 
 
174
 
<element name="PBoolean">
175
 
<short>Pointer to boolean</short>
176
 
</element>
177
 
 
178
 
<element name="PSingle">
179
 
<short>Pointer to single</short>
180
 
</element>
181
 
 
182
 
<element name="PDouble">
183
 
<short>Pointer to double</short>
184
 
</element>
185
 
 
186
 
<element name="PExtended">
187
 
<short>Pointer to extended</short>
188
 
</element>
189
 
 
190
 
<element name="PComp">
191
 
<short>Pointer to comp</short>
192
 
</element>
193
 
 
194
 
<element name="PFixed16">
195
 
<short>Pointer to Fixed16</short>
196
 
</element>
197
 
 
198
 
<element name="Variant">
199
 
<short>Dummy type. Do not use.</short>
200
 
</element>
201
 
 
202
 
<element name="TTypeKind">
203
 
<short>Type of a property.</short>
204
 
</element>
205
 
 
206
 
<element name="tkString">
207
 
<short>Alias for the <var>tsSString</var> enumeration value</short>
208
 
</element>
209
 
 
210
 
 
211
 
<element name="TTypeKind.tkUnknown">
212
 
<short>Unknown property type.</short>
213
 
</element>
214
 
 
215
 
<element name="TTypeKind.tkInteger">
216
 
<short>Integer property.</short>
217
 
</element>
218
 
 
219
 
<element name="TTypeKind.tkChar">
220
 
<short>Char property.</short>
221
 
</element>
222
 
 
223
 
<element name="TTypeKind.tkEnumeration">
224
 
<short>Enumeration type property.</short>
225
 
</element>
226
 
 
227
 
<element name="TTypeKind.tkFloat">
228
 
<short>Float property.</short>
229
 
</element>
230
 
 
231
 
<element name="TTypeKind.tkSet">
232
 
<short>Set property.</short>
233
 
</element>
234
 
 
235
 
<element name="TTypeKind.tkMethod">
236
 
<short>Method property.</short>
237
 
</element>
238
 
 
239
 
<element name="TTypeKind.tkSString">
240
 
<short>Shortstring property.</short>
241
 
</element>
242
 
 
243
 
<element name="TTypeKind.tkLString">
244
 
<short>Longstring property.</short>
245
 
</element>
246
 
 
247
 
<element name="TTypeKind.tkAString">
248
 
<short>Ansistring property.</short>
249
 
</element>
250
 
 
251
 
<element name="TTypeKind.tkWString">
252
 
<short>Widestring property.</short>
253
 
</element>
254
 
 
255
 
<element name="TTypeKind.tkVariant">
256
 
<short>Variant property.</short>
257
 
</element>
258
 
 
259
 
<element name="TTypeKind.tkArray">
260
 
<short>Array property.</short>
261
 
</element>
262
 
 
263
 
<element name="TTypeKind.tkRecord">
264
 
<short>Record property.</short>
265
 
</element>
266
 
 
267
 
<element name="TTypeKind.tkInterface">
268
 
<short>Interface property.</short>
269
 
</element>
270
 
 
271
 
<element name="TTypeKind.tkClass">
272
 
<short>Class property.</short>
273
 
</element>
274
 
 
275
 
<element name="TTypeKind.tkObject">
276
 
<short>Object property.</short>
277
 
</element>
278
 
 
279
 
<element name="TTypeKind.tkWChar">
280
 
<short>Widechar property.</short>
281
 
</element>
282
 
 
283
 
<element name="TTypeKind.tkBool">
284
 
<short>Boolean property.</short>
285
 
</element>
286
 
 
287
 
<element name="TTypeKind.tkInt64">
288
 
<short>Int64 property.</short>
289
 
</element>
290
 
 
291
 
<element name="TTypeKind.tkQWord">
292
 
<short>QWord property.</short>
293
 
</element>
294
 
 
295
 
<element name="TTypeKind.tkDynArray">
296
 
<short>Dynamical array property.</short>
297
 
</element>
298
 
 
299
 
<element name="TTypeKind.tkInterfaceRaw">
300
 
<short>Raw interface property.</short>
301
 
</element>
302
 
 
303
 
<element name="TTOrdType">
304
 
<short>Size and sign of ordinal property type.</short>
305
 
<descr>
306
 
If the property is and ordinal type, then <var>TTOrdType</var> determines
307
 
the size and sign of the ordinal type:
308
 
</descr>
309
 
</element>
310
 
 
311
 
<element name="TTOrdType.otSByte">
312
 
<short>Signed byte</short>
313
 
</element>
314
 
 
315
 
<element name="TTOrdType.otUByte">
316
 
<short>Unsigned byte</short>
317
 
</element>
318
 
 
319
 
<element name="TTOrdType.otSWord">
320
 
<short>Signed word</short>
321
 
</element>
322
 
 
323
 
<element name="TTOrdType.otUWord">
324
 
<short>Unsigned word</short>
325
 
</element>
326
 
 
327
 
<element name="TTOrdType.otSLong">
328
 
<short>Signed longint</short>
329
 
</element>
330
 
 
331
 
<element name="TTOrdType.otULong">
332
 
<short>Unsigned longing (Cardinal)</short>
333
 
</element>
334
 
 
335
 
<element name="TOrdType">
336
 
<short>Alias for <link id="#rtl.typinfo.TTordType">TTordType</link>.</short>
337
 
<descr>
338
 
If the property is and ordinal type, then <var>TOrdType</var> determines
339
 
the size and sign of the ordinal type:
340
 
</descr>
341
 
</element>
342
 
 
343
 
<element name="TOrdType.otSByte">
344
 
<short>Signed byte</short>
345
 
</element>
346
 
 
347
 
<element name="TOrdType.otUByte">
348
 
<short>Unsigned byte</short>
349
 
</element>
350
 
 
351
 
<element name="TOrdType.otSWord">
352
 
<short>Signed word</short>
353
 
</element>
354
 
 
355
 
<element name="TOrdType.otUWord">
356
 
<short>Unsigned word</short>
357
 
</element>
358
 
 
359
 
<element name="TOrdType.otSLong">
360
 
<short>Signed longint</short>
361
 
</element>
362
 
 
363
 
<element name="TOrdType.otULong">
364
 
<short>Unsigned longing (Cardinal)</short>
365
 
</element>
366
 
 
367
 
<element name="TFloatType">
368
 
<short>The size of a float type.</short>
369
 
</element>
370
 
 
371
 
<element name="TFloatType.ftSingle">
372
 
<short>Single-sized float</short>
373
 
</element>
374
 
 
375
 
<element name="TFloatType.ftDouble">
376
 
<short>Double-sized float</short>
377
 
</element>
378
 
 
379
 
<element name="TFloatType.ftExtended">
380
 
<short>Extended-size float</short>
381
 
</element>
382
 
 
383
 
<element name="TFloatType.ftComp">
384
 
<short>Comp-type float</short>
385
 
</element>
386
 
 
387
 
<element name="TFloatType.ftCurr">
388
 
<short>Currency-type float</short>
389
 
</element>
390
 
 
391
 
<element name="TFloatType.ftFixed16">
392
 
<short>16-bit float type</short>
393
 
</element>
394
 
 
395
 
<element name="TFloatType.ftFixed32">
396
 
<short>32-bit float type.</short>
397
 
</element>
398
 
 
399
 
<element name="TMethodKind">
400
 
<short>Method type description</short>
401
 
</element>
402
 
 
403
 
<element name="TMethodKind.mkProcedure">
404
 
<short>Procedure method.</short>
405
 
</element>
406
 
 
407
 
<element name="TMethodKind.mkFunction">
408
 
<short>Function method</short>
409
 
</element>
410
 
 
411
 
<element name="TMethodKind.mkConstructor">
412
 
<short>Class constructor</short>
413
 
</element>
414
 
 
415
 
<element name="TMethodKind.mkDestructor">
416
 
<short>Class Desctructor</short>
417
 
</element>
418
 
 
419
 
<element name="TMethodKind.mkClassProcedure">
420
 
<short>Class procedure</short>
421
 
</element>
422
 
 
423
 
<element name="TMethodKind.mkClassFunction">
424
 
<short>Class function</short>
425
 
</element>
426
 
 
427
 
<element name="TParamFlags">
428
 
<short>The kind of parameter for a method</short>
429
 
</element>
430
 
 
431
 
<element name="TParamFlags.pfVar">
432
 
<short>Parameter passed by reference</short>
433
 
</element>
434
 
 
435
 
<element name="TParamFlags.pfConst">
436
 
<short>Parameter passed as const (reference)</short>
437
 
</element>
438
 
 
439
 
<element name="TParamFlags.pfArray">
440
 
<short>Array parameter</short>
441
 
</element>
442
 
 
443
 
<element name="TParamFlags.pfAddress">
444
 
<short>Address is passed</short>
445
 
</element>
446
 
 
447
 
<element name="TParamFlags.pfReference">
448
 
<short>Reference passed</short>
449
 
</element>
450
 
 
451
 
<element name="TParamFlags.pfOut">
452
 
<short>Out (by reference)</short>
453
 
</element>
454
 
 
455
 
<element name="TIntfFlag">
456
 
<short>Type of interface.</short>
457
 
</element>
458
 
 
459
 
<element name="TIntfFlags">
460
 
<short>Set of <link id="TIntfFlag"/>.</short>
461
 
</element>
462
 
 
463
 
<element name="TIntfFlagsBase">
464
 
<short>Set of <link id="TIntfFlag"/>.</short>
465
 
</element>
466
 
 
467
 
<element name="TIntfFlag.ifHasGuid">
468
 
<short>Interface has GUID identifier</short>
469
 
</element>
470
 
 
471
 
<element name="TIntfFlag.ifDispInterface">
472
 
<short>Interface is a dual dispatch interface</short>
473
 
</element>
474
 
 
475
 
<element name="TIntfFlag.ifDispatch">
476
 
<short>Interface is a dispatch interface</short>
477
 
</element>
478
 
 
479
 
<element name="TTypeKinds">
480
 
<short>Set of <link id="TTypeKind"/> enumeration.</short>
481
 
</element>
482
 
 
483
 
<element name="TTypeInfo">
484
 
<short>Type information record</short>
485
 
<descr>
486
 
<p>
487
 
The <var>TypeInfo</var> function returns a pointer to a <var>TTypeInfo</var>
488
 
record.
489
 
</p>
490
 
<p>
491
 
Note that the Name field is stored with as much bytes as needed to store the name,
492
 
it is not padded to 255 characters. 
493
 
The type data immediatly follows the <var>TTypeInfo</var> record as a <link
494
 
id="TTypeData"/> record.
495
 
</p>
496
 
</descr>
497
 
</element>
498
 
 
499
 
<element name="TTypeInfo.Name">
500
 
<short>Type name</short>
501
 
</element>
502
 
 
503
 
<element name="TTypeInfo.Kind">
504
 
<short>Type kind</short>
505
 
</element>
506
 
 
507
 
<element name="PTypeInfo">
508
 
<short>Pointer to <link id="TTypeInfo"/> record</short>
509
 
</element>
510
 
<element name="PPTypeInfo">
511
 
<short>Pointer to <link id="PTypeInfo"/> pointer</short>
512
 
</element>
513
 
 
514
 
<element name="PTypeData">
515
 
<short>Pointer to <link id="TTypeData"/> record.</short>
516
 
</element>
517
 
 
518
 
<element name="TTypeData">
519
 
<short>Class properties type data record.</short>
520
 
<descr>
521
 
<p>
522
 
If the typeinfo kind is <var>tkClass</var>, then the property 
523
 
information follows the <var>UnitName</var> string, as an array of <link
524
 
id="TPropInfo"/> records.
525
 
</p>
526
 
</descr>
527
 
</element>
528
 
 
529
 
<element name="TPropData">
530
 
<short>Property data record</short>
531
 
<descr>
532
 
The <var>TPropData</var> record is not used, but is provided for completeness and
533
 
compatibility with Delphi.
534
 
</descr>
535
 
</element>
536
 
 
537
 
<element name="PPropInfo">
538
 
<short>Pointer to <link id="TPropInfo"/> record</short>
539
 
</element>
540
 
 
541
 
<element name="TPropInfo">
542
 
<short>Record describing one published property of a class</short>
543
 
<descr>
544
 
<p>
545
 
The <var>TPropInfo</var> record describes one published property of a class.
546
 
The property information of a class are stored as an array of
547
 
<var>TPropInfo</var> records.
548
 
</p>
549
 
<p>
550
 
The <var>Name</var> field is stored not with 255 characters, but with just as many characters
551
 
as required to store the name.
552
 
</p>
553
 
</descr>
554
 
</element>
555
 
 
556
 
<element name="TPropInfo.PropType">
557
 
<short>Property type</short>
558
 
</element>
559
 
<element name="TPropInfo.GetProc">
560
 
<short>Read handler</short>
561
 
</element>
562
 
<element name="TPropInfo.SetProc">
563
 
<short>Write handler</short>
564
 
</element>
565
 
<element name="TPropInfo.StoredProc">
566
 
<short>Procedure pointer for stored keyword.</short>
567
 
</element>
568
 
<element name="TPropInfo.Index">
569
 
<short>Index for array properties</short>
570
 
</element>
571
 
<element name="TPropInfo.Default">
572
 
<short>Default value</short>
573
 
</element>
574
 
<element name="TPropInfo.NameIndex">
575
 
<short>Index for indexed properties</short>
576
 
</element>
577
 
<element name="TPropInfo.PropProcs">
578
 
<short>Flags describing property procedures.</short>
579
 
</element>
580
 
<element name="TPropInfo.Name">
581
 
<short>Property name</short>
582
 
</element>
583
 
 
584
 
<element name="TProcInfoProc">
585
 
<short>Property info callback method</short>
586
 
</element>
587
 
 
588
 
<element name="TPropList">
589
 
<short>Array of property information pointers</short>
590
 
</element>
591
 
 
592
 
<element name="PPropList">
593
 
<short>Pointer to <link id="TPropList"/></short>
594
 
</element>
595
 
 
596
 
<element name="EPropertyError">
597
 
<short>Exception raised in case of an error in one of the functions.</short>
598
 
</element>
599
 
 
600
 
<element name="FindPropInfo">
601
 
<short>Return property information by property name.</short>
602
 
<descr>
603
 
<p>
604
 
<var>FindPropInfo</var> examines the published property information of a class and
605
 
returns a pointer to the property information for property <var>PropName</var>.
606
 
The class to be examined can be specified in one of two ways:
607
 
</p>
608
 
<dl>
609
 
<dt>AClass</dt><dd> a class pointer.</dd>
610
 
<dt>Instance</dt><dd> an instance of the class to be investigated.</dd>
611
 
</dl>
612
 
<p>
613
 
If the property does not exist, a <var>EPropertyError</var> exception will be
614
 
raised. The <link id="GetPropInfo"/> function has the same function as the
615
 
<var>FindPropInfo</var> function, but returns <var>Nil</var> if the property does not
616
 
exist.
617
 
</p>
618
 
</descr>
619
 
<errors>
620
 
Specifying an invalid property name in <var>PropName</var> will result in an
621
 
<var>EPropertyError</var> exception.
622
 
</errors>
623
 
<seealso>
624
 
<link id="GetPropInfo"/>
625
 
<link id="GetPropList"/>
626
 
<link id="GetPropInfos"/>
627
 
</seealso>
628
 
<example file="typinfex/ex14"/>
629
 
</element>
630
 
 
631
 
 
632
 
<element name="GetEnumName">
633
 
<short>Return name of enumeration constant.</short>
634
 
<descr>
635
 
<p>
636
 
<var>GetEnumName</var> scans the type information for the enumeration type
637
 
described by <var>TypeInfo</var> and returns the name of the enumeration 
638
 
constant for the element with ordinal value equal to <var>Value</var>.
639
 
</p>
640
 
<p>
641
 
If <var>Value</var> is out of range, the first element of the enumeration type
642
 
is returned. The result is lowercased, but this may change in the future.
643
 
</p>
644
 
<p>
645
 
This can be used in combination with <var>GetOrdProp</var> to stream a property
646
 
of an enumerated type.
647
 
</p>
648
 
</descr>
649
 
<errors>
650
 
No check is done to determine whether <var>TypeInfo</var> really points to the 
651
 
type information for an enumerated type. 
652
 
</errors>
653
 
<seealso>
654
 
<link id="GetOrdProp"/>
655
 
<link id="GetEnumValue"/>
656
 
</seealso>
657
 
<example file="typinfex/ex9"/>
658
 
</element>
659
 
 
660
 
 
661
 
<element name="GetEnumProp">
662
 
<short>Return the value of an enumeration type property.</short>
663
 
<descr>
664
 
<var>GetEnumProp</var> returns the value of an property of an enumerated type
665
 
and returns the name of the enumerated value for the objetc <var>Instance</var>. 
666
 
The property whose value must be returned can be specified by its property 
667
 
info in <var>PropInfo</var> or by its name in <var>PropName</var>
668
 
</descr>
669
 
<errors>
670
 
No check is done to determine whether <var>PropInfo</var> really points to the 
671
 
property information for an enumerated type. 
672
 
Specifying an invalid property name in <var>PropName</var> will result in an
673
 
<var>EPropertyError</var> exception.
674
 
</errors>
675
 
<seealso>
676
 
<link id="SetEnumProp"/>
677
 
<link id="GetOrdProp"/>
678
 
<link id="GetStrProp"/>
679
 
<link id="GetInt64Prop"/>
680
 
<link id="GetMethodProp"/>
681
 
<link id="GetSetProp"/>
682
 
<link id="GetObjectProp"/>
683
 
<link id="GetEnumProp"/>
684
 
</seealso>
685
 
<example file="typinfex/ex2"/>
686
 
</element>
687
 
 
688
 
 
689
 
<element name="GetEnumValue">
690
 
<short>Get ordinal value for enumerated type by name</short>
691
 
<descr>
692
 
<p>
693
 
<var>GetEnumValue</var> scans the type information for the enumeration type
694
 
described by <var>TypeInfo</var> and returns the ordinal value for the element
695
 
in the enumerated type that has identifier <var>Name</var>. The identifier is
696
 
searched in a case-insensitive manner.
697
 
</p>
698
 
<p>
699
 
This can be used to set the value of enumerated properties from a stream. 
700
 
</p>
701
 
<p>
702
 
For an example, see <link id="GetEnumName"/>.
703
 
</p>
704
 
</descr>
705
 
<errors>
706
 
If <var>Name</var> is not found in the list of enumerated values, then -1 is
707
 
returned. No check is done whether <var>TypeInfo</var> points to the type information
708
 
for an enumerated type. 
709
 
</errors>
710
 
<seealso>
711
 
<link id="GetEnumName"/>
712
 
<link id="SetOrdProp"/>
713
 
</seealso>
714
 
</element>
715
 
 
716
 
 
717
 
<element name="GetFloatProp">
718
 
<short>Return value of floating point property</short>
719
 
<descr>
720
 
<var>GetFloatProp</var> returns the value of the float property described by 
721
 
<var>PropInfo</var> or with name <var>Propname</var> for the object <var>Instance</var>. 
722
 
All float types are converted
723
 
to extended.
724
 
</descr>
725
 
<errors>
726
 
No checking is done whether <var>Instance</var> is non-nil, or whether
727
 
<var>PropInfo</var> describes a valid float property of <var>Instance</var>.
728
 
Specifying an invalid property name in <var>PropName</var> will result in an
729
 
<var>EPropertyError</var> exception.
730
 
</errors>
731
 
<seealso>
732
 
<link id="SetFloatProp"/>
733
 
<link id="GetOrdProp"/>
734
 
<link id="GetStrProp"/>
735
 
<link id="GetInt64Prop"/>
736
 
<link id="GetMethodProp"/>
737
 
<link id="GetSetProp"/>
738
 
<link id="GetObjectProp"/>
739
 
<link id="GetEnumProp"/>
740
 
</seealso>
741
 
<example file="typinfex/ex4"/>
742
 
</element>
743
 
 
744
 
 
745
 
<element name="GetInt64Prop">
746
 
<short>return value of an Int64 property</short>
747
 
<descr>
748
 
<remark>
749
 
Publishing of Int64 properties is not yet supported by Free Pascal. This
750
 
function is provided for Delphi compatibility only at the moment.
751
 
</remark>
752
 
<p>
753
 
<var>GetInt64Prop</var> returns the value of the property of type
754
 
<var>Int64</var> that is described by <var>PropInfo</var> or with name <var>Propname</var> 
755
 
for the object <var>Instance</var>.
756
 
</p>
757
 
</descr>
758
 
<errors>
759
 
No checking is done whether <var>Instance</var> is non-nil, or whether
760
 
<var>PropInfo</var> describes a valid <var>Int64</var> property of <var>Instance</var>.
761
 
Specifying an invalid property name in <var>PropName</var> will result in an
762
 
<var>EPropertyError</var> exception
763
 
</errors>
764
 
<seealso>
765
 
<link id="SetInt64Prop"/>
766
 
<link id="GetOrdProp"/>
767
 
<link id="GetStrProp"/>
768
 
<link id="GetFloatProp"/>
769
 
<link id="GetMethodProp"/>
770
 
<link id="GetSetProp"/>
771
 
<link id="GetObjectProp"/>
772
 
<link id="GetEnumProp"/>
773
 
</seealso>
774
 
<example file="typinfex/ex15"/>
775
 
</element>
776
 
 
777
 
 
778
 
<element name="GetMethodProp">
779
 
<short>Return value of a method property</short>
780
 
<descr>
781
 
<p>
782
 
<var>GetMethodProp</var> returns the method the property described by
783
 
<var>PropInfo</var> or with name <var>Propname</var> for object <var>Instance</var>.
784
 
The return type <var>TMethod</var> is defined in the <file>SysUtils</file> unit as:
785
 
</p>
786
 
<code>
787
 
TMethod = packed record
788
 
  Code, Data: Pointer;
789
 
end;                                                                         
790
 
</code>
791
 
<p>
792
 
<var>Data</var> points to the instance of the class with the method <var>Code</var>.
793
 
</p>
794
 
</descr>
795
 
<errors>
796
 
No checking is done whether <var>Instance</var> is non-nil, or whether
797
 
<var>PropInfo</var> describes a valid method property of <var>Instance</var>.
798
 
Specifying an invalid property name in <var>PropName</var> will result in an
799
 
<var>EPropertyError</var> exception.
800
 
</errors>
801
 
<seealso>
802
 
<link id="SetMethodProp"/>
803
 
<link id="GetOrdProp"/>
804
 
<link id="GetStrProp"/>
805
 
<link id="GetFloatProp"/>
806
 
<link id="GetInt64Prop"/>
807
 
<link id="GetSetProp"/>
808
 
<link id="GetObjectProp"/>
809
 
<link id="GetEnumProp"/>
810
 
</seealso>
811
 
<example file="typinfex/ex6"/>
812
 
</element>
813
 
 
814
 
 
815
 
<element name="GetObjectProp">
816
 
<short>Return value of an object-type property.</short>
817
 
<descr>
818
 
<p>
819
 
<var>GetObjectProp</var> returns the object which the property described by
820
 
<var>PropInfo</var> with name <var>Propname</var> points to for object <var>Instance</var>.
821
 
</p>
822
 
<p>
823
 
If <var>MinClass</var> is specified, then if the object is not descendent of
824
 
class <var>MinClass</var>, then <var>Nil</var> is returned.
825
 
</p>
826
 
</descr>
827
 
<errors>
828
 
No checking is done whether <var>Instance</var> is non-nil, or whether
829
 
<var>PropInfo</var> describes a valid method property of <var>Instance</var>. 
830
 
Specifying an invalid property name in <var>PropName</var> will result in an
831
 
<var>EPropertyError</var> exception.
832
 
</errors>
833
 
<seealso>
834
 
<link id="SetMethodProp"/>
835
 
<link id="GetOrdProp"/>
836
 
<link id="GetStrProp"/>
837
 
<link id="GetFloatProp"/>
838
 
<link id="GetInt64Prop"/>
839
 
<link id="GetSetProp"/>
840
 
<link id="GetObjectProp"/>
841
 
<link id="GetEnumProp"/>
842
 
</seealso>
843
 
<example file="typinfex/ex5"/>
844
 
</element>
845
 
 
846
 
 
847
 
<element name="GetObjectPropClass">
848
 
<short>Return class of property.</short>
849
 
<descr>
850
 
<p>
851
 
<var>GetObjectPropClass</var> returns the declared class of the property with name 
852
 
<var>PropName</var>. This may not be the actual class of the property value.
853
 
</p>
854
 
<p>
855
 
For an example, see <link id="GetObjectProp"/>.
856
 
</p>
857
 
</descr>
858
 
<errors>
859
 
No checking is done whether <var>Instance</var> is non-nil.
860
 
Specifying an invalid property name in <var>PropName</var> will result in an
861
 
<var>EPropertyError</var> exception.
862
 
</errors>
863
 
<seealso>
864
 
<link id="SetMethodProp"/>
865
 
<link id="GetOrdProp"/>
866
 
<link id="GetStrProp"/>
867
 
<link id="GetFloatProp"/>
868
 
<link id="GetInt64Prop"/>
869
 
</seealso>
870
 
</element>
871
 
 
872
 
 
873
 
<element name="GetOrdProp">
874
 
<short>Get the value of an ordinal property</short>
875
 
<descr>
876
 
<p>
877
 
<var>GetOrdProp</var> returns the value of the ordinal property described by
878
 
<var>PropInfo</var> or with name <var>PropName</var> for the object <var>Instance</var>. 
879
 
The value is returned as a longint, which should be typecasted to the 
880
 
needed type.
881
 
</p>
882
 
<p>
883
 
Ordinal properties that can be retrieved include:
884
 
</p>
885
 
<dl>
886
 
<dt>Integers and subranges of integers</dt>
887
 
<dd>The value of the integer will be returned.</dd>
888
 
<dt>Enumerated types and subranges of enumerated types</dt>
889
 
<dd>The ordinal value of the enumerated type will be returned.</dd>
890
 
<dt>Sets</dt>
891
 
<dd>If the base type of the set has less than 31 possible values.
892
 
If a bit is set in the return value, then the corresponding element of the
893
 
base ordinal class of the set type must be included in the set.
894
 
</dd>
895
 
</dl>
896
 
</descr>
897
 
<errors>
898
 
No checking is done whether <var>Instance</var> is non-nil, or whether
899
 
<var>PropInfo</var> describes a valid ordinal property of <var>Instance</var>
900
 
Specifying an invalid property name in <var>PropName</var> will result in an
901
 
<var>EPropertyError</var> exception.
902
 
</errors>
903
 
<seealso>
904
 
<link id="SetOrdProp"/>
905
 
<link id="GetStrProp"/>
906
 
<link id="GetFloatProp"/>
907
 
<link id="GetInt64Prop"/>
908
 
<link id="GetMethodProp"/>
909
 
<link id="GetSetProp"/>
910
 
<link id="GetObjectProp"/>
911
 
<link id="GetEnumProp"/>
912
 
</seealso>
913
 
<example file="typinfex/ex1"/>
914
 
</element>
915
 
 
916
 
 
917
 
<element name="GetPropInfo">
918
 
<short>Return property type information, by property name.</short>
919
 
<descr>
920
 
<p>
921
 
<var>GetPropInfo</var> returns a pointer to the <var>TPropInfo</var> record for a the 
922
 
<var>PropName</var> property of a class. The class to examine can be specified 
923
 
in one of three ways:
924
 
</p>
925
 
<dl>
926
 
<dt>Instance</dt><dd> An instance of the class.</dd>
927
 
<dt>AClass</dt><dd> A class pointer to the class.</dd>
928
 
<dt>TypeInfo</dt><dd> A pointer to the type information of the class.</dd>
929
 
</dl>
930
 
<p>
931
 
In each of these three ways, if <var>AKinds</var> is specified, if the property 
932
 
has <var>TypeKind</var> which is not included in <var>Akinds</var>, <var>Nil</var> will be
933
 
returned.
934
 
</p>
935
 
<p>
936
 
For an example, see most of the other functions.
937
 
</p>
938
 
</descr>
939
 
<errors>
940
 
If the property <var>PropName</var> does not exist, <var>Nil</var> is returned.
941
 
</errors>
942
 
<seealso>
943
 
<link id="GetPropInfos"/>
944
 
<link id="GetPropList"/>
945
 
</seealso>
946
 
</element>
947
 
 
948
 
 
949
 
<element name="GetPropInfos">
950
 
<short>Return a list of published properties.</short>
951
 
<descr>
952
 
<var>GetPropInfos</var> stores pointers to the property information of all published
953
 
properties of a class with class info <var>TypeInfo</var> in the list pointed to by
954
 
<var>Proplist</var>. The <var>PropList</var> pointer must point to a memory location that
955
 
contains enough space to hold all properties of the class and its parent classes.
956
 
</descr>
957
 
<errors>
958
 
No checks are done to see whether <var>PropList</var> points to a memory area that 
959
 
is big enough to hold all pointers.
960
 
</errors>
961
 
<seealso>
962
 
<link id="GetPropInfo"/>
963
 
<link id="GetPropList"/>
964
 
</seealso>
965
 
<example file="typinfex/ex12"/>
966
 
</element>
967
 
 
968
 
 
969
 
<element name="GetPropList">
970
 
<short>Return a list of a certain type of published properties.</short>
971
 
<descr>
972
 
<p>
973
 
<var>GetPropList</var> stores pointers to property information of the class with class
974
 
info <var>TypeInfo</var> for properties of kind <var>TypeKinds</var> in the list pointed to
975
 
by <var>Proplist</var>. <var>PropList</var> must contain enough space to hold all properties.
976
 
</p>
977
 
<p>
978
 
The function returns the number of pointers that matched the criteria and were stored
979
 
in <var>PropList</var>.
980
 
</p>
981
 
</descr>
982
 
<errors>
983
 
No checks are done to see whether <var>PropList</var> points to a memory area that is big enough
984
 
to hold all pointers.
985
 
</errors>
986
 
<seealso>
987
 
<link id="GetPropInfos"/>
988
 
<link id="GetPropInfo"/>
989
 
</seealso>
990
 
<example file="typinfex/ex13"/>
991
 
</element>
992
 
 
993
 
 
994
 
<element name="GetPropValue">
995
 
<short>Get property value as a string.</short>
996
 
<descr>
997
 
Due to missing <var>Variant</var> support, <var>GetPropValue</var> is not yet implemented. 
998
 
The declaration is provided for compatibility with Delphi.
999
 
</descr>
1000
 
<errors>
1001
 
</errors>
1002
 
<seealso>
1003
 
</seealso>
1004
 
</element>
1005
 
 
1006
 
<element name="GetSetProp">
1007
 
<short>Return the value of a set property.</short>
1008
 
<descr>
1009
 
<p>
1010
 
<var>GetSetProp</var> returns the contents of a set property as a string.
1011
 
The property to be returned can be specified by it's name in <var>PropName</var>
1012
 
or by its property information in <var>PropInfo</var>.
1013
 
</p>
1014
 
<p>
1015
 
The returned set is a string representation of the elements in the set as
1016
 
returned by <link id="SetToString"/>. The <var>Brackets</var> option can be used to 
1017
 
enclose the string representation in square brackets.
1018
 
</p>
1019
 
</descr>
1020
 
<errors>
1021
 
No checking is done whether <var>Instance</var> is non-nil, or whether
1022
 
<var>PropInfo</var> describes a valid ordinal property of <var>Instance</var>
1023
 
Specifying an invalid property name in <var>PropName</var> will result in an
1024
 
<var>EPropertyError</var> exception.                                                 
1025
 
</errors>
1026
 
<seealso>
1027
 
<link id="SetSetProp"/>
1028
 
<link id="GetStrProp"/>
1029
 
<link id="GetFloatProp"/>
1030
 
<link id="GetInt64Prop"/>
1031
 
<link id="GetMethodProp"/>
1032
 
</seealso>
1033
 
<example file="typinfex/ex7"/>
1034
 
</element>
1035
 
 
1036
 
 
1037
 
<element name="GetStrProp">
1038
 
<short>Return the value of a string property.</short>
1039
 
<descr>
1040
 
<var>GetStrProp</var> returns the value of the string property described by
1041
 
<var>PropInfo</var> or with name <var>PropName</var> for object <var>Instance</var>. 
1042
 
</descr>
1043
 
<errors>
1044
 
No checking is done whether <var>Instance</var> is non-nil, or whether
1045
 
<var>PropInfo</var> describes a valid string property of <var>Instance</var>.
1046
 
Specifying an invalid property name in <var>PropName</var> will result in an
1047
 
<var>EPropertyError</var> exception.
1048
 
</errors>
1049
 
<seealso>
1050
 
<link id="SetStrProp"/>
1051
 
<link id="GetOrdProp"/>
1052
 
<link id="GetFloatProp"/>,
1053
 
<link id="GetInt64Prop"/>
1054
 
<link id="GetMethodProp"/>
1055
 
</seealso>
1056
 
<example file="typinfex/ex3"/>
1057
 
</element>
1058
 
 
1059
 
 
1060
 
<element name="GetTypeData">
1061
 
<short>Return a pointer to type data, based on type information.</short>
1062
 
<descr>
1063
 
<var>GetTypeData</var> returns a pointer to the <var>TTypeData</var> record that
1064
 
follows after the <var>TTypeInfo</var> record pointed to by <var>TypeInfo</var>.
1065
 
It essentially skips the <var>Kind</var> and <var>Name</var> fields in the 
1066
 
<var>TTypeInfo</var> record.
1067
 
</descr>
1068
 
<errors>
1069
 
None.
1070
 
</errors>
1071
 
<seealso>
1072
 
</seealso>
1073
 
</element>
1074
 
 
1075
 
<element name="GetVariantProp">
1076
 
<short>Return the value of a variant property.</short>
1077
 
<descr>
1078
 
Due to mising Variant support, the <var>GetVariantProp</var> function is not 
1079
 
yet implemented. Provided for Delphi compatibility only.
1080
 
</descr>
1081
 
<errors>
1082
 
</errors>
1083
 
<seealso>
1084
 
<link id="SetVariantProp"/>
1085
 
</seealso>
1086
 
</element>
1087
 
 
1088
 
<element name="IsPublishedProp">
1089
 
<short>Check whether a published property exists.</short>
1090
 
<descr>
1091
 
<p>
1092
 
<var>IsPublishedProp</var> returns true if a class has a published property with
1093
 
name <var>PropName</var>. The class can be specfied in one of two ways:
1094
 
</p>
1095
 
<dl>
1096
 
<dt>AClass</dt><dd> A class pointer to the class.</dd>
1097
 
<dt>Instance</dt><dd> An instance of the class.</dd>
1098
 
</dl>
1099
 
</descr>
1100
 
<errors>
1101
 
No checks are done to ensure <var>Instance</var> or <var>AClass</var> are valid
1102
 
pointers. Specifying an invalid property name in <var>PropName</var> will result
1103
 
in an <var>EPropertyError</var> exception.                                                 
1104
 
</errors>
1105
 
<seealso>
1106
 
<link id="IsStoredProp"/>
1107
 
<link id="PropIsType"/>
1108
 
</seealso>
1109
 
<example file="typinfex/ex10"/>
1110
 
</element>
1111
 
 
1112
 
 
1113
 
<element name="IsStoredProp">
1114
 
<short>Check whether a property is stored.</short>
1115
 
<descr>
1116
 
<p>
1117
 
<var>IsStoredProp</var> returns <var>True</var> if the <var>Stored</var> modifier evaluates
1118
 
to <var>True</var> for the property described by <var>PropInfo</var> or with name
1119
 
<var>PropName</var> for object <var>Instance</var>. 
1120
 
It returns <var>False</var> otherwise. If the function returns
1121
 
<var>True</var>, this indicates that the property should be written when
1122
 
streaming the object <var>Instance</var>.
1123
 
</p>
1124
 
<p>
1125
 
If there was no <var>stored</var> modifier in the declaration of the property, 
1126
 
<var>True</var> will be returned. 
1127
 
</p>
1128
 
</descr>
1129
 
<errors>
1130
 
No checking is done whether <var>Instance</var> is non-nil, or whether
1131
 
<var>PropInfo</var> describes a valid property of <var>Instance</var>.
1132
 
Specifying an invalid property name in <var>PropName</var> will result in an
1133
 
<var>EPropertyError</var> exception.                                                 
1134
 
</errors>
1135
 
<seealso>
1136
 
<link id="IsPublishedProp"/>
1137
 
<link id="PropIsType"/>
1138
 
</seealso>
1139
 
<example file="typinfex/ex11"/>
1140
 
</element>
1141
 
 
1142
 
 
1143
 
<element name="PropIsType">
1144
 
<short>Check the type of a published property.</short>
1145
 
<descr>
1146
 
<p>
1147
 
<var>PropIsType</var> returns <var>True</var> if the property with name <var>PropName</var>
1148
 
has type <var>TypeKind</var>. It returns <var>False</var> otherwise. The class to be
1149
 
examined can be specified in one of two ways:
1150
 
</p>
1151
 
<dl>
1152
 
<dt>AClass</dt><dd> A class pointer. </dd>
1153
 
<dt>Instance</dt><dd> An instance of the class.</dd>
1154
 
</dl>
1155
 
</descr>
1156
 
<errors>
1157
 
No checks are done to ensure <var>Instance</var> or <var>AClass</var> are valid
1158
 
pointers.Specifying an invalid property name in <var>PropName</var> will result
1159
 
in an <var>EPropertyError</var> exception.                                                 
1160
 
</errors>
1161
 
<seealso>
1162
 
<link id="IsPublishedProp"/>
1163
 
<link id="IsStoredProp"/>
1164
 
<link id="PropType"/>
1165
 
</seealso>
1166
 
<example file="typinfex/ex16"/>
1167
 
</element>
1168
 
 
1169
 
 
1170
 
<element name="PropType">
1171
 
<short>Return the type of a property</short>
1172
 
<descr>
1173
 
<p>
1174
 
<var>Proptype</var> returns the type of the property <var>PropName</var> for a class.
1175
 
The class to be examined can be specified in one of 2 ways:
1176
 
</p>
1177
 
<dl>
1178
 
<dt>AClass</dt><dd>A class pointer.</dd>
1179
 
<dt>Instance</dt><dd>An instance of the class.</dd>
1180
 
</dl>
1181
 
</descr>
1182
 
<errors>
1183
 
No checks are done to ensure <var>Instance</var> or <var>AClass</var> are valid
1184
 
pointers. Specifying an invalid property name in <var>PropName</var> will result
1185
 
in an <var>EPropertyError</var> exception.
1186
 
</errors>
1187
 
<seealso>
1188
 
<link id="IsPublishedProp"/>
1189
 
<link id="IsStoredProp"/>
1190
 
<link id="PropIsType"/>
1191
 
</seealso>
1192
 
<example file="typinfex/ex17"/>
1193
 
</element>
1194
 
 
1195
 
 
1196
 
<element name="SetEnumProp">
1197
 
<short>Set value of an enumerated-type property</short>
1198
 
<descr>
1199
 
<p>
1200
 
<var>SetEnumProp</var> sets the property described by <var>PropInfo</var> or with name
1201
 
<var>PropName</var> to <var>Value</var>. <var>Value</var> must be a string with the name
1202
 
of the enumerate value, i.e. it can be used as an argument to 
1203
 
<link id="GetEnumValue"/>.
1204
 
</p>
1205
 
<p>
1206
 
For an example, see <link id="GetEnumProp"/>.
1207
 
</p>
1208
 
</descr>
1209
 
<errors>
1210
 
No checks are done to ensure <var>Instance</var> or <var>PropInfo</var> are valid
1211
 
pointers. Specifying an invalid property name in <var>PropName</var> will result
1212
 
in an <var>EPropertyError</var> exception.                                           
1213
 
</errors>
1214
 
<seealso>
1215
 
<link id="GetEnumProp"/>
1216
 
<link id="SetStrProp"/>
1217
 
<link id="SetFloatProp"/>
1218
 
<link id="SetInt64Prop"/>
1219
 
<link id="SetMethodProp"/>
1220
 
</seealso>
1221
 
</element>
1222
 
 
1223
 
 
1224
 
<element name="SetFloatProp">
1225
 
<short>Set value of a float property.</short>
1226
 
<descr>
1227
 
<p>
1228
 
<var>SetFloatProp</var> assigns <var>Value</var> to the property described by
1229
 
<var>PropInfo</var> or with name <var>Propname</var> for the object <var>Instance</var>.
1230
 
</p>
1231
 
<p>
1232
 
For an example, see <link id="GetFloatProp"/>.
1233
 
</p>
1234
 
</descr>
1235
 
<errors>
1236
 
No checking is done whether <var>Instance</var> is non-nil, or whether
1237
 
<var>PropInfo</var> describes a valid float property of <var>Instance</var>.
1238
 
Specifying an invalid property name in <var>PropName</var> will result in an
1239
 
<var>EPropertyError</var> exception.
1240
 
</errors>
1241
 
<seealso>
1242
 
<link id="GetFloatProp"/>
1243
 
<link id="SetOrdProp"/>
1244
 
<link id="SetStrProp"/>,
1245
 
<link id="SetInt64Prop"/>
1246
 
<link id="SetMethodProp"/>
1247
 
</seealso>
1248
 
</element>
1249
 
 
1250
 
 
1251
 
 
1252
 
<element name="SetInt64Prop">
1253
 
<short>Set value of a Int64 property</short>
1254
 
<descr>
1255
 
<p>
1256
 
<var>SetInt64Prop</var> assigns <var>Value</var> to the property of type
1257
 
<var>Int64</var> that is described by <var>PropInfo</var> or with name <var>Propname</var> 
1258
 
for the object <var>Instance</var>.
1259
 
</p>
1260
 
<p>
1261
 
For an example, see <link id="GetInt64Prop"/>.
1262
 
</p>
1263
 
</descr>
1264
 
<errors>
1265
 
No checking is done whether <var>Instance</var> is non-nil, or whether
1266
 
<var>PropInfo</var> describes a valid <var>Int64</var> property of <var>Instance</var>.
1267
 
Specifying an invalid property name in <var>PropName</var> will result in an
1268
 
<var>EPropertyError</var> exception.
1269
 
</errors>
1270
 
<seealso>
1271
 
<link id="GetInt64Prop"/>
1272
 
<link id="GetMethodProp"/>
1273
 
<link id="SetOrdProp"/>
1274
 
<link id="SetStrProp"/>
1275
 
<link id="SetFloatProp"/>
1276
 
</seealso>
1277
 
</element>
1278
 
 
1279
 
<element name="SetMethodProp">
1280
 
<short>Set the value of a method property</short>
1281
 
<descr>
1282
 
<p>
1283
 
<var>SetMethodProp</var> assigns <var>Value</var> to the method the property described 
1284
 
by <var>PropInfo</var> or with name <var>Propname</var> for object <var>Instance</var>.
1285
 
</p>
1286
 
<p>
1287
 
The type <var>TMethod</var> of the <var>Value</var> parameter is defined in the
1288
 
<file>SysUtils</file> unit as:
1289
 
</p>
1290
 
<code>
1291
 
TMethod = packed record
1292
 
  Code, Data: Pointer;
1293
 
end;                                                                         
1294
 
</code>
1295
 
<p>
1296
 
<var>Data</var> should point to the instance of the class with the method <var>Code</var>.
1297
 
</p>
1298
 
<p>
1299
 
For an example, see <link id="GetMethodProp"/>.
1300
 
</p>
1301
 
</descr>
1302
 
<errors>
1303
 
No checking is done whether <var>Instance</var> is non-nil, or whether
1304
 
<var>PropInfo</var> describes a valid method property of <var>Instance</var>.
1305
 
Specifying an invalid property name in <var>PropName</var> will result in an
1306
 
<var>EPropertyError</var> exception.
1307
 
</errors>
1308
 
<seealso>
1309
 
<link id="GetMethodProp"/>
1310
 
<link id="SetOrdProp"/>
1311
 
<link id="SetStrProp"/>
1312
 
<link id="SetFloatProp"/>
1313
 
<link id="SetInt64Prop"/>
1314
 
</seealso>
1315
 
</element>
1316
 
 
1317
 
<element name="SetObjectProp">
1318
 
<short>Set the value of an object-type property.</short>
1319
 
<descr>
1320
 
<p>
1321
 
<var>SetObjectProp</var> assigns <var>Value</var> to the the object property described by
1322
 
<var>PropInfo</var> or with name <var>Propname</var> for the object <var>Instance</var>. 
1323
 
</p>
1324
 
<p>
1325
 
For an example, see <link id="GetObjectProp"/>.
1326
 
</p>
1327
 
</descr>
1328
 
<errors>
1329
 
No checking is done whether <var>Instance</var> is non-nil, or whether
1330
 
<var>PropInfo</var> describes a valid method property of <var>Instance</var>.
1331
 
Specifying an invalid property name in <var>PropName</var> will result in an
1332
 
<var>EPropertyError</var> exception.
1333
 
</errors>
1334
 
<seealso>
1335
 
<link id="GetObjectProp"/>
1336
 
<link id="SetOrdProp"/>
1337
 
<link id="SetStrProp"/>
1338
 
<link id="SetFloatProp"/>
1339
 
<link id="SetInt64Prop"/>
1340
 
<link id="SetMethodProp"/>
1341
 
</seealso>
1342
 
</element>
1343
 
 
1344
 
 
1345
 
<element name="SetOrdProp">
1346
 
<short>Set value of an ordinal property</short>
1347
 
<descr>
1348
 
<p>
1349
 
<var>SetOrdProp</var> assigns <var>Value</var> to the the ordinal property described by 
1350
 
<var>PropInfo</var> or with name <var>Propname</var> for the object <var>Instance</var>. 
1351
 
</p>
1352
 
<p>
1353
 
Ordinal properties that can be set include:
1354
 
</p>
1355
 
<dl>
1356
 
<dt>Integers and subranges of integers</dt>
1357
 
<dd>The actual value of the integer must be passed.</dd>
1358
 
<dt>Enumerated types and subranges of enumerated types</dt>
1359
 
<dd>The ordinal value of the enumerated type must be passed.</dd>
1360
 
<dt>Subrange types</dt>
1361
 
<dd>of integers or enumerated types. Here the ordinal value must be passed.</dd>
1362
 
<dt>Sets</dt>
1363
 
<dd> If the base type of the set has less than 31 possible values. 
1364
 
For each possible value; the corresponding bit of <var>Value</var> must be set.</dd>
1365
 
</dl>
1366
 
<p>
1367
 
For an example, see <link id="GetOrdProp"/>.
1368
 
</p>
1369
 
</descr>
1370
 
<errors>
1371
 
No checking is done whether <var>Instance</var> is non-nil, or whether
1372
 
<var>PropInfo</var> describes a valid ordinal property of <var>Instance</var>. 
1373
 
No range checking is performed.
1374
 
Specifying an invalid property name in <var>PropName</var> will result in an
1375
 
<var>EPropertyError</var> exception.
1376
 
</errors>
1377
 
<seealso>
1378
 
<link id="GetOrdProp"/>
1379
 
<link id="SetStrProp"/>
1380
 
<link id="SetFloatProp"/>
1381
 
<link id="SetInt64Prop"/>
1382
 
<link id="SetMethodProp"/>
1383
 
</seealso>
1384
 
</element>
1385
 
 
1386
 
 
1387
 
<element name="SetPropValue">
1388
 
<short>Set property value as variant</short>
1389
 
<descr>
1390
 
Due to missing Variant support, this function is not yet implemented;
1391
 
it is provided for Delphi compatibility only.
1392
 
</descr>
1393
 
<errors>
1394
 
</errors>
1395
 
<seealso>
1396
 
</seealso>
1397
 
</element>
1398
 
 
1399
 
<element name="SetSetProp">
1400
 
<short>Set value of set-typed property.</short>
1401
 
<descr>
1402
 
<p>
1403
 
<var>SetSetProp</var> sets the property specified by <var>PropInfo</var> or
1404
 
<var>PropName</var> for object <var>Instance</var> to <var>Value</var>. <var>Value</var> is a
1405
 
string which contains a comma-separated list of values, each value being a
1406
 
string-representation of the enumerated value that should be included in
1407
 
the set. The value should be accepted by the <link id="StringToSet"/> function.
1408
 
</p>
1409
 
<p>
1410
 
The value can be formed using the <link id="SetToString"/> function.
1411
 
</p>
1412
 
<p>
1413
 
For an example, see <link id="GetSetProp"/>.
1414
 
</p>
1415
 
</descr>
1416
 
<errors>
1417
 
No checking is done whether <var>Instance</var> is non-nil, or whether
1418
 
<var>PropInfo</var> describes a valid ordinal property of <var>Instance</var>.
1419
 
No range checking is performed.
1420
 
Specifying an invalid property name in <var>PropName</var> will result in an
1421
 
<var>EPropertyError</var> exception.                                                 
1422
 
</errors>
1423
 
<seealso>
1424
 
<link id="GetSetProp"/>
1425
 
<link id="SetOrdProp"/>
1426
 
<link id="SetStrProp"/>
1427
 
<link id="SetFloatProp"/>
1428
 
<link id="SetInt64Prop"/>
1429
 
<link id="SetMethodProp"/>
1430
 
<link id="SetToString"/>
1431
 
<link id="StringToSet"/>
1432
 
</seealso>
1433
 
</element>
1434
 
 
1435
 
 
1436
 
<element name="SetStrProp">
1437
 
<short>Set value of a string property</short>
1438
 
<descr>
1439
 
<p>
1440
 
<var>SetStrProp</var> assigns <var>Value</var> to the string property described by
1441
 
<var>PropInfo</var> or with name <var>Propname</var> for object <var>Instance</var>. 
1442
 
</p>
1443
 
<p>
1444
 
For an example, see <link id="GetStrProp"/>
1445
 
</p>
1446
 
</descr>
1447
 
<errors>
1448
 
No checking is done whether <var>Instance</var> is non-nil, or whether
1449
 
<var>PropInfo</var> describes a valid string property of <var>Instance</var>.
1450
 
Specifying an invalid property name in <var>PropName</var> will result in an
1451
 
<var>EPropertyError</var> exception.
1452
 
</errors>
1453
 
<seealso>
1454
 
<link id="GetStrProp"/>
1455
 
<link id="SetOrdProp"/>
1456
 
<link id="SetFloatProp"/>,
1457
 
<link id="SetInt64Prop"/>
1458
 
<link id="SetMethodProp"/>
1459
 
</seealso>
1460
 
</element>
1461
 
 
1462
 
 
1463
 
<element name="SetToString">
1464
 
<short>Convert set to a string description</short>
1465
 
<descr>
1466
 
<p>
1467
 
<var>SetToString</var> takes an integer representation of a set (as received e.g.
1468
 
by <var>GetOrdProp</var>) and turns it into a string representing the elements in
1469
 
the set, based on the type information found in the <var>PropInfo</var> property
1470
 
information. By default, the string representation is not surrounded by
1471
 
square brackets. Setting the <var>Brackets</var> parameter to <var>True</var> will 
1472
 
surround the string representation with brackets.
1473
 
</p>
1474
 
<p>
1475
 
The function returns the string representation of the set.
1476
 
</p>
1477
 
</descr>
1478
 
<errors>
1479
 
No checking is done to see whether <var>PropInfo</var> points to valid property
1480
 
information.
1481
 
</errors>
1482
 
<seealso>
1483
 
<link id="GetEnumName"/>
1484
 
<link id="GetEnumValue"/>
1485
 
<link id="StringToSet"/>
1486
 
</seealso>
1487
 
<example file="typinfex/ex18"/>
1488
 
</element>
1489
 
 
1490
 
 
1491
 
<element name="SetVariantProp">
1492
 
<short>Set value of a variant property</short>
1493
 
<descr>
1494
 
Due to missing Variant support, this function is not yet implemented. 
1495
 
Provided for Delphi compatibility only.
1496
 
</descr>
1497
 
<errors>
1498
 
</errors>
1499
 
<seealso>
1500
 
</seealso>
1501
 
</element>
1502
 
 
1503
 
 
1504
 
<element name="StringToSet">
1505
 
<short>Convert string description to a set.</short>
1506
 
<descr>
1507
 
<p>
1508
 
<var>StringToSet</var> converts the string representation of a set in <var>Value</var>
1509
 
to a integer representation of the set, using the property information found
1510
 
in <var>PropInfo</var>. This property information should point to the property
1511
 
information of a set property. The function returns the integer
1512
 
representation of the set. (i.e, the set value, typecast to an integer)
1513
 
</p>
1514
 
<p>
1515
 
The string representation can be surrounded with square brackets, and must 
1516
 
consist of the names of the elements of the base type of the set. The base
1517
 
type of the set should be an enumerated type. The elements should be
1518
 
separated by commas, and may be surrounded by spaces.
1519
 
each of the names will be fed to the <link id="GetEnumValue"/> function.
1520
 
</p>
1521
 
<p>
1522
 
For an example, see <link id="SetToString"/>.
1523
 
</p>
1524
 
</descr>
1525
 
<errors>
1526
 
No checking is done to see whether <var>PropInfo</var> points to valid property
1527
 
information. If a wrong name is given for an enumerated value, then an
1528
 
<var>EPropertyError</var> will be raised.
1529
 
</errors>
1530
 
<seealso>
1531
 
<link id="GetEnumName"/>
1532
 
<link id="GetEnumValue"/>
1533
 
<link id="SetToString"/>
1534
 
</seealso>
1535
 
</element>
1536
 
 
1537
 
<element name="OnGetPropValue">
1538
 
<short>Callback to get a property value as a variant.</short>
1539
 
<descr>
1540
 
This callback is set by the variants unit to enable reading of properties as
1541
 
a variant. If set, it is called by the <link id="GetPropValue"/> function.
1542
 
</descr>
1543
 
</element>
1544
 
 
1545
 
 
1546
 
<element name="OnGetVariantprop">
1547
 
<short>Callback to get a variant property value.</short>
1548
 
<descr>
1549
 
This callback is set by the variants unit to enable reading of variant properties
1550
 
If set, it is called by the <link id="GetVariantProp"/> function.
1551
 
</descr>
1552
 
</element>
1553
 
 
1554
 
 
1555
 
<element name="OnSetPropValue">
1556
 
<short>Callback to set a property value as a variant.</short>
1557
 
<descr>
1558
 
This callback is set by the variants unit to enable writing of properties as
1559
 
a variant. If set, it is called by the <link id="SetPropValue"/> function.
1560
 
</descr>
1561
 
</element>
1562
 
 
1563
 
 
1564
 
<element name="OnSetVariantprop">
1565
 
<short>Callback to set a variant property value.</short>
1566
 
<descr>
1567
 
This callback is set by the variants unit to enable writing of variant
1568
 
properties. If set, it is called by the <link id="GetVariantProp"/> function.
1569
 
</descr>
1570
 
</element>
1571
 
 
1572
 
 
1573
 
<element name="TGetPropValue">
1574
 
<short>Callback type for the <link id="#rtl.TypInfo.OnGetPropValue">OnGetPropValue</link> callback
1575
 
event</short>.
1576
 
<descr>
1577
 
The callback function must return the property with name <var>PropName</var>
1578
 
of instance <var>Instance</var>. If <var>PreferStrings</var> is true, it
1579
 
should favour converting the property to a string value. The function needs
1580
 
to return the variant with the property value.
1581
 
</descr>
1582
 
</element>
1583
 
 
1584
 
 
1585
 
 
1586
 
<element name="TGetVariantProp">
1587
 
<short>Callback type for the <link id="#rtl.TypInfo.OnGetVariantProp">OnGetVariantProp</link> callback
1588
 
event</short>.
1589
 
<descr>
1590
 
The callback function must return the variant property with name <var>PropName</var>
1591
 
of instance <var>Instance</var>.
1592
 
</descr>
1593
 
</element>
1594
 
 
1595
 
 
1596
 
<element name="TSetPropValue">
1597
 
<short>Callback type for the <link id="#rtl.TypInfo.OnSetPropValue">OnSetPropValue</link> callback
1598
 
event</short>.
1599
 
<descr>
1600
 
The callback function must set the property with name <var>PropName</var>
1601
 
of instance <var>Instance</var> to <var>Value</var>.
1602
 
</descr>
1603
 
</element>
1604
 
 
1605
 
 
1606
 
<element name="TSetVariantProp">
1607
 
<short>Callback type for the <link id="#rtl.TypInfo.OnSetVariantProp">OnSetVariantProp</link> callback
1608
 
event</short>.
1609
 
<descr>
1610
 
The callback function must set the variant property with name <var>PropName</var>
1611
 
of instance to <var>Value</var>.
1612
 
</descr>
1613
 
</element>
1614
 
 
1615
 
 
1616
 
 
1617
 
</module>
1618
 
</package>
1619
 
</fpdoc-descriptions>