1 {
2 This file is part of the Free Pascal Class Library SDO Implementation
3 Copyright (c) 2012 by Inoussa OUEDRAOGO
4 Free Pascal development team
5
6 This unit implements basic SDO Field definitions
7
8 See the file COPYING.FPC, included in this distribution,
9 for details about the copyright.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
15 **********************************************************************}
16 {$INCLUDE sdo_global.inc}
17 unit sdo_field_imp;
18
19 interface
20 uses SysUtils, Classes,
21 sdo_types, sdo, sdo_type;
22
23 const
24 BIT_ORDER_SET = 1;
25 BIT_ORDER_NULL = 2;
26 BIT_ORDER_BUFFER = 3;
27
28 type
29
30 ISDOField = interface
31 ['{BD6E436E-0274-4B55-8346-593BA9FD5F4F}']
getVariantnull32 function getVariant(
33 const ABuffer : TSDOFieldBuffer;
34 const AOffset : PtrUInt
35 ) : TSDOVariant;
36 procedure setVariant(
37 const ABuffer : TSDOFieldBuffer;
38 const AOffset : PtrUInt;
39 const AValue : TSDOVariant
40 );
41
getBooleannull42 function getBoolean(
43 const ABuffer : TSDOFieldBuffer;
44 const AOffset : PtrUInt
45 ) : TSDOBoolean;
46 procedure setBoolean(
47 const ABuffer : TSDOFieldBuffer;
48 const AOffset : PtrUInt;
49 const AValue : TSDOBoolean
50 );
51
getBytenull52 function getByte(
53 const ABuffer : TSDOFieldBuffer;
54 const AOffset : PtrUInt
55 ) : TSDOByte;
56 procedure setByte(
57 const ABuffer : TSDOFieldBuffer;
58 const AOffset : PtrUInt;
59 const AValue : TSDOByte
60 );
61
62 {$IFDEF HAS_SDO_BYTES}
getBytesnull63 function getBytes(
64 const ABuffer : TSDOFieldBuffer;
65 const AOffset : PtrUInt
66 ) : TSDOBytes;
67 procedure setBytes(
68 const ABuffer : TSDOFieldBuffer;
69 const AOffset : PtrUInt;
70 AValue : TSDOBytes
71 );
72 {$ENDIF HAS_SDO_BYTES}
73
getCharacternull74 function getCharacter(
75 const ABuffer : TSDOFieldBuffer;
76 const AOffset : PtrUInt
77 ) : TSDOChar;
78 procedure setCharacter(
79 const ABuffer : TSDOFieldBuffer;
80 const AOffset : PtrUInt;
81 const AValue : TSDOChar
82 );
83
84 {$IFDEF HAS_SDO_CURRENCY}
getCurrencynull85 function getCurrency(
86 const ABuffer : TSDOFieldBuffer;
87 const AOffset : PtrUInt
88 ) : TSDOCurrency;
89 procedure setCurrency(
90 const ABuffer : TSDOFieldBuffer;
91 const AOffset : PtrUInt;
92 const AValue : TSDOCurrency
93 );
94 {$ENDIF HAS_SDO_CURRENCY}
95
getDatenull96 function getDate(
97 const ABuffer : TSDOFieldBuffer;
98 const AOffset : PtrUInt
99 ) : TSDODate;
100 procedure setDate(
101 const ABuffer : TSDOFieldBuffer;
102 const AOffset : PtrUInt;
103 const AValue : TSDODate
104 );
105
106 {$IFDEF HAS_SDO_DOUBLE}
getDoublenull107 function getDouble(
108 const ABuffer : TSDOFieldBuffer;
109 const AOffset : PtrUInt
110 ) : TSDODouble;
111 procedure setDouble(
112 const ABuffer : TSDOFieldBuffer;
113 const AOffset : PtrUInt;
114 const AValue : TSDODouble
115 );
116 {$ENDIF HAS_SDO_DOUBLE}
117
118 {$IFDEF HAS_SDO_FLOAT}
getFloatnull119 function getFloat(
120 const ABuffer : TSDOFieldBuffer;
121 const AOffset : PtrUInt
122 ) : TSDOFloat;
123 procedure setFloat(
124 const ABuffer : TSDOFieldBuffer;
125 const AOffset : PtrUInt;
126 const AValue : TSDOFloat
127 );
128 {$ENDIF HAS_SDO_FLOAT}
129
getIntegernull130 function getInteger(
131 const ABuffer : TSDOFieldBuffer;
132 const AOffset : PtrUInt
133 ) : TSDOInteger;
134 procedure setInteger(
135 const ABuffer : TSDOFieldBuffer;
136 const AOffset : PtrUInt;
137 const AValue : TSDOInteger
138 );
139
getLongnull140 function getLong(
141 const ABuffer : TSDOFieldBuffer;
142 const AOffset : PtrUInt
143 ) : TSDOLong;
144 procedure setLong(
145 const ABuffer : TSDOFieldBuffer;
146 const AOffset : PtrUInt;
147 const AValue : TSDOLong
148 );
149
getShortnull150 function getShort(
151 const ABuffer : TSDOFieldBuffer;
152 const AOffset : PtrUInt
153 ) : TSDOShort;
154 procedure setShort(
155 const ABuffer : TSDOFieldBuffer;
156 const AOffset : PtrUInt;
157 const AValue : TSDOShort
158 );
159
getStringnull160 function getString(
161 const ABuffer : TSDOFieldBuffer;
162 const AOffset : PtrUInt
163 ) : TSDOString;
164 procedure setString(
165 const ABuffer : TSDOFieldBuffer;
166 const AOffset : PtrUInt;
167 const AValue : TSDOString
168 );
169
getDataObjectnull170 function getDataObject(
171 const ABuffer : TSDOFieldBuffer;
172 const AOffset : PtrUInt
173 ) : ISDODataObject;
174 procedure setDataObject(
175 const ABuffer : TSDOFieldBuffer;
176 const AOffset : PtrUInt;
177 const AValue : ISDODataObject
178 );
179
getChangeSummarynull180 function getChangeSummary(
181 const ABuffer : TSDOFieldBuffer;
182 const AOffset : PtrUInt
183 ) : ISDOChangeSummary;
184 procedure setChangeSummary(
185 const ABuffer : TSDOFieldBuffer;
186 const AOffset : PtrUInt;
187 const AValue : ISDOChangeSummary
188 );
189
isSetnull190 function isSet(
191 const ABuffer : TSDOFieldBuffer;
192 const AOffset : PtrUInt
193 ) : Boolean;
194 procedure unset(
195 const ABuffer : TSDOFieldBuffer;
196 const AOffset : PtrUInt
197 );
isNullnull198 function isNull(
199 const ABuffer : TSDOFieldBuffer;
200 const AOffset : PtrUInt
201 ) : Boolean;
202 procedure setNull(
203 const ABuffer : TSDOFieldBuffer;
204 const AOffset : PtrUInt
205 );
206 end;
207
208 TSDOBaseField = class(TInterfacedObject,IInterface,ISDOField)
209 protected
getVariantnull210 function getVariant(
211 const ABuffer : TSDOFieldBuffer;
212 const AOffset : PtrUInt
213 ) : TSDOVariant; virtual;
214 procedure setVariant(
215 const ABuffer : TSDOFieldBuffer;
216 const AOffset : PtrUInt;
217 const AValue : TSDOVariant
218 ); virtual;
219
getBooleannull220 function getBoolean(
221 const ABuffer : TSDOFieldBuffer;
222 const AOffset : PtrUInt
223 ) : TSDOBoolean; virtual;
224 procedure setBoolean(
225 const ABuffer : TSDOFieldBuffer;
226 const AOffset : PtrUInt;
227 const AValue : TSDOBoolean
228 ); virtual;
229
getBytenull230 function getByte(
231 const ABuffer : TSDOFieldBuffer;
232 const AOffset : PtrUInt
233 ) : TSDOByte; virtual;
234 procedure setByte(
235 const ABuffer : TSDOFieldBuffer;
236 const AOffset : PtrUInt;
237 const AValue : TSDOByte
238 ); virtual;
239
240 {$IFDEF HAS_SDO_BYTES}
getBytesnull241 function getBytes(
242 const ABuffer : TSDOFieldBuffer;
243 const AOffset : PtrUInt
244 ) : TSDOBytes; virtual;
245 procedure setBytes(
246 const ABuffer : TSDOFieldBuffer;
247 const AOffset : PtrUInt;
248 AValue : TSDOBytes
249 ); virtual;
250 {$ENDIF HAS_SDO_BYTES}
251
getCharacternull252 function getCharacter(
253 const ABuffer : TSDOFieldBuffer;
254 const AOffset : PtrUInt
255 ) : TSDOChar; virtual;
256 procedure setCharacter(
257 const ABuffer : TSDOFieldBuffer;
258 const AOffset : PtrUInt;
259 const AValue : TSDOChar
260 ); virtual;
261
262 {$IFDEF HAS_SDO_CURRENCY}
getCurrencynull263 function getCurrency(
264 const ABuffer : TSDOFieldBuffer;
265 const AOffset : PtrUInt
266 ) : TSDOCurrency; virtual;
267 procedure setCurrency(
268 const ABuffer : TSDOFieldBuffer;
269 const AOffset : PtrUInt;
270 const AValue : TSDOCurrency
271 ); virtual;
272 {$ENDIF HAS_SDO_CURRENCY}
273
getDatenull274 function getDate(
275 const ABuffer : TSDOFieldBuffer;
276 const AOffset : PtrUInt
277 ) : TSDODate;virtual;
278 procedure setDate(
279 const ABuffer : TSDOFieldBuffer;
280 const AOffset : PtrUInt;
281 const AValue : TSDODate
282 ); virtual;
283
284 {$IFDEF HAS_SDO_DOUBLE}
getDoublenull285 function getDouble(
286 const ABuffer : TSDOFieldBuffer;
287 const AOffset : PtrUInt
288 ) : TSDODouble; virtual;
289 procedure setDouble(
290 const ABuffer : TSDOFieldBuffer;
291 const AOffset : PtrUInt;
292 const AValue : TSDODouble
293 ); virtual;
294 {$ENDIF HAS_SDO_DOUBLE}
295
296 {$IFDEF HAS_SDO_FLOAT}
getFloatnull297 function getFloat(
298 const ABuffer : TSDOFieldBuffer;
299 const AOffset : PtrUInt
300 ) : TSDOFloat; virtual;
301 procedure setFloat(
302 const ABuffer : TSDOFieldBuffer;
303 const AOffset : PtrUInt;
304 const AValue : TSDOFloat
305 ); virtual;
306 {$ENDIF HAS_SDO_FLOAT}
307
getIntegernull308 function getInteger(
309 const ABuffer : TSDOFieldBuffer;
310 const AOffset : PtrUInt
311 ) : TSDOInteger; virtual;
312 procedure setInteger(
313 const ABuffer : TSDOFieldBuffer;
314 const AOffset : PtrUInt;
315 const AValue : TSDOInteger
316 ); virtual;
317
getLongnull318 function getLong(
319 const ABuffer : TSDOFieldBuffer;
320 const AOffset : PtrUInt
321 ) : TSDOLong; virtual;
322 procedure setLong(
323 const ABuffer : TSDOFieldBuffer;
324 const AOffset : PtrUInt;
325 const AValue : TSDOLong
326 ); virtual;
327
getShortnull328 function getShort(
329 const ABuffer : TSDOFieldBuffer;
330 const AOffset : PtrUInt
331 ) : TSDOShort; virtual;
332 procedure setShort(
333 const ABuffer : TSDOFieldBuffer;
334 const AOffset : PtrUInt;
335 const AValue : TSDOShort
336 ); virtual;
337
getStringnull338 function getString(
339 const ABuffer : TSDOFieldBuffer;
340 const AOffset : PtrUInt
341 ) : TSDOString; virtual;
342 procedure setString(
343 const ABuffer : TSDOFieldBuffer;
344 const AOffset : PtrUInt;
345 const AValue : TSDOString
346 ); virtual;
347
getDataObjectnull348 function getDataObject(
349 const ABuffer : TSDOFieldBuffer;
350 const AOffset : PtrUInt
351 ) : ISDODataObject; virtual;
352 procedure setDataObject(
353 const ABuffer : TSDOFieldBuffer;
354 const AOffset : PtrUInt;
355 const AValue : ISDODataObject
356 ); virtual;
357
getChangeSummarynull358 function getChangeSummary(
359 const ABuffer : TSDOFieldBuffer;
360 const AOffset : PtrUInt
361 ) : ISDOChangeSummary; virtual;
362 procedure setChangeSummary(
363 const ABuffer : TSDOFieldBuffer;
364 const AOffset : PtrUInt;
365 const AValue : ISDOChangeSummary
366 ); virtual;
367
368
isSetnull369 function isSet(
370 const ABuffer : TSDOFieldBuffer;
371 const AOffset : PtrUInt
372 ) : Boolean;virtual;
373 procedure unset(
374 const ABuffer : TSDOFieldBuffer;
375 const AOffset : PtrUInt
376 );virtual;
isNullnull377 function isNull(
378 const ABuffer : TSDOFieldBuffer;
379 const AOffset : PtrUInt
380 ) : Boolean;virtual;
381 procedure setNull(
382 const ABuffer : TSDOFieldBuffer;
383 const AOffset : PtrUInt
384 );virtual;
385 end;
386
387 TSDOBooleanField = class(TSDOBaseField,IInterface,ISDOField)
388 protected
getVariantnull389 function getVariant(
390 const ABuffer : TSDOFieldBuffer;
391 const AOffset : PtrUInt
392 ) : TSDOVariant; override;
393 procedure setVariant(
394 const ABuffer : TSDOFieldBuffer;
395 const AOffset : PtrUInt;
396 const AValue : TSDOVariant
397 ); override;
398
getBooleannull399 function getBoolean(
400 const ABuffer : TSDOFieldBuffer;
401 const AOffset : PtrUInt
402 ) : TSDOBoolean;override;
403 procedure setBoolean(
404 const ABuffer : TSDOFieldBuffer;
405 const AOffset : PtrUInt;
406 const AValue : TSDOBoolean
407 );override;
408
getBytenull409 function getByte(
410 const ABuffer : TSDOFieldBuffer;
411 const AOffset : PtrUInt
412 ) : TSDOByte;override;
413 procedure setByte(
414 const ABuffer : TSDOFieldBuffer;
415 const AOffset : PtrUInt;
416 const AValue : TSDOByte
417 );override;
418
getCharacternull419 function getCharacter(
420 const ABuffer : TSDOFieldBuffer;
421 const AOffset : PtrUInt
422 ) : TSDOChar; override;
423 procedure setCharacter(
424 const ABuffer : TSDOFieldBuffer;
425 const AOffset : PtrUInt;
426 const AValue : TSDOChar
427 ); override;
428
getIntegernull429 function getInteger(
430 const ABuffer : TSDOFieldBuffer;
431 const AOffset : PtrUInt
432 ) : TSDOInteger;override;
433 procedure setInteger(
434 const ABuffer : TSDOFieldBuffer;
435 const AOffset : PtrUInt;
436 const AValue : TSDOInteger
437 );override;
438
getLongnull439 function getLong(
440 const ABuffer : TSDOFieldBuffer;
441 const AOffset : PtrUInt
442 ) : TSDOLong; override;
443 procedure setLong(
444 const ABuffer : TSDOFieldBuffer;
445 const AOffset : PtrUInt;
446 const AValue : TSDOLong
447 ); override;
448
getShortnull449 function getShort(
450 const ABuffer : TSDOFieldBuffer;
451 const AOffset : PtrUInt
452 ) : TSDOShort; override;
453 procedure setShort(
454 const ABuffer : TSDOFieldBuffer;
455 const AOffset : PtrUInt;
456 const AValue : TSDOShort
457 ); override;
458
getStringnull459 function getString(
460 const ABuffer : TSDOFieldBuffer;
461 const AOffset : PtrUInt
462 ) : TSDOString;override;
463 procedure setString(
464 const ABuffer : TSDOFieldBuffer;
465 const AOffset : PtrUInt;
466 const AValue : TSDOString
467 );override;
468
469 end;
470
471 TSDOIntegerField = class(TSDOBaseField,IInterface,ISDOField)
472 protected
getVariantnull473 function getVariant(
474 const ABuffer : TSDOFieldBuffer;
475 const AOffset : PtrUInt
476 ) : TSDOVariant; override;
477 procedure setVariant(
478 const ABuffer : TSDOFieldBuffer;
479 const AOffset : PtrUInt;
480 const AValue : TSDOVariant
481 ); override;
482
getBooleannull483 function getBoolean(
484 const ABuffer : TSDOFieldBuffer;
485 const AOffset : PtrUInt
486 ) : TSDOBoolean;override;
487 procedure setBoolean(
488 const ABuffer : TSDOFieldBuffer;
489 const AOffset : PtrUInt;
490 const AValue : TSDOBoolean
491 );override;
492
getBytenull493 function getByte(
494 const ABuffer : TSDOFieldBuffer;
495 const AOffset : PtrUInt
496 ) : TSDOByte;override;
497 procedure setByte(
498 const ABuffer : TSDOFieldBuffer;
499 const AOffset : PtrUInt;
500 const AValue : TSDOByte
501 );override;
502
getCharacternull503 function getCharacter(
504 const ABuffer : TSDOFieldBuffer;
505 const AOffset : PtrUInt
506 ) : TSDOChar; override;
507 procedure setCharacter(
508 const ABuffer : TSDOFieldBuffer;
509 const AOffset : PtrUInt;
510 const AValue : TSDOChar
511 ); override;
512
getIntegernull513 function getInteger(
514 const ABuffer : TSDOFieldBuffer;
515 const AOffset : PtrUInt
516 ) : TSDOInteger;override;
517 procedure setInteger(
518 const ABuffer : TSDOFieldBuffer;
519 const AOffset : PtrUInt;
520 const AValue : TSDOInteger
521 );override;
522
getLongnull523 function getLong(
524 const ABuffer : TSDOFieldBuffer;
525 const AOffset : PtrUInt
526 ) : TSDOLong; override;
527 procedure setLong(
528 const ABuffer : TSDOFieldBuffer;
529 const AOffset : PtrUInt;
530 const AValue : TSDOLong
531 ); override;
532
getShortnull533 function getShort(
534 const ABuffer : TSDOFieldBuffer;
535 const AOffset : PtrUInt
536 ) : TSDOShort; override;
537 procedure setShort(
538 const ABuffer : TSDOFieldBuffer;
539 const AOffset : PtrUInt;
540 const AValue : TSDOShort
541 ); override;
542
getStringnull543 function getString(
544 const ABuffer : TSDOFieldBuffer;
545 const AOffset : PtrUInt
546 ) : TSDOString;override;
547 procedure setString(
548 const ABuffer : TSDOFieldBuffer;
549 const AOffset : PtrUInt;
550 const AValue : TSDOString
551 );override;
552
553 end;
554
555 TSDOBaseStringField = class(TSDOBaseField,IInterface,ISDOField)
556 private
557 procedure FreeBuffer(const ABuffer : TSDOFieldBuffer);
558 protected
getVariantnull559 function getVariant(
560 const ABuffer : TSDOFieldBuffer;
561 const AOffset : PtrUInt
562 ) : TSDOVariant; override;
563 procedure setVariant(
564 const ABuffer : TSDOFieldBuffer;
565 const AOffset : PtrUInt;
566 const AValue : TSDOVariant
567 ); override;
568
getBooleannull569 function getBoolean(
570 const ABuffer : TSDOFieldBuffer;
571 const AOffset : PtrUInt
572 ) : TSDOBoolean;override;
573 procedure setBoolean(
574 const ABuffer : TSDOFieldBuffer;
575 const AOffset : PtrUInt;
576 const AValue : TSDOBoolean
577 );override;
578
getBytenull579 function getByte(
580 const ABuffer : TSDOFieldBuffer;
581 const AOffset : PtrUInt
582 ) : TSDOByte;override;
583 procedure setByte(
584 const ABuffer : TSDOFieldBuffer;
585 const AOffset : PtrUInt;
586 const AValue : TSDOByte
587 );override;
588
getCharacternull589 function getCharacter(
590 const ABuffer : TSDOFieldBuffer;
591 const AOffset : PtrUInt
592 ) : TSDOChar; override;
593 procedure setCharacter(
594 const ABuffer : TSDOFieldBuffer;
595 const AOffset : PtrUInt;
596 const AValue : TSDOChar
597 ); override;
598
getIntegernull599 function getInteger(
600 const ABuffer : TSDOFieldBuffer;
601 const AOffset : PtrUInt
602 ) : TSDOInteger;override;
603 procedure setInteger(
604 const ABuffer : TSDOFieldBuffer;
605 const AOffset : PtrUInt;
606 const AValue : TSDOInteger
607 );override;
608
getLongnull609 function getLong(
610 const ABuffer : TSDOFieldBuffer;
611 const AOffset : PtrUInt
612 ) : TSDOLong; override;
613 procedure setLong(
614 const ABuffer : TSDOFieldBuffer;
615 const AOffset : PtrUInt;
616 const AValue : TSDOLong
617 ); override;
618
getShortnull619 function getShort(
620 const ABuffer : TSDOFieldBuffer;
621 const AOffset : PtrUInt
622 ) : TSDOShort; override;
623 procedure setShort(
624 const ABuffer : TSDOFieldBuffer;
625 const AOffset : PtrUInt;
626 const AValue : TSDOShort
627 ); override;
628
getStringnull629 function getString(
630 const ABuffer : TSDOFieldBuffer;
631 const AOffset : PtrUInt
632 ) : TSDOString;override;
633 procedure setString(
634 const ABuffer : TSDOFieldBuffer;
635 const AOffset : PtrUInt;
636 const AValue : TSDOString
637 );override;
638
639 procedure unset(
640 const ABuffer : TSDOFieldBuffer;
641 const AOffset : PtrUInt
642 );override;
643 procedure setNull(
644 const ABuffer : TSDOFieldBuffer;
645 const AOffset : PtrUInt
646 );override;
647 end;
648
649 TSDOStringField = class(TSDOBaseStringField)
650 end;
651
652 TSDOObjectField = class(TSDOBaseField,IInterface,ISDOField)
653 private
654 procedure FreeBuffer(const ABuffer : TSDOFieldBuffer);
655 protected
getDataObjectnull656 function getDataObject(
657 const ABuffer : TSDOFieldBuffer;
658 const AOffset : PtrUInt
659 ) : ISDODataObject;override;
660 procedure setDataObject(
661 const ABuffer : TSDOFieldBuffer;
662 const AOffset : PtrUInt;
663 const AValue : ISDODataObject
664 );override;
665 procedure unset(
666 const ABuffer : TSDOFieldBuffer;
667 const AOffset : PtrUInt
668 );override;
669 procedure setNull(
670 const ABuffer : TSDOFieldBuffer;
671 const AOffset : PtrUInt
672 );override;
getVariantnull673 function getVariant(
674 const ABuffer : TSDOFieldBuffer;
675 const AOffset : PtrUInt
676 ) : TSDOVariant; override;
677 procedure setVariant(
678 const ABuffer : TSDOFieldBuffer;
679 const AOffset : PtrUInt;
680 const AValue : TSDOVariant
681 ); override;
682 end;
683
684 TSDOChangeSummaryField = class(TSDOBaseField,IInterface,ISDOField)
685 private
686 procedure FreeBuffer(const ABuffer : TSDOFieldBuffer);
687 protected
getChangeSummarynull688 function getChangeSummary(
689 const ABuffer : TSDOFieldBuffer;
690 const AOffset : PtrUInt
691 ) : ISDOChangeSummary;override;
692 procedure setChangeSummary(
693 const ABuffer : TSDOFieldBuffer;
694 const AOffset : PtrUInt;
695 const AValue : ISDOChangeSummary
696 );override;
697 procedure unset(
698 const ABuffer : TSDOFieldBuffer;
699 const AOffset : PtrUInt
700 );override;
701 procedure setNull(
702 const ABuffer : TSDOFieldBuffer;
703 const AOffset : PtrUInt
704 );override;
705 end;
706
707 TSDOByteField = class(TSDOBaseField,IInterface,ISDOField)
708 protected
getVariantnull709 function getVariant(
710 const ABuffer : TSDOFieldBuffer;
711 const AOffset : PtrUInt
712 ) : TSDOVariant; override;
713 procedure setVariant(
714 const ABuffer : TSDOFieldBuffer;
715 const AOffset : PtrUInt;
716 const AValue : TSDOVariant
717 ); override;
718
getBooleannull719 function getBoolean(
720 const ABuffer : TSDOFieldBuffer;
721 const AOffset : PtrUInt
722 ) : TSDOBoolean;override;
723 procedure setBoolean(
724 const ABuffer : TSDOFieldBuffer;
725 const AOffset : PtrUInt;
726 const AValue : TSDOBoolean
727 );override;
728
getBytenull729 function getByte(
730 const ABuffer : TSDOFieldBuffer;
731 const AOffset : PtrUInt
732 ) : TSDOByte; override;
733 procedure setByte(
734 const ABuffer : TSDOFieldBuffer;
735 const AOffset : PtrUInt;
736 const AValue : TSDOByte
737 );override;
738
getCharacternull739 function getCharacter(
740 const ABuffer : TSDOFieldBuffer;
741 const AOffset : PtrUInt
742 ) : TSDOChar; override;
743 procedure setCharacter(
744 const ABuffer : TSDOFieldBuffer;
745 const AOffset : PtrUInt;
746 const AValue : TSDOChar
747 ); override;
748
getIntegernull749 function getInteger(
750 const ABuffer : TSDOFieldBuffer;
751 const AOffset : PtrUInt
752 ) : TSDOInteger;override;
753 procedure setInteger(
754 const ABuffer : TSDOFieldBuffer;
755 const AOffset : PtrUInt;
756 const AValue : TSDOInteger
757 );override;
758
getLongnull759 function getLong(
760 const ABuffer : TSDOFieldBuffer;
761 const AOffset : PtrUInt
762 ) : TSDOLong; override;
763 procedure setLong(
764 const ABuffer : TSDOFieldBuffer;
765 const AOffset : PtrUInt;
766 const AValue : TSDOLong
767 ); override;
768
getShortnull769 function getShort(
770 const ABuffer : TSDOFieldBuffer;
771 const AOffset : PtrUInt
772 ) : TSDOShort; override;
773 procedure setShort(
774 const ABuffer : TSDOFieldBuffer;
775 const AOffset : PtrUInt;
776 const AValue : TSDOShort
777 ); override;
778
getStringnull779 function getString(
780 const ABuffer : TSDOFieldBuffer;
781 const AOffset : PtrUInt
782 ) : TSDOString;override;
783 procedure setString(
784 const ABuffer : TSDOFieldBuffer;
785 const AOffset : PtrUInt;
786 const AValue : TSDOString
787 );override;
788
789 end;
790
791 {$IFDEF HAS_SDO_BYTES}
792 TSDOBytesField = class(TSDOBaseField,IInterface,ISDOField)
793 private
794 procedure FreeBuffer(const ABuffer : TSDOFieldBuffer);
795 protected
getVariantnull796 function getVariant(
797 const ABuffer : TSDOFieldBuffer;
798 const AOffset : PtrUInt
799 ) : TSDOVariant; override;
800 procedure setVariant(
801 const ABuffer : TSDOFieldBuffer;
802 const AOffset : PtrUInt;
803 const AValue : TSDOVariant
804 ); override;
805
getBytesnull806 function getBytes(
807 const ABuffer : TSDOFieldBuffer;
808 const AOffset : PtrUInt
809 ) : TSDOBytes; override;
810 procedure setBytes(
811 const ABuffer : TSDOFieldBuffer;
812 const AOffset : PtrUInt;
813 AValue : TSDOBytes
814 );override;
815
getStringnull816 function getString(
817 const ABuffer : TSDOFieldBuffer;
818 const AOffset : PtrUInt
819 ) : TSDOString;override;
820 procedure setString(
821 const ABuffer : TSDOFieldBuffer;
822 const AOffset : PtrUInt;
823 const AValue : TSDOString
824 );override;
825
826 procedure setNull(
827 const ABuffer : TSDOFieldBuffer;
828 const AOffset : PtrUInt
829 );override;
830 end;
831 {$ENDIF HAS_SDO_BYTES}
832
833 {$IFDEF HAS_SDO_CHAR}
834 TSDOCharField = class(TSDOBaseField,IInterface,ISDOField)
835 protected
getVariantnull836 function getVariant(
837 const ABuffer : TSDOFieldBuffer;
838 const AOffset : PtrUInt
839 ) : TSDOVariant; override;
840 procedure setVariant(
841 const ABuffer : TSDOFieldBuffer;
842 const AOffset : PtrUInt;
843 const AValue : TSDOVariant
844 ); override;
845
getBooleannull846 function getBoolean(
847 const ABuffer : TSDOFieldBuffer;
848 const AOffset : PtrUInt
849 ) : TSDOBoolean;override;
850 procedure setBoolean(
851 const ABuffer : TSDOFieldBuffer;
852 const AOffset : PtrUInt;
853 const AValue : TSDOBoolean
854 );override;
855
getBytenull856 function getByte(
857 const ABuffer : TSDOFieldBuffer;
858 const AOffset : PtrUInt
859 ) : TSDOByte; override;
860 procedure setByte(
861 const ABuffer : TSDOFieldBuffer;
862 const AOffset : PtrUInt;
863 const AValue : TSDOByte
864 );override;
865
getCharacternull866 function getCharacter(
867 const ABuffer : TSDOFieldBuffer;
868 const AOffset : PtrUInt
869 ) : TSDOChar; override;
870 procedure setCharacter(
871 const ABuffer : TSDOFieldBuffer;
872 const AOffset : PtrUInt;
873 const AValue : TSDOChar
874 ); override;
875
getIntegernull876 function getInteger(
877 const ABuffer : TSDOFieldBuffer;
878 const AOffset : PtrUInt
879 ) : TSDOInteger;override;
880 procedure setInteger(
881 const ABuffer : TSDOFieldBuffer;
882 const AOffset : PtrUInt;
883 const AValue : TSDOInteger
884 );override;
885
getLongnull886 function getLong(
887 const ABuffer : TSDOFieldBuffer;
888 const AOffset : PtrUInt
889 ) : TSDOLong; override;
890 procedure setLong(
891 const ABuffer : TSDOFieldBuffer;
892 const AOffset : PtrUInt;
893 const AValue : TSDOLong
894 ); override;
895
getShortnull896 function getShort(
897 const ABuffer : TSDOFieldBuffer;
898 const AOffset : PtrUInt
899 ) : TSDOShort; override;
900 procedure setShort(
901 const ABuffer : TSDOFieldBuffer;
902 const AOffset : PtrUInt;
903 const AValue : TSDOShort
904 ); override;
905
getStringnull906 function getString(
907 const ABuffer : TSDOFieldBuffer;
908 const AOffset : PtrUInt
909 ) : TSDOString;override;
910 procedure setString(
911 const ABuffer : TSDOFieldBuffer;
912 const AOffset : PtrUInt;
913 const AValue : TSDOString
914 );override;
915
916 end;
917 {$ENDIF HAS_SDO_CHAR}
918
919 {$IFDEF HAS_SDO_CURRENCY}
920 TSDOCurrencyField = class(TSDOBaseField,IInterface,ISDOField)
921 protected
getVariantnull922 function getVariant(
923 const ABuffer : TSDOFieldBuffer;
924 const AOffset : PtrUInt
925 ) : TSDOVariant; override;
926 procedure setVariant(
927 const ABuffer : TSDOFieldBuffer;
928 const AOffset : PtrUInt;
929 const AValue : TSDOVariant
930 ); override;
931
getStringnull932 function getString(
933 const ABuffer : TSDOFieldBuffer;
934 const AOffset : PtrUInt
935 ) : TSDOString;override;
936 procedure setString(
937 const ABuffer : TSDOFieldBuffer;
938 const AOffset : PtrUInt;
939 const AValue : TSDOString
940 );override;
941
getCurrencynull942 function getCurrency(
943 const ABuffer : TSDOFieldBuffer;
944 const AOffset : PtrUInt
945 ) : TSDOCurrency; override;
946 procedure setCurrency(
947 const ABuffer : TSDOFieldBuffer;
948 const AOffset : PtrUInt;
949 const AValue : TSDOCurrency
950 ); override;
951 {$IFDEF HAS_SDO_DOUBLE}
getDoublenull952 function getDouble(
953 const ABuffer : TSDOFieldBuffer;
954 const AOffset : PtrUInt
955 ) : TSDODouble; override;
956 procedure setDouble(
957 const ABuffer : TSDOFieldBuffer;
958 const AOffset : PtrUInt;
959 const AValue : TSDODouble
960 ); override;
961 {$ENDIF HAS_SDO_DOUBLE}
962
963 {$IFDEF HAS_SDO_FLOAT}
getFloatnull964 function getFloat(
965 const ABuffer : TSDOFieldBuffer;
966 const AOffset : PtrUInt
967 ) : TSDOFloat; override;
968 procedure setFloat(
969 const ABuffer : TSDOFieldBuffer;
970 const AOffset : PtrUInt;
971 const AValue : TSDOFloat
972 ); override;
973 {$ENDIF HAS_SDO_FLOAT}
974 end;
975 {$ENDIF HAS_SDO_CURRENCY}
976
977 TSDODateField = class(TSDOBaseField,IInterface,ISDOField)
978 protected
getVariantnull979 function getVariant(
980 const ABuffer : TSDOFieldBuffer;
981 const AOffset : PtrUInt
982 ) : TSDOVariant; override;
983 procedure setVariant(
984 const ABuffer : TSDOFieldBuffer;
985 const AOffset : PtrUInt;
986 const AValue : TSDOVariant
987 ); override;
988
getDatenull989 function getDate(
990 const ABuffer : TSDOFieldBuffer;
991 const AOffset : PtrUInt
992 ) : TSDODate; override;
993 procedure setDate(
994 const ABuffer : TSDOFieldBuffer;
995 const AOffset : PtrUInt;
996 const AValue : TSDODate
997 );override;
998
getStringnull999 function getString(
1000 const ABuffer : TSDOFieldBuffer;
1001 const AOffset : PtrUInt
1002 ) : TSDOString;override;
1003 procedure setString(
1004 const ABuffer : TSDOFieldBuffer;
1005 const AOffset : PtrUInt;
1006 const AValue : TSDOString
1007 );override;
1008 end;
1009
1010 {$IFDEF HAS_SDO_LONG}
1011 TSDOLongField = class(TSDOBaseField,IInterface,ISDOField)
1012 protected
getVariantnull1013 function getVariant(
1014 const ABuffer : TSDOFieldBuffer;
1015 const AOffset : PtrUInt
1016 ) : TSDOVariant; override;
1017 procedure setVariant(
1018 const ABuffer : TSDOFieldBuffer;
1019 const AOffset : PtrUInt;
1020 const AValue : TSDOVariant
1021 ); override;
1022
getBooleannull1023 function getBoolean(
1024 const ABuffer : TSDOFieldBuffer;
1025 const AOffset : PtrUInt
1026 ) : TSDOBoolean;override;
1027 procedure setBoolean(
1028 const ABuffer : TSDOFieldBuffer;
1029 const AOffset : PtrUInt;
1030 const AValue : TSDOBoolean
1031 );override;
1032
getBytenull1033 function getByte(
1034 const ABuffer : TSDOFieldBuffer;
1035 const AOffset : PtrUInt
1036 ) : TSDOByte; override;
1037 procedure setByte(
1038 const ABuffer : TSDOFieldBuffer;
1039 const AOffset : PtrUInt;
1040 const AValue : TSDOByte
1041 );override;
1042
getCharacternull1043 function getCharacter(
1044 const ABuffer : TSDOFieldBuffer;
1045 const AOffset : PtrUInt
1046 ) : TSDOChar; override;
1047 procedure setCharacter(
1048 const ABuffer : TSDOFieldBuffer;
1049 const AOffset : PtrUInt;
1050 const AValue : TSDOChar
1051 ); override;
1052
getIntegernull1053 function getInteger(
1054 const ABuffer : TSDOFieldBuffer;
1055 const AOffset : PtrUInt
1056 ) : TSDOInteger;override;
1057 procedure setInteger(
1058 const ABuffer : TSDOFieldBuffer;
1059 const AOffset : PtrUInt;
1060 const AValue : TSDOInteger
1061 );override;
1062
getLongnull1063 function getLong(
1064 const ABuffer : TSDOFieldBuffer;
1065 const AOffset : PtrUInt
1066 ) : TSDOLong; override;
1067 procedure setLong(
1068 const ABuffer : TSDOFieldBuffer;
1069 const AOffset : PtrUInt;
1070 const AValue : TSDOLong
1071 ); override;
1072
getShortnull1073 function getShort(
1074 const ABuffer : TSDOFieldBuffer;
1075 const AOffset : PtrUInt
1076 ) : TSDOShort; override;
1077 procedure setShort(
1078 const ABuffer : TSDOFieldBuffer;
1079 const AOffset : PtrUInt;
1080 const AValue : TSDOShort
1081 ); override;
1082
getStringnull1083 function getString(
1084 const ABuffer : TSDOFieldBuffer;
1085 const AOffset : PtrUInt
1086 ) : TSDOString;override;
1087 procedure setString(
1088 const ABuffer : TSDOFieldBuffer;
1089 const AOffset : PtrUInt;
1090 const AValue : TSDOString
1091 );override;
1092
1093 end;
1094 {$ENDIF HAS_SDO_LONG}
1095
1096 {$IFDEF HAS_SDO_SHORT}
1097 TSDOShortField = class(TSDOBaseField,IInterface,ISDOField)
1098 protected
getVariantnull1099 function getVariant(
1100 const ABuffer : TSDOFieldBuffer;
1101 const AOffset : PtrUInt
1102 ) : TSDOVariant; override;
1103 procedure setVariant(
1104 const ABuffer : TSDOFieldBuffer;
1105 const AOffset : PtrUInt;
1106 const AValue : TSDOVariant
1107 ); override;
1108
getBooleannull1109 function getBoolean(
1110 const ABuffer : TSDOFieldBuffer;
1111 const AOffset : PtrUInt
1112 ) : TSDOBoolean;override;
1113 procedure setBoolean(
1114 const ABuffer : TSDOFieldBuffer;
1115 const AOffset : PtrUInt;
1116 const AValue : TSDOBoolean
1117 );override;
1118
getBytenull1119 function getByte(
1120 const ABuffer : TSDOFieldBuffer;
1121 const AOffset : PtrUInt
1122 ) : TSDOByte; override;
1123 procedure setByte(
1124 const ABuffer : TSDOFieldBuffer;
1125 const AOffset : PtrUInt;
1126 const AValue : TSDOByte
1127 );override;
1128
getCharacternull1129 function getCharacter(
1130 const ABuffer : TSDOFieldBuffer;
1131 const AOffset : PtrUInt
1132 ) : TSDOChar; override;
1133 procedure setCharacter(
1134 const ABuffer : TSDOFieldBuffer;
1135 const AOffset : PtrUInt;
1136 const AValue : TSDOChar
1137 ); override;
1138
getIntegernull1139 function getInteger(
1140 const ABuffer : TSDOFieldBuffer;
1141 const AOffset : PtrUInt
1142 ) : TSDOInteger;override;
1143 procedure setInteger(
1144 const ABuffer : TSDOFieldBuffer;
1145 const AOffset : PtrUInt;
1146 const AValue : TSDOInteger
1147 );override;
1148
getLongnull1149 function getLong(
1150 const ABuffer : TSDOFieldBuffer;
1151 const AOffset : PtrUInt
1152 ) : TSDOLong; override;
1153 procedure setLong(
1154 const ABuffer : TSDOFieldBuffer;
1155 const AOffset : PtrUInt;
1156 const AValue : TSDOLong
1157 ); override;
1158
getShortnull1159 function getShort(
1160 const ABuffer : TSDOFieldBuffer;
1161 const AOffset : PtrUInt
1162 ) : TSDOShort; override;
1163 procedure setShort(
1164 const ABuffer : TSDOFieldBuffer;
1165 const AOffset : PtrUInt;
1166 const AValue : TSDOShort
1167 ); override;
1168
getStringnull1169 function getString(
1170 const ABuffer : TSDOFieldBuffer;
1171 const AOffset : PtrUInt
1172 ) : TSDOString;override;
1173 procedure setString(
1174 const ABuffer : TSDOFieldBuffer;
1175 const AOffset : PtrUInt;
1176 const AValue : TSDOString
1177 );override;
1178
1179 end;
1180 {$ENDIF HAS_SDO_SHORT}
1181
1182 {$IFDEF HAS_SDO_DOUBLE}
1183 TSDODoubleField = class(TSDOBaseField,IInterface,ISDOField)
1184 protected
getVariantnull1185 function getVariant(
1186 const ABuffer : TSDOFieldBuffer;
1187 const AOffset : PtrUInt
1188 ) : TSDOVariant; override;
1189 procedure setVariant(
1190 const ABuffer : TSDOFieldBuffer;
1191 const AOffset : PtrUInt;
1192 const AValue : TSDOVariant
1193 ); override;
1194
getStringnull1195 function getString(
1196 const ABuffer : TSDOFieldBuffer;
1197 const AOffset : PtrUInt
1198 ) : TSDOString;override;
1199 procedure setString(
1200 const ABuffer : TSDOFieldBuffer;
1201 const AOffset : PtrUInt;
1202 const AValue : TSDOString
1203 );override;
1204
getCurrencynull1205 function getCurrency(
1206 const ABuffer : TSDOFieldBuffer;
1207 const AOffset : PtrUInt
1208 ) : TSDOCurrency; override;
1209 procedure setCurrency(
1210 const ABuffer : TSDOFieldBuffer;
1211 const AOffset : PtrUInt;
1212 const AValue : TSDOCurrency
1213 ); override;
1214
getDoublenull1215 function getDouble(
1216 const ABuffer : TSDOFieldBuffer;
1217 const AOffset : PtrUInt
1218 ) : TSDODouble; override;
1219 procedure setDouble(
1220 const ABuffer : TSDOFieldBuffer;
1221 const AOffset : PtrUInt;
1222 const AValue : TSDODouble
1223 ); override;
1224
getFloatnull1225 function getFloat(
1226 const ABuffer : TSDOFieldBuffer;
1227 const AOffset : PtrUInt
1228 ) : TSDOFloat; override;
1229 procedure setFloat(
1230 const ABuffer : TSDOFieldBuffer;
1231 const AOffset : PtrUInt;
1232 const AValue : TSDOFloat
1233 ); override;
1234 end;
1235 {$ENDIF HAS_SDO_DOUBLE}
1236
1237 {$IFDEF HAS_SDO_FLOAT}
1238 TSDOFloatField = class(TSDOBaseField,IInterface,ISDOField)
1239 protected
getVariantnull1240 function getVariant(
1241 const ABuffer : TSDOFieldBuffer;
1242 const AOffset : PtrUInt
1243 ) : TSDOVariant; override;
1244 procedure setVariant(
1245 const ABuffer : TSDOFieldBuffer;
1246 const AOffset : PtrUInt;
1247 const AValue : TSDOVariant
1248 ); override;
1249
getStringnull1250 function getString(
1251 const ABuffer : TSDOFieldBuffer;
1252 const AOffset : PtrUInt
1253 ) : TSDOString;override;
1254 procedure setString(
1255 const ABuffer : TSDOFieldBuffer;
1256 const AOffset : PtrUInt;
1257 const AValue : TSDOString
1258 );override;
1259
getCurrencynull1260 function getCurrency(
1261 const ABuffer : TSDOFieldBuffer;
1262 const AOffset : PtrUInt
1263 ) : TSDOCurrency; override;
1264 procedure setCurrency(
1265 const ABuffer : TSDOFieldBuffer;
1266 const AOffset : PtrUInt;
1267 const AValue : TSDOCurrency
1268 ); override;
1269
getDoublenull1270 function getDouble(
1271 const ABuffer : TSDOFieldBuffer;
1272 const AOffset : PtrUInt
1273 ) : TSDODouble; override;
1274 procedure setDouble(
1275 const ABuffer : TSDOFieldBuffer;
1276 const AOffset : PtrUInt;
1277 const AValue : TSDODouble
1278 ); override;
1279
getFloatnull1280 function getFloat(
1281 const ABuffer : TSDOFieldBuffer;
1282 const AOffset : PtrUInt
1283 ) : TSDOFloat; override;
1284 procedure setFloat(
1285 const ABuffer : TSDOFieldBuffer;
1286 const AOffset : PtrUInt;
1287 const AValue : TSDOFloat
1288 ); override;
1289 end;
1290 {$ENDIF HAS_SDO_FLOAT}
1291
getFieldnull1292 function getField(const AKind : TSDOTypeKind) : ISDOField ;{$IFDEF USE_INLINE}inline;{$ENDIF}
1293
1294
1295 implementation
1296
1297 uses
1298 sdo_imp_utils, sdo_date_utils, Variants;
1299
1300 var
1301 FieldMAP : array[TSDOTypeKind] of ISDOField;
1302
getFieldnull1303 function getField(const AKind : TSDOTypeKind) : ISDOField ;
1304 begin
1305 Result := FieldMAP[AKind];
1306 end;
1307
1308 procedure PrepareMap();
1309 begin
1310 FieldMAP[BooleanType] := TSDOBooleanField.Create();
1311 FieldMAP[ByteType] := TSDOByteField.Create();
1312 {$IFDEF HAS_SDO_BYTES}
1313 FieldMAP[BytesType] := TSDOBytesField.Create();
1314 {$ENDIF HAS_SDO_BYTES}
1315 {$IFDEF HAS_SDO_CHAR}
1316 FieldMAP[CharacterType] := TSDOCharField.Create();
1317 {$ENDIF HAS_SDO_CHAR}
1318 {$IFDEF HAS_SDO_CURRENCY}
1319 FieldMAP[CurrencyType] := TSDOCurrencyField.Create();
1320 {$ENDIF HAS_SDO_CURRENCY}
1321 {$IFDEF HAS_SDO_DOUBLE}
1322 FieldMAP[DoubleType] := TSDODoubleField.Create();
1323 {$ENDIF HAS_SDO_DOUBLE}
1324 {$IFDEF HAS_SDO_FLOAT}
1325 FieldMAP[FloatType] := TSDOFloatField.Create();
1326 {$ENDIF HAS_SDO_FLOAT}
1327 FieldMAP[DateTimeType] := TSDODateField.Create();
1328 FieldMAP[IntegerType] := TSDOIntegerField.Create();
1329 {$IFDEF HAS_SDO_LONG}
1330 FieldMAP[LongType] := TSDOLongField.Create();
1331 {$ENDIF HAS_SDO_LONG}
1332 {$IFDEF HAS_SDO_SHORT}
1333 FieldMAP[ShortType] := TSDOShortField.Create();
1334 {$ENDIF HAS_SDO_ShORT}
1335 FieldMAP[StringType] := TSDOStringField.Create();
1336
1337 FieldMAP[ObjectType] := TSDOObjectField.Create();
1338 FieldMAP[ChangeSummaryType] := TSDOChangeSummaryField.Create();
1339 end;
1340
1341 procedure UnprepareMap();
1342 var
1343 e : TSDOTypeKind;
1344 begin
1345 for e := Low(TSDOTypeKind) to High(TSDOTypeKind) do begin
1346 FieldMAP[e] := nil;
1347 end;
1348 end;
1349
1350 { TSDOBaseField }
1351
1352 {$WARNINGS OFF}
TSDOBaseField.getBooleannull1353 function TSDOBaseField.getBoolean(
1354 const ABuffer: TSDOFieldBuffer;
1355 const AOffset: PtrUInt
1356 ) : TSDOBoolean;
1357 begin
1358 raise ESDOInvalidConversionException.Create(ClassName);
1359 end;
1360 {$WARNINGS ON}
1361
1362 {$WARNINGS OFF}
getBytenull1363 function TSDOBaseField.getByte(
1364 const ABuffer: TSDOFieldBuffer;
1365 const AOffset: PtrUInt
1366 ) : TSDOByte;
1367 begin
1368 raise ESDOInvalidConversionException.Create(ClassName);
1369 end;
1370 {$WARNINGS ON}
1371
1372 {$WARNINGS OFF}
TSDOBaseField.getBytesnull1373 function TSDOBaseField.getBytes(
1374 const ABuffer: TSDOFieldBuffer;
1375 const AOffset: PtrUInt
1376 ) : TSDOBytes;
1377 begin
1378 raise ESDOInvalidConversionException.Create(ClassName);
1379 end;
1380 {$WARNINGS ON}
1381
1382 {$WARNINGS OFF}
TSDOBaseField.getChangeSummarynull1383 function TSDOBaseField.getChangeSummary(
1384 const ABuffer: TSDOFieldBuffer;
1385 const AOffset: PtrUInt
1386 ) : ISDOChangeSummary;
1387 begin
1388 raise ESDOInvalidConversionException.Create(ClassName);
1389 end;
1390 {$WARNINGS ON}
1391
1392 {$WARNINGS OFF}
getCharacternull1393 function TSDOBaseField.getCharacter(
1394 const ABuffer: TSDOFieldBuffer;
1395 const AOffset: PtrUInt
1396 ) : TSDOChar;
1397 begin
1398 raise ESDOInvalidConversionException.Create(ClassName);
1399 end;
1400 {$WARNINGS ON}
1401
1402 {$WARNINGS OFF}
getDataObjectnull1403 function TSDOBaseField.getDataObject(
1404 const ABuffer: TSDOFieldBuffer;
1405 const AOffset: PtrUInt
1406 ): ISDODataObject;
1407 begin
1408 raise ESDOInvalidConversionException.Create(ClassName);
1409 end;
1410 {$WARNINGS ON}
1411
1412 {$WARNINGS OFF}
getDatenull1413 function TSDOBaseField.getDate(
1414 const ABuffer: TSDOFieldBuffer;
1415 const AOffset: PtrUInt
1416 ) : TSDODate;
1417 begin
1418 raise ESDOInvalidConversionException.Create(ClassName);
1419 end;
1420 {$WARNINGS ON}
1421
1422 {$WARNINGS OFF}
TSDOBaseField.getIntegernull1423 function TSDOBaseField.getInteger(
1424 const ABuffer: TSDOFieldBuffer;
1425 const AOffset: PtrUInt
1426 ) : TSDOInteger;
1427 begin
1428 raise ESDOInvalidConversionException.Create(ClassName);
1429 end;
1430 {$WARNINGS ON}
1431
1432 {$WARNINGS OFF}
getLongnull1433 function TSDOBaseField.getLong(
1434 const ABuffer: TSDOFieldBuffer;
1435 const AOffset: PtrUInt
1436 ) : TSDOLong;
1437 begin
1438 raise ESDOInvalidConversionException.Create(ClassName);
1439 end;
1440 {$WARNINGS ON}
1441
1442 {$WARNINGS OFF}
getShortnull1443 function TSDOBaseField.getShort(
1444 const ABuffer: TSDOFieldBuffer;
1445 const AOffset: PtrUInt
1446 ) : TSDOShort;
1447 begin
1448 raise ESDOInvalidConversionException.Create(ClassName);
1449 end;
1450 {$WARNINGS ON}
1451
1452 {$WARNINGS OFF}
TSDOBaseField.getStringnull1453 function TSDOBaseField.getString(
1454 const ABuffer: TSDOFieldBuffer;
1455 const AOffset: PtrUInt
1456 ) : TSDOString;
1457 begin
1458 raise ESDOInvalidConversionException.Create(ClassName);
1459 end;
1460 {$WARNINGS ON}
1461
isNullnull1462 function TSDOBaseField.isNull(const ABuffer: TSDOFieldBuffer; const AOffset: PtrUInt): Boolean;
1463 var
1464 locBuffer : PByte;
1465 begin
1466 locBuffer := ABuffer;
1467 if ( AOffset <> 0 ) then
1468 Inc(locBuffer,AOffset);
1469 Result := IsBitON(locBuffer^,BIT_ORDER_NULL);
1470 end;
1471
isSetnull1472 function TSDOBaseField.isSet(
1473 const ABuffer: TSDOFieldBuffer;
1474 const AOffset: PtrUInt
1475 ) : Boolean;
1476 var
1477 locBuffer : PByte;
1478 begin
1479 locBuffer := ABuffer;
1480 if ( AOffset <> 0 ) then
1481 Inc(locBuffer,AOffset);
1482 Result := IsBitON(locBuffer^,BIT_ORDER_SET);
1483 end;
1484
1485 {$WARNINGS OFF}
1486 procedure TSDOBaseField.setBoolean(
1487 const ABuffer: TSDOFieldBuffer;
1488 const AOffset: PtrUInt; const AValue: TSDOBoolean
1489 );
1490 begin
1491 raise ESDOInvalidConversionException.Create(ClassName);
1492 end;
1493 {$WARNINGS ON}
1494
1495 {$WARNINGS OFF}
1496 procedure TSDOBaseField.setByte(
1497 const ABuffer: TSDOFieldBuffer;
1498 const AOffset: PtrUInt;
1499 const AValue: TSDOByte
1500 );
1501 begin
1502 raise ESDOInvalidConversionException.Create(ClassName);
1503 end;
1504 {$WARNINGS ON}
1505
1506 {$WARNINGS OFF}
1507 procedure TSDOBaseField.setBytes(
1508 const ABuffer: TSDOFieldBuffer;
1509 const AOffset: PtrUInt;
1510 AValue: TSDOBytes
1511 );
1512 begin
1513 raise ESDOInvalidConversionException.Create(ClassName);
1514 end;
1515 {$WARNINGS ON}
1516
1517 {$WARNINGS OFF}
1518 procedure TSDOBaseField.setChangeSummary(
1519 const ABuffer: TSDOFieldBuffer;
1520 const AOffset: PtrUInt;
1521 const AValue: ISDOChangeSummary
1522 );
1523 begin
1524 raise ESDOInvalidConversionException.Create(ClassName);
1525 end;
1526 {$WARNINGS ON}
1527
1528 {$WARNINGS OFF}
1529 procedure TSDOBaseField.setCharacter(
1530 const ABuffer: TSDOFieldBuffer;
1531 const AOffset: PtrUInt;
1532 const AValue: TSDOChar
1533 );
1534 begin
1535 raise ESDOInvalidConversionException.Create(ClassName);
1536 end;
1537 {$WARNINGS ON}
1538
1539 {$WARNINGS OFF}
1540 procedure TSDOBaseField.setDataObject(
1541 const ABuffer : TSDOFieldBuffer;
1542 const AOffset : PtrUInt;
1543 const AValue : ISDODataObject
1544 );
1545 begin
1546 raise ESDOInvalidConversionException.Create(ClassName);
1547 end;
1548 {$WARNINGS ON}
1549
1550 {$WARNINGS OFF}
1551 procedure TSDOBaseField.setDate(
1552 const ABuffer: TSDOFieldBuffer;
1553 const AOffset: PtrUInt;
1554 const AValue: TSDODate
1555 );
1556 begin
1557 raise ESDOInvalidConversionException.Create(ClassName);
1558 end;
1559 {$WARNINGS ON}
1560
1561 {$WARNINGS OFF}
1562 procedure TSDOBaseField.setInteger(
1563 const ABuffer: TSDOFieldBuffer;
1564 const AOffset: PtrUInt;
1565 const AValue: TSDOInteger
1566 );
1567 begin
1568 raise ESDOInvalidConversionException.Create(ClassName);
1569 end;
1570 {$WARNINGS ON}
1571
1572 {$WARNINGS OFF}
1573 procedure TSDOBaseField.setLong(
1574 const ABuffer: TSDOFieldBuffer;
1575 const AOffset: PtrUInt;
1576 const AValue: TSDOLong
1577 );
1578 begin
1579 raise ESDOInvalidConversionException.Create(ClassName);
1580 end;
1581 {$WARNINGS ON}
1582
1583 procedure TSDOBaseField.setNull(const ABuffer: TSDOFieldBuffer; const AOffset: PtrUInt);
1584 var
1585 rawBuffer : PByte;
1586 begin
1587 rawBuffer := PByte(ABuffer);
1588 if ( AOffset <> 0 ) then
1589 Inc(rawBuffer,AOffset);
1590 SetBit(rawBuffer^,BIT_ORDER_SET,True);
1591 SetBit(rawBuffer^,BIT_ORDER_NULL,True);
1592 end;
1593
1594 {$WARNINGS OFF}
1595 procedure TSDOBaseField.setShort(
1596 const ABuffer: TSDOFieldBuffer;
1597 const AOffset: PtrUInt;
1598 const AValue: TSDOShort
1599 );
1600 begin
1601 raise ESDOInvalidConversionException.Create(ClassName);
1602 end;
1603 {$WARNINGS ON}
1604
1605 {$WARNINGS OFF}
1606 procedure TSDOBaseField.setString(
1607 const ABuffer: TSDOFieldBuffer;
1608 const AOffset: PtrUInt;
1609 const AValue: TSDOString
1610 );
1611 begin
1612 raise ESDOInvalidConversionException.Create(ClassName);
1613 end;
1614 {$WARNINGS ON}
1615
1616 procedure TSDOBaseField.unset(const ABuffer: TSDOFieldBuffer; const AOffset: PtrUInt);
1617 var
1618 rawBuffer : PByte;
1619 begin
1620 rawBuffer := PByte(ABuffer);
1621 if ( AOffset <> 0 ) then
1622 Inc(rawBuffer,AOffset);
1623 SetBit(rawBuffer^,BIT_ORDER_SET,False);
1624 end;
1625
1626 {$IFDEF HAS_SDO_CURRENCY}
1627 {$WARNINGS OFF}
getCurrencynull1628 function TSDOBaseField.getCurrency(
1629 const ABuffer: TSDOFieldBuffer;
1630 const AOffset: PtrUInt
1631 ) : TSDOCurrency;
1632 begin
1633 raise ESDOInvalidConversionException.Create(ClassName);
1634 end;
1635
1636 procedure TSDOBaseField.setCurrency(
1637 const ABuffer: TSDOFieldBuffer;
1638 const AOffset: PtrUInt;
1639 const AValue: TSDOCurrency
1640 );
1641 begin
1642 raise ESDOInvalidConversionException.Create(ClassName);
1643 end;
1644 {$WARNINGS ON}
1645 {$ENDIF HAS_SDO_CURRENCY}
1646
1647 {$IFDEF HAS_SDO_DOUBLE}
1648 {$WARNINGS OFF}
getDoublenull1649 function TSDOBaseField.getDouble(
1650 const ABuffer: TSDOFieldBuffer;
1651 const AOffset: PtrUInt
1652 ) : TSDODouble;
1653 begin
1654 raise ESDOInvalidConversionException.Create(ClassName);
1655 end;
1656
1657 procedure TSDOBaseField.setDouble(
1658 const ABuffer: TSDOFieldBuffer;
1659 const AOffset: PtrUInt;
1660 const AValue: TSDODouble
1661 );
1662 begin
1663 raise ESDOInvalidConversionException.Create(ClassName);
1664 end;
1665 {$WARNINGS ON}
1666 {$ENDIF HAS_SDO_DOUBLE}
1667
1668 {$IFDEF HAS_SDO_FLOAT}
1669 {$WARNINGS OFF}
getFloatnull1670 function TSDOBaseField.getFloat(
1671 const ABuffer: TSDOFieldBuffer;
1672 const AOffset: PtrUInt
1673 ) : TSDOFloat;
1674 begin
1675 raise ESDOInvalidConversionException.Create(ClassName);
1676 end;
1677
1678 procedure TSDOBaseField.setFloat(
1679 const ABuffer: TSDOFieldBuffer;
1680 const AOffset: PtrUInt;
1681 const AValue: TSDOFloat
1682 );
1683 begin
1684 raise ESDOInvalidConversionException.Create(ClassName);
1685 end;
1686 {$WARNINGS ON}
1687 {$ENDIF HAS_SDO_FLOAT}
1688
1689 { TSDOBooleanField }
1690
TSDOBooleanField.getBooleannull1691 function TSDOBooleanField.getBoolean(
1692 const ABuffer: TSDOFieldBuffer;
1693 const AOffset: PtrUInt
1694 ): TSDOBoolean;
1695 var
1696 buff : PByte;
1697 begin
1698 buff := PByte(ABuffer);
1699 if ( AOffset <> 0 ) then
1700 Inc(buff,AOffset);
1701 if IsBitON(buff^,BIT_ORDER_NULL) then begin
1702 Result := False;
1703 end else begin
1704 Inc(buff);
1705 Result := ( buff^ <> 0 );
1706 end;
1707 end;
1708
getBytenull1709 function TSDOBooleanField.getByte(
1710 const ABuffer: TSDOFieldBuffer;
1711 const AOffset: PtrUInt
1712 ) : TSDOByte;
1713 begin
1714 Result := TSDOConvertHelper.BoolToByte(getBoolean(ABuffer,AOffset));
1715 end;
1716
TSDOBooleanField.getCharacternull1717 function TSDOBooleanField.getCharacter(
1718 const ABuffer: TSDOFieldBuffer;
1719 const AOffset: PtrUInt
1720 ) : TSDOChar;
1721 begin
1722 Result := TSDOConvertHelper.BoolToChar(getBoolean(ABuffer,AOffset));
1723 end;
1724
getIntegernull1725 function TSDOBooleanField.getInteger(
1726 const ABuffer: TSDOFieldBuffer;
1727 const AOffset: PtrUInt
1728 ) : TSDOInteger;
1729 begin
1730 Result := TSDOConvertHelper.BoolToInteger(getBoolean(ABuffer,AOffset));
1731 end;
1732
getLongnull1733 function TSDOBooleanField.getLong(
1734 const ABuffer: TSDOFieldBuffer;
1735 const AOffset: PtrUInt
1736 ) : TSDOLong;
1737 begin
1738 Result := TSDOConvertHelper.BoolToLong(getBoolean(ABuffer,AOffset));
1739 end;
1740
getShortnull1741 function TSDOBooleanField.getShort(
1742 const ABuffer: TSDOFieldBuffer;
1743 const AOffset: PtrUInt
1744 ) : TSDOShort;
1745 begin
1746 Result := TSDOConvertHelper.BoolToShort(getBoolean(ABuffer,AOffset));
1747 end;
1748
TSDOBooleanField.getStringnull1749 function TSDOBooleanField.getString(
1750 const ABuffer: TSDOFieldBuffer;
1751 const AOffset: PtrUInt
1752 ): TSDOString;
1753 begin
1754 Result := TSDOConvertHelper.BoolToString(getBoolean(ABuffer,AOffset));
1755 end;
1756
getVariantnull1757 function TSDOBooleanField.getVariant(
1758 const ABuffer: TSDOFieldBuffer;
1759 const AOffset: PtrUInt
1760 ) : TSDOVariant;
1761 begin
1762 if isNull(ABuffer,AOffset) then
1763 Result := Null
1764 else
1765 Result := getBoolean(ABuffer,AOffset);
1766 end;
1767
1768 procedure TSDOBooleanField.setBoolean(
1769 const ABuffer: TSDOFieldBuffer;
1770 const AOffset: PtrUInt;
1771 const AValue: TSDOBoolean
1772 );
1773 var
1774 buff : PByte;
1775 begin
1776 buff := PByte(ABuffer);
1777 if ( AOffset <> 0 ) then
1778 Inc(buff,AOffset);
1779 SetBit(buff^,BIT_ORDER_SET,True);
1780 SetBit(buff^,BIT_ORDER_NULL,False);
1781 Inc(buff);
1782 if AValue then
1783 buff^ := 1
1784 else
1785 buff^ := 0;
1786 end;
1787
1788 procedure TSDOBooleanField.setByte(
1789 const ABuffer: TSDOFieldBuffer;
1790 const AOffset: PtrUInt;
1791 const AValue: TSDOByte
1792 );
1793 begin
1794 setBoolean(ABuffer,AOffset,( AValue <> 0 ));
1795 end;
1796
1797 procedure TSDOBooleanField.setCharacter(
1798 const ABuffer: TSDOFieldBuffer;
1799 const AOffset: PtrUInt;
1800 const AValue: TSDOChar
1801 );
1802 begin
1803 setBoolean(ABuffer,AOffset,TSDOConvertHelper.CharToBool(AValue));
1804 end;
1805
1806 procedure TSDOBooleanField.setInteger(
1807 const ABuffer: TSDOFieldBuffer;
1808 const AOffset: PtrUInt;
1809 const AValue: TSDOInteger
1810 );
1811 begin
1812 setBoolean(ABuffer,AOffset,TSDOConvertHelper.IntegerToBool(AValue));
1813 end;
1814
1815 procedure TSDOBooleanField.setLong(
1816 const ABuffer: TSDOFieldBuffer;
1817 const AOffset: PtrUInt;
1818 const AValue: TSDOLong
1819 );
1820 begin
1821 setBoolean(ABuffer,AOffset,TSDOConvertHelper.LongToBool(AValue));
1822 end;
1823
1824 procedure TSDOBooleanField.setShort(
1825 const ABuffer: TSDOFieldBuffer;
1826 const AOffset: PtrUInt;
1827 const AValue: TSDOShort
1828 );
1829 begin
1830 setBoolean(ABuffer,AOffset,TSDOConvertHelper.ShortToBool(AValue));
1831 end;
1832
1833 procedure TSDOBooleanField.setString(
1834 const ABuffer: TSDOFieldBuffer;
1835 const AOffset: PtrUInt;
1836 const AValue: TSDOString
1837 );
1838 begin
1839 setBoolean(ABuffer,AOffset,TSDOConvertHelper.StringToBool(AValue));
1840 end;
1841
1842 procedure TSDOBooleanField.setVariant(
1843 const ABuffer: TSDOFieldBuffer;
1844 const AOffset: PtrUInt;
1845 const AValue: TSDOVariant
1846 );
1847 begin
1848 if VarIsNull(AValue) then
1849 setNull(ABuffer,AOffset)
1850 else
1851 setBoolean(ABuffer,AOffset,AValue);
1852 end;
1853
1854 { TSDOIntegerField }
1855
getBooleannull1856 function TSDOIntegerField.getBoolean(
1857 const ABuffer: TSDOFieldBuffer;
1858 const AOffset: PtrUInt
1859 ): TSDOBoolean;
1860 begin
1861 Result := TSDOConvertHelper.IntegerToBool(getInteger(ABuffer,AOffset));
1862 end;
1863
TSDOIntegerField.getBytenull1864 function TSDOIntegerField.getByte(
1865 const ABuffer: TSDOFieldBuffer;
1866 const AOffset: PtrUInt
1867 ) : TSDOByte;
1868 begin
1869 Result := getInteger(ABuffer,AOffset);
1870 end;
1871
TSDOIntegerField.getCharacternull1872 function TSDOIntegerField.getCharacter(
1873 const ABuffer: TSDOFieldBuffer;
1874 const AOffset: PtrUInt
1875 ) : TSDOChar;
1876 begin
1877 Result := TSDOConvertHelper.IntegerToChar(getInteger(ABuffer,AOffset));
1878 end;
1879
getIntegernull1880 function TSDOIntegerField.getInteger(
1881 const ABuffer: TSDOFieldBuffer;
1882 const AOffset: PtrUInt
1883 ) : TSDOInteger;
1884 var
1885 buff : PByte;
1886 begin
1887 buff := PByte(ABuffer);
1888 if ( AOffset <> 0 ) then
1889 Inc(buff,AOffset);
1890 if IsBitON(buff^,BIT_ORDER_NULL) then begin
1891 Result := 0;
1892 end else begin
1893 Inc(buff);
1894 Result := PSDOInteger(buff)^;
1895 end;
1896 end;
1897
getLongnull1898 function TSDOIntegerField.getLong(
1899 const ABuffer: TSDOFieldBuffer;
1900 const AOffset: PtrUInt
1901 ) : TSDOLong;
1902 begin
1903 Result := getInteger(ABuffer,AOffset);
1904 end;
1905
getShortnull1906 function TSDOIntegerField.getShort(
1907 const ABuffer: TSDOFieldBuffer;
1908 const AOffset: PtrUInt
1909 ) : TSDOShort;
1910 begin
1911 Result := getInteger(ABuffer,AOffset);
1912 end;
1913
getStringnull1914 function TSDOIntegerField.getString(
1915 const ABuffer : TSDOFieldBuffer;
1916 const AOffset : PtrUInt
1917 ) : TSDOString;
1918 begin
1919 Result := TSDOConvertHelper.IntegerToString(getInteger(ABuffer,AOffset));
1920 end;
1921
getVariantnull1922 function TSDOIntegerField.getVariant(
1923 const ABuffer: TSDOFieldBuffer;
1924 const AOffset: PtrUInt
1925 ) : TSDOVariant;
1926 begin
1927 if isNull(ABuffer,AOffset) then
1928 Result := Null
1929 else
1930 Result := getInteger(ABuffer,AOffset);
1931 end;
1932
1933 procedure TSDOIntegerField.setBoolean(
1934 const ABuffer: TSDOFieldBuffer;
1935 const AOffset: PtrUInt; const AValue: TSDOBoolean
1936 );
1937 begin
1938 setInteger(ABuffer,AOffset,TSDOConvertHelper.BoolToInteger(AValue));
1939 end;
1940
1941 procedure TSDOIntegerField.setByte(
1942 const ABuffer: TSDOFieldBuffer;
1943 const AOffset: PtrUInt;
1944 const AValue: TSDOByte
1945 );
1946 begin
1947 setInteger(ABuffer,AOffset,AValue);
1948 end;
1949
1950 procedure TSDOIntegerField.setCharacter(
1951 const ABuffer: TSDOFieldBuffer;
1952 const AOffset: PtrUInt;
1953 const AValue: TSDOChar
1954 );
1955 begin
1956 setInteger(ABuffer,AOffset,TSDOConvertHelper.CharToInteger(AValue));
1957 end;
1958
1959 procedure TSDOIntegerField.setInteger(
1960 const ABuffer: TSDOFieldBuffer;
1961 const AOffset: PtrUInt; const AValue: TSDOInteger
1962 );
1963 var
1964 buff : PByte;
1965 begin
1966 buff := PByte(ABuffer);
1967 if ( AOffset <> 0 ) then
1968 Inc(buff,AOffset);
1969 SetBit(buff^,BIT_ORDER_SET,True);
1970 SetBit(buff^,BIT_ORDER_NULL,False);
1971 Inc(buff);
1972 PSDOInteger(buff)^ := AValue;
1973 end;
1974
1975 procedure TSDOIntegerField.setLong(
1976 const ABuffer: TSDOFieldBuffer;
1977 const AOffset: PtrUInt;
1978 const AValue: TSDOLong
1979 );
1980 begin
1981 setInteger(ABuffer,AOffset,AValue);
1982 end;
1983
1984 procedure TSDOIntegerField.setShort(
1985 const ABuffer: TSDOFieldBuffer;
1986 const AOffset: PtrUInt;
1987 const AValue: TSDOShort
1988 );
1989 begin
1990 setInteger(ABuffer,AOffset,AValue);
1991 end;
1992
1993 procedure TSDOIntegerField.setString(
1994 const ABuffer: TSDOFieldBuffer;
1995 const AOffset: PtrUInt; const AValue: TSDOString
1996 );
1997 begin
1998 setInteger(ABuffer,AOffset,TSDOConvertHelper.StringToInteger(AValue));
1999 end;
2000
2001 procedure TSDOIntegerField.setVariant(
2002 const ABuffer: TSDOFieldBuffer;
2003 const AOffset: PtrUInt;
2004 const AValue: TSDOVariant
2005 );
2006 begin
2007 if VarIsNull(AValue) then
2008 setNull(ABuffer,AOffset)
2009 else
2010 setInteger(ABuffer,AOffset,AValue);
2011 end;
2012
2013 { TSDOBaseStringField }
2014
2015 procedure TSDOBaseStringField.FreeBuffer(const ABuffer : TSDOFieldBuffer);
2016 var
2017 rawBuffer : PByte;
2018 strBuffer : PPSDOString;
2019 begin
2020 rawBuffer := PByte(ABuffer);
2021 if IsBitON(rawBuffer^,BIT_ORDER_BUFFER) then begin
2022 Inc(rawBuffer);
2023 strBuffer := PPSDOString(rawBuffer);
2024 SetLength(strBuffer^^,0);
2025 FreeMem(strBuffer^,SizeOf(PSDOString));
2026 strBuffer^ := nil;
2027 Dec(rawBuffer);
2028 SetBit(rawBuffer^,BIT_ORDER_BUFFER,False);
2029 end;
2030 end;
2031
TSDOBaseStringField.getBooleannull2032 function TSDOBaseStringField.getBoolean(
2033 const ABuffer: TSDOFieldBuffer;
2034 const AOffset: PtrUInt
2035 ) : TSDOBoolean;
2036 begin
2037 Result := TSDOConvertHelper.StringToBool(getString(ABuffer,AOffset));
2038 end;
2039
TSDOBaseStringField.getBytenull2040 function TSDOBaseStringField.getByte(
2041 const ABuffer: TSDOFieldBuffer;
2042 const AOffset: PtrUInt
2043 ) : TSDOByte;
2044 begin
2045 Result := TSDOConvertHelper.StringToByte(getString(ABuffer,AOffset));
2046 end;
2047
getCharacternull2048 function TSDOBaseStringField.getCharacter(
2049 const ABuffer: TSDOFieldBuffer;
2050 const AOffset: PtrUInt
2051 ) : TSDOChar;
2052 begin
2053 Result := TSDOConvertHelper.StringToChar(getString(ABuffer,AOffset));
2054 end;
2055
TSDOBaseStringField.getIntegernull2056 function TSDOBaseStringField.getInteger(
2057 const ABuffer: TSDOFieldBuffer;
2058 const AOffset: PtrUInt
2059 ) : TSDOInteger;
2060 begin
2061 Result := TSDOConvertHelper.StringToInteger(getString(ABuffer,AOffset));
2062 end;
2063
getLongnull2064 function TSDOBaseStringField.getLong(
2065 const ABuffer: TSDOFieldBuffer;
2066 const AOffset: PtrUInt
2067 ) : TSDOLong;
2068 begin
2069 Result := TSDOConvertHelper.StringToLong(getString(ABuffer,AOffset));
2070 end;
2071
TSDOBaseStringField.getShortnull2072 function TSDOBaseStringField.getShort(
2073 const ABuffer: TSDOFieldBuffer;
2074 const AOffset: PtrUInt
2075 ) : TSDOShort;
2076 begin
2077 Result := TSDOConvertHelper.StringToShort(getString(ABuffer,AOffset));
2078 end;
2079
getStringnull2080 function TSDOBaseStringField.getString(
2081 const ABuffer: TSDOFieldBuffer;
2082 const AOffset: PtrUInt
2083 ) : TSDOString;
2084 var
2085 buff : PByte;
2086 begin
2087 buff := PByte(ABuffer);
2088 if ( AOffset <> 0 ) then
2089 Inc(buff,AOffset);
2090 if IsBitON(buff^,BIT_ORDER_NULL) then begin
2091 Result := '';
2092 end else begin
2093 if IsBitON(buff^,BIT_ORDER_BUFFER) then begin
2094 Inc(buff);
2095 Result := PPSDOString(buff)^^
2096 end else begin
2097 Result := '';
2098 end;
2099 end;
2100 end;
2101
getVariantnull2102 function TSDOBaseStringField.getVariant(
2103 const ABuffer: TSDOFieldBuffer;
2104 const AOffset: PtrUInt
2105 ) : TSDOVariant;
2106 begin
2107 if isNull(ABuffer,AOffset) then
2108 Result := Null
2109 else
2110 Result := getString(ABuffer,AOffset);
2111 end;
2112
2113 procedure TSDOBaseStringField.setBoolean(
2114 const ABuffer: TSDOFieldBuffer;
2115 const AOffset: PtrUInt;
2116 const AValue: TSDOBoolean
2117 );
2118 begin
2119 setString(ABuffer,AOffset,TSDOConvertHelper.BoolToString(AValue));
2120 end;
2121
2122 procedure TSDOBaseStringField.setByte(
2123 const ABuffer: TSDOFieldBuffer;
2124 const AOffset: PtrUInt;
2125 const AValue: TSDOByte
2126 );
2127 begin
2128 setString(ABuffer,AOffset,TSDOConvertHelper.ByteToString(AValue));
2129 end;
2130
2131 procedure TSDOBaseStringField.setCharacter(
2132 const ABuffer: TSDOFieldBuffer;
2133 const AOffset: PtrUInt;
2134 const AValue: TSDOChar
2135 );
2136 begin
2137 setString(ABuffer,AOffset,AValue);
2138 end;
2139
2140 procedure TSDOBaseStringField.setInteger(
2141 const ABuffer: TSDOFieldBuffer;
2142 const AOffset: PtrUInt; const AValue: TSDOInteger
2143 );
2144 begin
2145 setString(ABuffer,AOffset,TSDOConvertHelper.IntegerToString(AValue));
2146 end;
2147
2148 procedure TSDOBaseStringField.setLong(
2149 const ABuffer: TSDOFieldBuffer;
2150 const AOffset: PtrUInt;
2151 const AValue: TSDOLong
2152 );
2153 begin
2154 setString(ABuffer,AOffset,TSDOConvertHelper.LongToString(AValue));
2155 end;
2156
2157 procedure TSDOBaseStringField.setNull(const ABuffer: TSDOFieldBuffer; const AOffset: PtrUInt);
2158 var
2159 rawBuffer : PByte;
2160 begin
2161 rawBuffer := PByte(ABuffer);
2162 if ( AOffset <> 0 ) then
2163 Inc(rawBuffer,AOffset);
2164 if IsBitON(rawBuffer^,BIT_ORDER_BUFFER) then begin
2165 FreeBuffer(rawBuffer);
2166 end;
2167 inherited setNull(ABuffer,AOffset);
2168 end;
2169
2170 procedure TSDOBaseStringField.setShort(
2171 const ABuffer: TSDOFieldBuffer;
2172 const AOffset: PtrUInt;
2173 const AValue: TSDOShort
2174 );
2175 begin
2176 setString(ABuffer,AOffset,TSDOConvertHelper.ShortToString(AValue));
2177 end;
2178
2179 procedure TSDOBaseStringField.setString(
2180 const ABuffer: TSDOFieldBuffer;
2181 const AOffset: PtrUInt; const AValue: TSDOString
2182 );
2183 var
2184 rawBuffer : PByte;
2185 strBuffer : PPSDOString;
2186 begin
2187 rawBuffer := PByte(ABuffer);
2188 if ( AOffset <> 0 ) then
2189 Inc(rawBuffer,AOffset);
2190 SetBit(rawBuffer^,BIT_ORDER_SET,True);
2191 if IsBitON(rawBuffer^,BIT_ORDER_BUFFER) then begin
2192 SetBit(rawBuffer^,BIT_ORDER_NULL,False);
2193 Inc(rawBuffer);
2194 strBuffer := PPSDOString(rawBuffer);
2195 end else begin;
2196 SetBit(rawBuffer^,BIT_ORDER_NULL,False);
2197 SetBit(rawBuffer^,BIT_ORDER_BUFFER,True);
2198 Inc(rawBuffer);
2199 strBuffer := PPSDOString(rawBuffer);
2200 GetMem(strBuffer^,SizeOf(PSDOString));
2201 FillChar(strBuffer^^,SizeOf(TSDOString),#0);
2202 end;
2203 strBuffer^^ := AValue;
2204 end;
2205
2206 procedure TSDOBaseStringField.setVariant(
2207 const ABuffer: TSDOFieldBuffer;
2208 const AOffset: PtrUInt;
2209 const AValue: TSDOVariant
2210 );
2211 begin
2212 if VarIsNull(AValue) then
2213 setNull(ABuffer,AOffset)
2214 else
2215 setString(ABuffer,AOffset,AValue);
2216 end;
2217
2218 procedure TSDOBaseStringField.unset(const ABuffer: TSDOFieldBuffer; const AOffset: PtrUInt);
2219 //var
2220 //rawBuffer : PByte;
2221 begin
2222 {rawBuffer := PByte(ABuffer);
2223 if ( AOffset <> 0 ) then
2224 Inc(rawBuffer,AOffset);
2225 do not free the buffer, in case of a default value!
2226 if IsBitON(rawBuffer^,BIT_ORDER_BUFFER) then begin
2227 FreeBuffer(rawBuffer);
2228 end;}
2229 inherited unset(ABuffer,AOffset);
2230 end;
2231
2232
2233 { TSDOObjectField }
2234
2235 procedure TSDOObjectField.FreeBuffer(const ABuffer: TSDOFieldBuffer);
2236 var
2237 rawBuffer : PByte;
2238 objBuffer : PPSDODataObject;
2239 begin
2240 rawBuffer := PByte(ABuffer);
2241 if IsBitON(rawBuffer^,BIT_ORDER_BUFFER) then begin
2242 Inc(rawBuffer);
2243 objBuffer := PPSDODataObject(rawBuffer);
2244 objBuffer^^ := nil;
2245 FreeMem(objBuffer^,SizeOf(PSDODataObject));
2246 objBuffer^ := nil;
2247 Dec(rawBuffer);
2248 SetBit(rawBuffer^,BIT_ORDER_BUFFER,False);
2249 end;
2250 end;
2251
TSDOObjectField.getDataObjectnull2252 function TSDOObjectField.getDataObject(
2253 const ABuffer: TSDOFieldBuffer;
2254 const AOffset: PtrUInt
2255 ) : ISDODataObject;
2256 var
2257 buff : PByte;
2258 objBuffer : PPSDODataObject;
2259 begin
2260 buff := PByte(ABuffer);
2261 if ( AOffset <> 0 ) then
2262 Inc(buff,AOffset);
2263 if IsBitON(buff^,BIT_ORDER_NULL) then begin
2264 Result := nil;
2265 end else begin
2266 if IsBitON(buff^,BIT_ORDER_BUFFER) then begin
2267 Inc(buff);
2268 objBuffer := PPSDODataObject(buff);
2269 Result := objBuffer^^;
2270 end else begin
2271 Result := nil;
2272 end;
2273 end;
2274 end;
2275
getVariantnull2276 function TSDOObjectField.getVariant(
2277 const ABuffer: TSDOFieldBuffer;
2278 const AOffset: PtrUInt
2279 ) : TSDOVariant;
2280 begin
2281 if isNull(ABuffer,AOffset) then
2282 Result := Null
2283 else
2284 Result := getDataObject(ABuffer,AOffset);
2285 end;
2286
2287 procedure TSDOObjectField.setDataObject(
2288 const ABuffer : TSDOFieldBuffer;
2289 const AOffset : PtrUInt;
2290 const AValue : ISDODataObject
2291 );
2292 var
2293 rawBuffer : PByte;
2294 objBuffer : PPSDODataObject;
2295 begin
2296 rawBuffer := PByte(ABuffer);
2297 if ( AOffset <> 0 ) then
2298 Inc(rawBuffer,AOffset);
2299 if IsBitON(rawBuffer^,BIT_ORDER_BUFFER) then begin
2300 SetBit(rawBuffer^,BIT_ORDER_NULL,False);
2301 Inc(rawBuffer);
2302 objBuffer := PPSDODataObject(rawBuffer);
2303 end else begin;
2304 SetBit(rawBuffer^,BIT_ORDER_SET,True);
2305 SetBit(rawBuffer^,BIT_ORDER_BUFFER,True);
2306 SetBit(rawBuffer^,BIT_ORDER_NULL,False);
2307 Inc(rawBuffer);
2308 objBuffer := PPSDODataObject(rawBuffer);
2309 GetMem(objBuffer^,SizeOf(PSDODataObject));
2310 FillChar(objBuffer^^,SizeOf(ISDODataObject),#0);
2311 end;
2312 objBuffer^^ := AValue;
2313 end;
2314
2315 procedure TSDOObjectField.setVariant(
2316 const ABuffer : TSDOFieldBuffer;
2317 const AOffset : PtrUInt;
2318 const AValue : TSDOVariant
2319 );
2320 var
2321 x : IInterface;
2322 obj : ISDODataObject;
2323 begin
2324 if VarIsNull(AValue) then begin
2325 setNull(ABuffer,AOffset);
2326 exit;
2327 end;
2328 if not VarIsType(AValue,varUnknown) then
2329 raise ESDOInvalidConversionException.Create(ClassName);
2330 x := AValue;
2331 if (x = nil) then begin
2332 obj := nil;
2333 end else begin
2334 if not Supports(x,ISDODataObject,obj) then
2335 raise ESDOInvalidConversionException.Create(ClassName);
2336 end;
2337 setDataObject(ABuffer,AOffset,obj);
2338 end;
2339
2340 procedure TSDOObjectField.setNull(const ABuffer: TSDOFieldBuffer; const AOffset: PtrUInt);
2341 var
2342 rawBuffer : PByte;
2343 begin
2344 rawBuffer := PByte(ABuffer);
2345 if ( AOffset <> 0 ) then
2346 Inc(rawBuffer,AOffset);
2347 if IsBitON(rawBuffer^,BIT_ORDER_BUFFER) then begin
2348 FreeBuffer(rawBuffer);
2349 end;
2350 inherited setNull(ABuffer,AOffset);
2351 end;
2352
2353 procedure TSDOObjectField.unset(
2354 const ABuffer: TSDOFieldBuffer;
2355 const AOffset: PtrUInt
2356 );
2357 var
2358 rawBuffer : PByte;
2359 begin
2360 rawBuffer := PByte(ABuffer);
2361 if ( AOffset <> 0 ) then
2362 Inc(rawBuffer,AOffset);
2363 if IsBitON(rawBuffer^,BIT_ORDER_BUFFER) then begin
2364 FreeBuffer(rawBuffer);
2365 end;
2366 inherited unset(ABuffer,AOffset);
2367 end;
2368
2369 { TSDOChangeSummaryField }
2370
2371 procedure TSDOChangeSummaryField.FreeBuffer(const ABuffer: TSDOFieldBuffer);
2372 var
2373 rawBuffer : PByte;
2374 objBuffer : PPSDOChangeSummary;
2375 begin
2376 rawBuffer := PByte(ABuffer);
2377 if IsBitON(rawBuffer^,BIT_ORDER_BUFFER) then begin
2378 Inc(rawBuffer);
2379 objBuffer := PPSDOChangeSummary(rawBuffer);
2380 objBuffer^^ := nil;
2381 FreeMem(objBuffer^,SizeOf(PPSDOChangeSummary));
2382 objBuffer^ := nil;
2383 Dec(rawBuffer);
2384 SetBit(rawBuffer^,BIT_ORDER_BUFFER,False);
2385 end;
2386 end;
2387
TSDOChangeSummaryField.getChangeSummarynull2388 function TSDOChangeSummaryField.getChangeSummary(
2389 const ABuffer: TSDOFieldBuffer;
2390 const AOffset: PtrUInt
2391 ): ISDOChangeSummary;
2392 var
2393 buff : PByte;
2394 objBuffer : PPSDOChangeSummary;
2395 begin
2396 buff := PByte(ABuffer);
2397 if ( AOffset <> 0 ) then
2398 Inc(buff,AOffset);
2399 if IsBitON(buff^,BIT_ORDER_NULL) then begin
2400 Result := nil;
2401 end else begin
2402 if IsBitON(buff^,BIT_ORDER_BUFFER) then begin
2403 Inc(buff);
2404 objBuffer := PPSDOChangeSummary(buff);
2405 Result := objBuffer^^;
2406 end else begin
2407 Result := nil;
2408 end;
2409 end;
2410 end;
2411
2412 procedure TSDOChangeSummaryField.setChangeSummary(
2413 const ABuffer: TSDOFieldBuffer;
2414 const AOffset: PtrUInt;
2415 const AValue: ISDOChangeSummary
2416 );
2417 var
2418 rawBuffer : PByte;
2419 objBuffer : PPSDOChangeSummary;
2420 begin
2421 rawBuffer := PByte(ABuffer);
2422 if ( AOffset <> 0 ) then
2423 Inc(rawBuffer,AOffset);
2424 if IsBitON(rawBuffer^,BIT_ORDER_BUFFER) then begin
2425 SetBit(rawBuffer^,BIT_ORDER_NULL,False);
2426 Inc(rawBuffer);
2427 objBuffer := PPSDOChangeSummary(rawBuffer);
2428 end else begin;
2429 SetBit(rawBuffer^,BIT_ORDER_SET,True);
2430 SetBit(rawBuffer^,BIT_ORDER_BUFFER,True);
2431 SetBit(rawBuffer^,BIT_ORDER_NULL,False);
2432 Inc(rawBuffer);
2433 objBuffer := PPSDOChangeSummary(rawBuffer);
2434 GetMem(objBuffer^,SizeOf(PSDOChangeSummary));
2435 FillChar(objBuffer^^,SizeOf(ISDOChangeSummary),#0);
2436 end;
2437 objBuffer^^ := AValue;
2438 end;
2439
2440 procedure TSDOChangeSummaryField.setNull(
2441 const ABuffer: TSDOFieldBuffer;
2442 const AOffset: PtrUInt
2443 );
2444 var
2445 rawBuffer : PByte;
2446 begin
2447 rawBuffer := PByte(ABuffer);
2448 if ( AOffset <> 0 ) then
2449 Inc(rawBuffer,AOffset);
2450 if IsBitON(rawBuffer^,BIT_ORDER_BUFFER) then begin
2451 FreeBuffer(rawBuffer);
2452 end;
2453 inherited setNull(ABuffer,AOffset);
2454 end;
2455
2456 procedure TSDOChangeSummaryField.unset(
2457 const ABuffer: TSDOFieldBuffer;
2458 const AOffset: PtrUInt
2459 );
2460 var
2461 rawBuffer : PByte;
2462 begin
2463 rawBuffer := PByte(ABuffer);
2464 if ( AOffset <> 0 ) then
2465 Inc(rawBuffer,AOffset);
2466 if IsBitON(rawBuffer^,BIT_ORDER_BUFFER) then begin
2467 FreeBuffer(rawBuffer);
2468 end;
2469 inherited unset(ABuffer,AOffset);
2470 end;
2471
2472 { TSDOByteField }
2473
TSDOByteField.getBooleannull2474 function TSDOByteField.getBoolean(
2475 const ABuffer: TSDOFieldBuffer;
2476 const AOffset: PtrUInt
2477 ) : TSDOBoolean;
2478 begin
2479 Result := TSDOConvertHelper.ByteToBool(getByte(ABuffer,AOffset));
2480 end;
2481
getBytenull2482 function TSDOByteField.getByte(
2483 const ABuffer: TSDOFieldBuffer;
2484 const AOffset: PtrUInt
2485 ): TSDOByte;
2486 var
2487 buff : PByte;
2488 begin
2489 buff := PByte(ABuffer);
2490 if ( AOffset <> 0 ) then
2491 Inc(buff,AOffset);
2492 if IsBitON(buff^,BIT_ORDER_NULL) then begin
2493 Result := 0;
2494 end else begin
2495 Inc(buff);
2496 Result := buff^;
2497 end;
2498 end;
2499
TSDOByteField.getCharacternull2500 function TSDOByteField.getCharacter(
2501 const ABuffer: TSDOFieldBuffer;
2502 const AOffset: PtrUInt
2503 ) : TSDOChar;
2504 begin
2505 Result := TSDOConvertHelper.ByteToChar(getByte(ABuffer,AOffset));
2506 end;
2507
TSDOByteField.getIntegernull2508 function TSDOByteField.getInteger(
2509 const ABuffer: TSDOFieldBuffer;
2510 const AOffset: PtrUInt
2511 ) : TSDOInteger;
2512 begin
2513 Result := getByte(ABuffer,AOffset);
2514 end;
2515
getLongnull2516 function TSDOByteField.getLong(
2517 const ABuffer: TSDOFieldBuffer;
2518 const AOffset: PtrUInt
2519 ) : TSDOLong;
2520 begin
2521 Result := getByte(ABuffer,AOffset);
2522 end;
2523
TSDOByteField.getShortnull2524 function TSDOByteField.getShort(
2525 const ABuffer: TSDOFieldBuffer;
2526 const AOffset: PtrUInt
2527 ) : TSDOShort;
2528 begin
2529 Result := getByte(ABuffer,AOffset);
2530 end;
2531
TSDOByteField.getStringnull2532 function TSDOByteField.getString(
2533 const ABuffer: TSDOFieldBuffer;
2534 const AOffset: PtrUInt
2535 ) : TSDOString;
2536 begin
2537 Result := TSDOConvertHelper.ByteToString(getByte(ABuffer,AOffset));
2538 end;
2539
getVariantnull2540 function TSDOByteField.getVariant(
2541 const ABuffer: TSDOFieldBuffer;
2542 const AOffset: PtrUInt
2543 ) : TSDOVariant;
2544 begin
2545 if isNull(ABuffer,AOffset) then
2546 Result := Null
2547 else
2548 Result := getByte(ABuffer,AOffset);
2549 end;
2550
2551 procedure TSDOByteField.setBoolean(
2552 const ABuffer: TSDOFieldBuffer;
2553 const AOffset: PtrUInt;
2554 const AValue: TSDOBoolean
2555 );
2556 begin
2557 setByte(ABuffer,AOffset,TSDOConvertHelper.BoolToByte(AValue));
2558 end;
2559
2560 procedure TSDOByteField.setByte(
2561 const ABuffer: TSDOFieldBuffer;
2562 const AOffset: PtrUInt;
2563 const AValue: TSDOByte
2564 );
2565 var
2566 buff : PByte;
2567 begin
2568 buff := PByte(ABuffer);
2569 if ( AOffset <> 0 ) then
2570 Inc(buff,AOffset);
2571 SetBit(buff^,BIT_ORDER_SET,True);
2572 SetBit(buff^,BIT_ORDER_NULL,False);
2573 Inc(buff);
2574 buff^ := AValue;
2575 end;
2576
2577 procedure TSDOByteField.setCharacter(
2578 const ABuffer: TSDOFieldBuffer;
2579 const AOffset: PtrUInt;
2580 const AValue: TSDOChar
2581 );
2582 begin
2583 setByte(ABuffer,AOffset,TSDOConvertHelper.CharToByte(AValue));
2584 end;
2585
2586 procedure TSDOByteField.setInteger(
2587 const ABuffer: TSDOFieldBuffer;
2588 const AOffset: PtrUInt;
2589 const AValue: TSDOInteger
2590 );
2591 begin
2592 setByte(ABuffer,AOffset,AValue);
2593 end;
2594
2595 procedure TSDOByteField.setLong(
2596 const ABuffer: TSDOFieldBuffer;
2597 const AOffset: PtrUInt;
2598 const AValue: TSDOLong
2599 );
2600 begin
2601 setByte(ABuffer,AOffset,AValue);
2602 end;
2603
2604 procedure TSDOByteField.setShort(
2605 const ABuffer: TSDOFieldBuffer;
2606 const AOffset: PtrUInt;
2607 const AValue: TSDOShort
2608 );
2609 begin
2610 setByte(ABuffer,AOffset,AValue);
2611 end;
2612
2613 procedure TSDOByteField.setString(
2614 const ABuffer: TSDOFieldBuffer;
2615 const AOffset: PtrUInt;
2616 const AValue: TSDOString
2617 );
2618 begin
2619 setByte(ABuffer,AOffset,TSDOConvertHelper.StringToByte(AValue));
2620 end;
2621
2622 procedure TSDOByteField.setVariant(
2623 const ABuffer: TSDOFieldBuffer;
2624 const AOffset: PtrUInt;
2625 const AValue: TSDOVariant
2626 );
2627 begin
2628 if VarIsNull(AValue) then
2629 setNull(ABuffer,AOffset)
2630 else
2631 setByte(ABuffer,AOffset,AValue);
2632 end;
2633
2634 { TSDODateField }
2635
getDatenull2636 function TSDODateField.getDate(
2637 const ABuffer : TSDOFieldBuffer;
2638 const AOffset : PtrUInt
2639 ) : TSDODate;
2640 var
2641 buff : PByte;
2642 begin
2643 buff := PByte(ABuffer);
2644 if ( AOffset <> 0 ) then
2645 Inc(buff,AOffset);
2646 if IsBitON(buff^,BIT_ORDER_NULL) then begin
2647 Result := ZERO_DATE;
2648 end else begin
2649 Inc(buff);
2650 Result := PSDODate(buff)^;
2651 end;
2652 end;
2653
getStringnull2654 function TSDODateField.getString(
2655 const ABuffer : TSDOFieldBuffer;
2656 const AOffset : PtrUInt
2657 ) : TSDOString;
2658 begin
2659 Result := TSDOConvertHelper.DateToString(getDate(ABuffer,AOffset));
2660 end;
2661
TSDODateField.getVariantnull2662 function TSDODateField.getVariant(
2663 const ABuffer: TSDOFieldBuffer;
2664 const AOffset: PtrUInt
2665 ) : TSDOVariant;
2666 begin
2667 if isNull(ABuffer,AOffset) then
2668 Result := Null
2669 else
2670 Result := NormalizeToUTC(getDate(ABuffer,AOffset));
2671 end;
2672
2673 procedure TSDODateField.setDate(
2674 const ABuffer : TSDOFieldBuffer;
2675 const AOffset : PtrUInt;
2676 const AValue : TSDODate
2677 );
2678 var
2679 buff : PByte;
2680 begin
2681 buff := PByte(ABuffer);
2682 if ( AOffset <> 0 ) then
2683 Inc(buff,AOffset);
2684 SetBit(buff^,BIT_ORDER_SET,True);
2685 SetBit(buff^,BIT_ORDER_NULL,False);
2686 Inc(buff);
2687 PSDODate(buff)^ := AValue;
2688 end;
2689
2690 procedure TSDODateField.setString(
2691 const ABuffer : TSDOFieldBuffer;
2692 const AOffset : PtrUInt;
2693 const AValue : TSDOString
2694 );
2695 begin
2696 setDate(ABuffer,AOffset,TSDOConvertHelper.StringToDate(AValue));
2697 end;
2698
2699 {$IFDEF HAS_SDO_CHAR}
2700 procedure TSDODateField.setVariant(
2701 const ABuffer: TSDOFieldBuffer;
2702 const AOffset: PtrUInt;
2703 const AValue: TSDOVariant
2704 );
2705 begin
2706 if VarIsNull(AValue) then
2707 setNull(ABuffer,AOffset)
2708 else
2709 setDate(ABuffer,AOffset,DateTimeToDateTimeRec(VarToDateTime(AValue)));
2710 end;
2711
2712 { TSDOCharField }
2713
getBooleannull2714 function TSDOCharField.getBoolean(
2715 const ABuffer: TSDOFieldBuffer;
2716 const AOffset: PtrUInt
2717 ) : TSDOBoolean;
2718 begin
2719 Result := TSDOConvertHelper.CharToBool(getCharacter(ABuffer,AOffset));
2720 end;
2721
getBytenull2722 function TSDOCharField.getByte(
2723 const ABuffer: TSDOFieldBuffer;
2724 const AOffset: PtrUInt
2725 ) : TSDOByte;
2726 begin
2727 Result := TSDOConvertHelper.CharToByte(getCharacter(ABuffer,AOffset));
2728 end;
2729
getCharacternull2730 function TSDOCharField.getCharacter(
2731 const ABuffer: TSDOFieldBuffer;
2732 const AOffset: PtrUInt
2733 ) : TSDOChar;
2734 var
2735 buff : PByte;
2736 begin
2737 buff := PByte(ABuffer);
2738 if ( AOffset <> 0 ) then
2739 Inc(buff,AOffset);
2740 if IsBitON(buff^,BIT_ORDER_NULL) then begin
2741 Result := #0;
2742 end else begin
2743 Inc(buff);
2744 Result := PSDOChar(buff)^;
2745 end;
2746 end;
2747
getIntegernull2748 function TSDOCharField.getInteger(
2749 const ABuffer: TSDOFieldBuffer;
2750 const AOffset: PtrUInt
2751 ) : TSDOInteger;
2752 begin
2753 Result := TSDOConvertHelper.CharToInteger(getCharacter(ABuffer,AOffset));
2754 end;
2755
getLongnull2756 function TSDOCharField.getLong(
2757 const ABuffer: TSDOFieldBuffer;
2758 const AOffset: PtrUInt
2759 ) : TSDOLong;
2760 begin
2761 Result := TSDOConvertHelper.CharToLong(getCharacter(ABuffer,AOffset));
2762 end;
2763
TSDOCharField.getShortnull2764 function TSDOCharField.getShort(
2765 const ABuffer: TSDOFieldBuffer;
2766 const AOffset: PtrUInt
2767 ) : TSDOShort;
2768 begin
2769 Result := TSDOConvertHelper.CharToShort(getCharacter(ABuffer,AOffset));
2770 end;
2771
TSDOCharField.getStringnull2772 function TSDOCharField.getString(
2773 const ABuffer: TSDOFieldBuffer;
2774 const AOffset: PtrUInt
2775 ) : TSDOString;
2776 begin
2777 Result := getCharacter(ABuffer,AOffset);
2778 end;
2779
getVariantnull2780 function TSDOCharField.getVariant(
2781 const ABuffer: TSDOFieldBuffer;
2782 const AOffset: PtrUInt
2783 ) : TSDOVariant;
2784 begin
2785 if isNull(ABuffer,AOffset) then
2786 Result := Null
2787 else
2788 Result := getCharacter(ABuffer,AOffset);
2789 end;
2790
2791 procedure TSDOCharField.setBoolean(
2792 const ABuffer: TSDOFieldBuffer;
2793 const AOffset: PtrUInt;
2794 const AValue: TSDOBoolean
2795 );
2796 begin
2797 setCharacter(ABuffer,AOffset,TSDOConvertHelper.BoolToChar(AValue));
2798 end;
2799
2800 procedure TSDOCharField.setByte(
2801 const ABuffer: TSDOFieldBuffer;
2802 const AOffset: PtrUInt;
2803 const AValue: TSDOByte
2804 );
2805 begin
2806 setCharacter(ABuffer,AOffset,TSDOConvertHelper.ByteToChar(AValue));
2807 end;
2808
2809 procedure TSDOCharField.setCharacter(
2810 const ABuffer: TSDOFieldBuffer;
2811 const AOffset: PtrUInt;
2812 const AValue: TSDOChar
2813 );
2814 var
2815 buff : PByte;
2816 begin
2817 buff := PByte(ABuffer);
2818 if ( AOffset <> 0 ) then
2819 Inc(buff,AOffset);
2820 SetBit(buff^,BIT_ORDER_SET,True);
2821 SetBit(buff^,BIT_ORDER_NULL,False);
2822 Inc(buff);
2823 PSDOChar(buff)^ := AValue;
2824 end;
2825
2826 procedure TSDOCharField.setInteger(
2827 const ABuffer: TSDOFieldBuffer;
2828 const AOffset: PtrUInt;
2829 const AValue: TSDOInteger
2830 );
2831 begin
2832 setCharacter(ABuffer,AOffset,TSDOConvertHelper.IntegerToChar(AValue));
2833 end;
2834
2835 procedure TSDOCharField.setLong(
2836 const ABuffer: TSDOFieldBuffer;
2837 const AOffset: PtrUInt;
2838 const AValue: TSDOLong
2839 );
2840 begin
2841 setCharacter(ABuffer,AOffset,TSDOConvertHelper.LongToChar(AValue));
2842 end;
2843
2844 procedure TSDOCharField.setShort(
2845 const ABuffer: TSDOFieldBuffer;
2846 const AOffset: PtrUInt;
2847 const AValue: TSDOShort);
2848 begin
2849 setCharacter(ABuffer,AOffset,TSDOConvertHelper.ShortToChar(AValue));
2850 end;
2851
2852 procedure TSDOCharField.setString(
2853 const ABuffer: TSDOFieldBuffer;
2854 const AOffset: PtrUInt;
2855 const AValue: TSDOString
2856 );
2857 begin
2858 setCharacter(ABuffer,AOffset,TSDOConvertHelper.StringToChar(AValue));
2859 end;
2860 {$ENDIF HAS_SDO_CHAR}
2861
2862
2863 {$IFDEF HAS_SDO_CURRENCY}
TSDOCurrencyField.getStringnull2864 function TSDOCurrencyField.getString(
2865 const ABuffer : TSDOFieldBuffer;
2866 const AOffset : PtrUInt
2867 ) : TSDOString;
2868 begin
2869 Result := TSDOConvertHelper.CurrencyToString(getCurrency(ABuffer,AOffset));
2870 end;
2871
2872 procedure TSDOCurrencyField.setString(
2873 const ABuffer : TSDOFieldBuffer;
2874 const AOffset : PtrUInt;
2875 const AValue : TSDOString
2876 );
2877 begin
2878 setCurrency(ABuffer,AOffset,TSDOConvertHelper.StringToCurrency(AValue));
2879 end;
2880
getCurrencynull2881 function TSDOCurrencyField.getCurrency(
2882 const ABuffer : TSDOFieldBuffer;
2883 const AOffset : PtrUInt
2884 ) : TSDOCurrency;
2885 var
2886 buff : PByte;
2887 begin
2888 buff := PByte(ABuffer);
2889 if ( AOffset <> 0 ) then
2890 Inc(buff,AOffset);
2891 if IsBitON(buff^,BIT_ORDER_NULL) then begin
2892 Result := 0;
2893 end else begin
2894 Inc(buff);
2895 Result := PSDOCurrency(buff)^;
2896 end;
2897 end;
2898
2899 procedure TSDOCurrencyField.setCurrency(
2900 const ABuffer : TSDOFieldBuffer;
2901 const AOffset : PtrUInt;
2902 const AValue : TSDOCurrency
2903 );
2904 var
2905 buff : PByte;
2906 begin
2907 buff := PByte(ABuffer);
2908 if ( AOffset <> 0 ) then
2909 Inc(buff,AOffset);
2910 SetBit(buff^,BIT_ORDER_SET,True);
2911 SetBit(buff^,BIT_ORDER_NULL,False);
2912 Inc(buff);
2913 PSDOCurrency(buff)^ := AValue;
2914 end;
2915
getDoublenull2916 function TSDOCurrencyField.getDouble(
2917 const ABuffer : TSDOFieldBuffer;
2918 const AOffset : PtrUInt
2919 ) : TSDODouble;
2920 begin
2921 Result := getCurrency(ABuffer,AOffset);
2922 end;
2923
2924 procedure TSDOCurrencyField.setDouble(
2925 const ABuffer : TSDOFieldBuffer;
2926 const AOffset : PtrUInt;
2927 const AValue : TSDODouble
2928 );
2929 begin
2930 setCurrency(ABuffer,AOffset,AValue);
2931 end;
2932
TSDOCurrencyField.getFloatnull2933 function TSDOCurrencyField.getFloat(
2934 const ABuffer : TSDOFieldBuffer;
2935 const AOffset : PtrUInt
2936 ) : TSDOFloat;
2937 begin
2938 Result := getCurrency(ABuffer,AOffset);
2939 end;
2940
2941 procedure TSDOCurrencyField.setFloat(
2942 const ABuffer : TSDOFieldBuffer;
2943 const AOffset : PtrUInt;
2944 const AValue : TSDOFloat
2945 );
2946 begin
2947 setCurrency(ABuffer,AOffset,AValue);
2948 end;
2949 {$ENDIF HAS_SDO_CURRENCY}
2950
2951
2952 {$IFDEF HAS_SDO_LONG}
2953 procedure TSDOCharField.setVariant(
2954 const ABuffer: TSDOFieldBuffer;
2955 const AOffset: PtrUInt;
2956 const AValue: TSDOVariant
2957 );
2958 begin
2959 if VarIsNull(AValue) then begin
2960 setNull(ABuffer,AOffset)
2961 end else begin
2962 setCharacter(ABuffer,AOffset,AValue);
2963 end;
2964 end;
2965
2966 { TSDOLongField }
2967
getBooleannull2968 function TSDOLongField.getBoolean(
2969 const ABuffer: TSDOFieldBuffer;
2970 const AOffset: PtrUInt
2971 ) : TSDOBoolean;
2972 begin
2973 Result := TSDOConvertHelper.LongToBool(getLong(ABuffer,AOffset));
2974 end;
2975
TSDOLongField.getBytenull2976 function TSDOLongField.getByte(
2977 const ABuffer: TSDOFieldBuffer;
2978 const AOffset: PtrUInt
2979 ) : TSDOByte;
2980 begin
2981 Result := getLong(ABuffer,AOffset);
2982 end;
2983
getCharacternull2984 function TSDOLongField.getCharacter(
2985 const ABuffer: TSDOFieldBuffer;
2986 const AOffset: PtrUInt
2987 ) : TSDOChar;
2988 begin
2989 Result := TSDOConvertHelper.LongToChar(getLong(ABuffer,AOffset));
2990 end;
2991
getIntegernull2992 function TSDOLongField.getInteger(
2993 const ABuffer: TSDOFieldBuffer;
2994 const AOffset: PtrUInt
2995 ) : TSDOInteger;
2996 begin
2997 Result := getLong(ABuffer,AOffset);
2998 end;
2999
getLongnull3000 function TSDOLongField.getLong(
3001 const ABuffer: TSDOFieldBuffer;
3002 const AOffset: PtrUInt
3003 ) : TSDOLong;
3004 var
3005 buff : PByte;
3006 begin
3007 buff := PByte(ABuffer);
3008 if ( AOffset <> 0 ) then
3009 Inc(buff,AOffset);
3010 if IsBitON(buff^,BIT_ORDER_NULL) then begin
3011 Result := 0;
3012 end else begin
3013 Inc(buff);
3014 Result := PSDOLong(buff)^;
3015 end;
3016 end;
3017
getShortnull3018 function TSDOLongField.getShort(
3019 const ABuffer: TSDOFieldBuffer;
3020 const AOffset: PtrUInt
3021 ) : TSDOShort;
3022 begin
3023 Result := getLong(ABuffer,AOffset);
3024 end;
3025
getStringnull3026 function TSDOLongField.getString(
3027 const ABuffer: TSDOFieldBuffer;
3028 const AOffset: PtrUInt
3029 ) : TSDOString;
3030 begin
3031 Result := TSDOConvertHelper.LongToString(getLong(ABuffer,AOffset));
3032 end;
3033
getVariantnull3034 function TSDOLongField.getVariant(
3035 const ABuffer: TSDOFieldBuffer;
3036 const AOffset: PtrUInt
3037 ) : TSDOVariant;
3038 begin
3039 if isNull(ABuffer,AOffset) then
3040 Result := Null
3041 else
3042 Result := getLong(ABuffer,AOffset);
3043 end;
3044
3045 procedure TSDOLongField.setBoolean(
3046 const ABuffer: TSDOFieldBuffer;
3047 const AOffset: PtrUInt;
3048 const AValue: TSDOBoolean
3049 );
3050 begin
3051 setLong(ABuffer,AOffset,TSDOConvertHelper.BoolToLong(AValue));
3052 end;
3053
3054 procedure TSDOLongField.setByte(
3055 const ABuffer: TSDOFieldBuffer;
3056 const AOffset: PtrUInt;
3057 const AValue: TSDOByte
3058 );
3059 begin
3060 setLong(ABuffer,AOffset,AValue);
3061 end;
3062
3063 procedure TSDOLongField.setCharacter(
3064 const ABuffer: TSDOFieldBuffer;
3065 const AOffset: PtrUInt;
3066 const AValue: TSDOChar
3067 );
3068 begin
3069 setLong(ABuffer,AOffset,TSDOConvertHelper.CharToLong(AValue));
3070 end;
3071
3072 procedure TSDOLongField.setInteger(
3073 const ABuffer: TSDOFieldBuffer;
3074 const AOffset: PtrUInt;
3075 const AValue: TSDOInteger
3076 );
3077 begin
3078 setLong(ABuffer,AOffset,AValue);
3079 end;
3080
3081 procedure TSDOLongField.setLong(
3082 const ABuffer: TSDOFieldBuffer;
3083 const AOffset: PtrUInt;
3084 const AValue: TSDOLong
3085 );
3086 var
3087 buff : PByte;
3088 begin
3089 buff := PByte(ABuffer);
3090 if ( AOffset <> 0 ) then
3091 Inc(buff,AOffset);
3092 SetBit(buff^,BIT_ORDER_SET,True);
3093 SetBit(buff^,BIT_ORDER_NULL,False);
3094 Inc(buff);
3095 PSDOLong(buff)^ := AValue;
3096 end;
3097
3098 procedure TSDOLongField.setShort(
3099 const ABuffer: TSDOFieldBuffer;
3100 const AOffset: PtrUInt;
3101 const AValue: TSDOShort);
3102 begin
3103 setLong(ABuffer,AOffset,AValue);
3104 end;
3105
3106 procedure TSDOLongField.setString(
3107 const ABuffer: TSDOFieldBuffer;
3108 const AOffset: PtrUInt;
3109 const AValue: TSDOString
3110 );
3111 begin
3112 setLong(ABuffer,AOffset,TSDOConvertHelper.StringToLong(AValue));
3113 end;
3114 {$ENDIF HAS_SDO_LONG}
3115
3116 {$IFDEF HAS_SDO_SHORT}
3117 procedure TSDOLongField.setVariant(
3118 const ABuffer: TSDOFieldBuffer;
3119 const AOffset: PtrUInt;
3120 const AValue: TSDOVariant
3121 );
3122 begin
3123 if VarIsNull(AValue) then
3124 setNull(ABuffer,AOffset)
3125 else
3126 setLong(ABuffer,AOffset,AValue);
3127 end;
3128
3129 { TSDOShortField }
3130
TSDOShortField.getBooleannull3131 function TSDOShortField.getBoolean(
3132 const ABuffer: TSDOFieldBuffer;
3133 const AOffset: PtrUInt
3134 ) : TSDOBoolean;
3135 begin
3136 Result := TSDOConvertHelper.ShortToBool(getShort(ABuffer,AOffset));
3137 end;
3138
getBytenull3139 function TSDOShortField.getByte(
3140 const ABuffer: TSDOFieldBuffer;
3141 const AOffset: PtrUInt
3142 ) : TSDOByte;
3143 begin
3144 Result := getShort(ABuffer,AOffset);
3145 end;
3146
getCharacternull3147 function TSDOShortField.getCharacter(
3148 const ABuffer: TSDOFieldBuffer;
3149 const AOffset: PtrUInt
3150 ) : TSDOChar;
3151 begin
3152 Result := TSDOConvertHelper.ShortToChar(getShort(ABuffer,AOffset));
3153 end;
3154
TSDOShortField.getIntegernull3155 function TSDOShortField.getInteger(
3156 const ABuffer: TSDOFieldBuffer;
3157 const AOffset: PtrUInt
3158 ) : TSDOInteger;
3159 begin
3160 Result := getShort(ABuffer,AOffset);
3161 end;
3162
getLongnull3163 function TSDOShortField.getLong(
3164 const ABuffer: TSDOFieldBuffer;
3165 const AOffset: PtrUInt
3166 ) : TSDOLong;
3167 begin
3168 Result := getShort(ABuffer,AOffset);
3169 end;
3170
getShortnull3171 function TSDOShortField.getShort(
3172 const ABuffer: TSDOFieldBuffer;
3173 const AOffset: PtrUInt
3174 ) : TSDOShort;
3175 var
3176 buff : PByte;
3177 begin
3178 buff := PByte(ABuffer);
3179 if ( AOffset <> 0 ) then
3180 Inc(buff,AOffset);
3181 if IsBitON(buff^,BIT_ORDER_NULL) then begin
3182 Result := 0;
3183 end else begin
3184 Inc(buff);
3185 Result := PSDOShort(buff)^;
3186 end;
3187 end;
3188
getStringnull3189 function TSDOShortField.getString(
3190 const ABuffer: TSDOFieldBuffer;
3191 const AOffset: PtrUInt
3192 ) : TSDOString;
3193 begin
3194 Result := TSDOConvertHelper.ShortToString(getShort(ABuffer,AOffset));
3195 end;
3196
TSDOShortField.getVariantnull3197 function TSDOShortField.getVariant(
3198 const ABuffer: TSDOFieldBuffer;
3199 const AOffset: PtrUInt
3200 ) : TSDOVariant;
3201 begin
3202 if isNull(ABuffer,AOffset) then
3203 Result := Null
3204 else
3205 Result := getShort(ABuffer,AOffset);
3206 end;
3207
3208 procedure TSDOShortField.setBoolean(
3209 const ABuffer: TSDOFieldBuffer;
3210 const AOffset: PtrUInt;
3211 const AValue: TSDOBoolean
3212 );
3213 begin
3214 setShort(ABuffer,AOffset,TSDOConvertHelper.BooltoShort(AValue));
3215 end;
3216
3217 procedure TSDOShortField.setByte(
3218 const ABuffer: TSDOFieldBuffer;
3219 const AOffset: PtrUInt;
3220 const AValue: TSDOByte
3221 );
3222 begin
3223 setShort(ABuffer,AOffset,AValue);
3224 end;
3225
3226 procedure TSDOShortField.setCharacter(
3227 const ABuffer: TSDOFieldBuffer;
3228 const AOffset: PtrUInt;
3229 const AValue: TSDOChar
3230 );
3231 begin
3232 setShort(ABuffer,AOffset,TSDOConvertHelper.ChartoShort(AValue));
3233 end;
3234
3235 procedure TSDOShortField.setInteger(
3236 const ABuffer: TSDOFieldBuffer;
3237 const AOffset: PtrUInt;
3238 const AValue: TSDOInteger
3239 );
3240 begin
3241 setShort(ABuffer,AOffset,AValue);
3242 end;
3243
3244 procedure TSDOShortField.setLong(
3245 const ABuffer: TSDOFieldBuffer;
3246 const AOffset: PtrUInt;
3247 const AValue: TSDOLong
3248 );
3249 begin
3250 setShort(ABuffer,AOffset,AValue);
3251 end;
3252
3253 procedure TSDOShortField.setShort(
3254 const ABuffer: TSDOFieldBuffer;
3255 const AOffset: PtrUInt;
3256 const AValue: TSDOShort
3257 );
3258 var
3259 buff : PByte;
3260 begin
3261 buff := PByte(ABuffer);
3262 if ( AOffset <> 0 ) then
3263 Inc(buff,AOffset);
3264 SetBit(buff^,BIT_ORDER_SET,True);
3265 SetBit(buff^,BIT_ORDER_NULL,False);
3266 Inc(buff);
3267 PSDOShort(buff)^ := AValue;
3268 end;
3269
3270 procedure TSDOShortField.setString(
3271 const ABuffer: TSDOFieldBuffer;
3272 const AOffset: PtrUInt;
3273 const AValue: TSDOString
3274 );
3275 begin
3276 setShort(ABuffer,AOffset,TSDOConvertHelper.StringtoShort(AValue));
3277 end;
3278 {$ENDIF HAS_SDO_SHORT}
3279
3280
3281 {$IFDEF HAS_SDO_BYTES}
3282 procedure TSDOShortField.setVariant(
3283 const ABuffer: TSDOFieldBuffer;
3284 const AOffset: PtrUInt;
3285 const AValue: TSDOVariant
3286 );
3287 begin
3288 if VarIsNull(AValue) then
3289 setNull(ABuffer,AOffset)
3290 else
3291 setShort(ABuffer,AOffset,AValue);
3292 end;
3293
3294 { TSDOBytesField }
3295
3296 procedure TSDOBytesField.FreeBuffer(const ABuffer: TSDOFieldBuffer);
3297 var
3298 rawBuffer : PByte;
3299 valBuffer : PPSDOBytes;
3300 begin
3301 rawBuffer := PByte(ABuffer);
3302 if IsBitON(rawBuffer^,BIT_ORDER_BUFFER) then begin
3303 Inc(rawBuffer);
3304 valBuffer := PPSDOBytes(rawBuffer);
3305 SetLength(valBuffer^^,0);
3306 FreeMem(valBuffer^,SizeOf(PPSDOBytes));
3307 valBuffer^ := nil;
3308 Dec(rawBuffer);
3309 SetBit(rawBuffer^,BIT_ORDER_BUFFER,False);
3310 end;
3311 end;
3312
TSDOBytesField.getBytesnull3313 function TSDOBytesField.getBytes(
3314 const ABuffer: TSDOFieldBuffer;
3315 const AOffset: PtrUInt
3316 ) : TSDOBytes;
3317 var
3318 buff : PByte;
3319 begin
3320 buff := PByte(ABuffer);
3321 if ( AOffset <> 0 ) then
3322 Inc(buff,AOffset);
3323 if IsBitON(buff^,BIT_ORDER_NULL) then begin
3324 Result := nil;
3325 end else begin
3326 if IsBitON(buff^,BIT_ORDER_BUFFER) then begin
3327 Inc(buff);
3328 Result := Copy(PPSDOBytes(buff)^^);
3329 end else begin
3330 Result := nil;
3331 end;
3332 end;
3333 end;
3334
TSDOBytesField.getStringnull3335 function TSDOBytesField.getString(
3336 const ABuffer: TSDOFieldBuffer;
3337 const AOffset: PtrUInt
3338 ) : TSDOString;
3339 begin
3340 Result := TSDOConvertHelper.BytesToString(getBytes(ABuffer,AOffset));
3341 end;
3342
getVariantnull3343 function TSDOBytesField.getVariant(
3344 const ABuffer: TSDOFieldBuffer;
3345 const AOffset: PtrUInt
3346 ) : TSDOVariant;
3347 begin
3348 if isNull(ABuffer,AOffset) then
3349 Result := Null
3350 else
3351 Result := getBytes(ABuffer,AOffset);
3352 end;
3353
3354 procedure TSDOBytesField.setBytes(
3355 const ABuffer: TSDOFieldBuffer;
3356 const AOffset: PtrUInt;
3357 AValue: TSDOBytes
3358 );
3359 var
3360 rawBuffer : PByte;
3361 valBuffer : PPSDOBytes;
3362 begin
3363 rawBuffer := PByte(ABuffer);
3364 if ( AOffset <> 0 ) then
3365 Inc(rawBuffer,AOffset);
3366 SetBit(rawBuffer^,BIT_ORDER_SET,True);
3367 if IsBitON(rawBuffer^,BIT_ORDER_BUFFER) then begin
3368 SetBit(rawBuffer^,BIT_ORDER_NULL,False);
3369 Inc(rawBuffer);
3370 valBuffer := PPSDOBytes(rawBuffer);
3371 end else begin;
3372 SetBit(rawBuffer^,BIT_ORDER_NULL,False);
3373 SetBit(rawBuffer^,BIT_ORDER_BUFFER,True);
3374 Inc(rawBuffer);
3375 valBuffer := PPSDOBytes(rawBuffer);
3376 GetMem(valBuffer^,SizeOf(PPSDOBytes));
3377 FillChar(valBuffer^^,SizeOf(TSDOBytes),#0);
3378 end;
3379 valBuffer^^ := Copy(AValue);
3380 end;
3381
3382 procedure TSDOBytesField.setNull(const ABuffer: TSDOFieldBuffer; const AOffset: PtrUInt);
3383 var
3384 rawBuffer : PByte;
3385 begin
3386 rawBuffer := PByte(ABuffer);
3387 if ( AOffset <> 0 ) then
3388 Inc(rawBuffer,AOffset);
3389 if IsBitON(rawBuffer^,BIT_ORDER_BUFFER) then begin
3390 FreeBuffer(rawBuffer);
3391 end;
3392 inherited setNull(ABuffer,AOffset);
3393 end;
3394
3395 procedure TSDOBytesField.setString(
3396 const ABuffer: TSDOFieldBuffer;
3397 const AOffset: PtrUInt;
3398 const AValue: TSDOString
3399 );
3400 begin
3401 setBytes(ABuffer,AOffset,TSDOConvertHelper.StringToBytes(AValue));
3402 end;
3403 {$ENDIF HAS_SDO_BYTES}
3404
3405 {$IFDEF HAS_SDO_DOUBLE}
getStringnull3406 function TSDODoubleField.getString(
3407 const ABuffer : TSDOFieldBuffer;
3408 const AOffset : PtrUInt
3409 ) : TSDOString;
3410 begin
3411 Result := TSDOConvertHelper.FloatToString(getDouble(ABuffer,AOffset));
3412 end;
3413
3414 procedure TSDODoubleField.setString(
3415 const ABuffer : TSDOFieldBuffer;
3416 const AOffset : PtrUInt;
3417 const AValue : TSDOString
3418 );
3419 begin
3420 setDouble(ABuffer,AOffset,TSDOConvertHelper.StringToFloat(AValue));
3421 end;
3422
getDoublenull3423 function TSDODoubleField.getDouble(
3424 const ABuffer : TSDOFieldBuffer;
3425 const AOffset : PtrUInt
3426 ) : TSDODouble;
3427 var
3428 buff : PByte;
3429 begin
3430 buff := PByte(ABuffer);
3431 if ( AOffset <> 0 ) then
3432 Inc(buff,AOffset);
3433 if IsBitON(buff^,BIT_ORDER_NULL) then begin
3434 Result := 0;
3435 end else begin
3436 Inc(buff);
3437 Result := PSDODouble(buff)^;
3438 end;
3439 end;
3440
3441 procedure TSDODoubleField.setDouble(
3442 const ABuffer : TSDOFieldBuffer;
3443 const AOffset : PtrUInt;
3444 const AValue : TSDODouble
3445 );
3446 var
3447 buff : PByte;
3448 begin
3449 buff := PByte(ABuffer);
3450 if ( AOffset <> 0 ) then
3451 Inc(buff,AOffset);
3452 SetBit(buff^,BIT_ORDER_SET,True);
3453 SetBit(buff^,BIT_ORDER_NULL,False);
3454 Inc(buff);
3455 PSDODouble(buff)^ := AValue;
3456 end;
3457
getCurrencynull3458 function TSDODoubleField.getCurrency(
3459 const ABuffer : TSDOFieldBuffer;
3460 const AOffset : PtrUInt
3461 ) : TSDOCurrency;
3462 begin
3463 Result := getDouble(ABuffer,AOffset);
3464 end;
3465
3466 procedure TSDODoubleField.setCurrency(
3467 const ABuffer : TSDOFieldBuffer;
3468 const AOffset : PtrUInt;
3469 const AValue : TSDOCurrency
3470 );
3471 begin
3472 setDouble(ABuffer,AOffset,AValue);
3473 end;
3474
getFloatnull3475 function TSDODoubleField.getFloat(
3476 const ABuffer : TSDOFieldBuffer;
3477 const AOffset : PtrUInt
3478 ) : TSDOFloat;
3479 begin
3480 Result := getDouble(ABuffer,AOffset);
3481 end;
3482
3483 procedure TSDODoubleField.setFloat(
3484 const ABuffer : TSDOFieldBuffer;
3485 const AOffset : PtrUInt;
3486 const AValue : TSDOFloat
3487 );
3488 begin
3489 setDouble(ABuffer,AOffset,AValue);
3490 end;
3491 {$ENDIF HAS_SDO_DOUBLE}
3492
3493 {$IFDEF HAS_SDO_FLOAT}
TSDOFloatField.getStringnull3494 function TSDOFloatField.getString(
3495 const ABuffer : TSDOFieldBuffer;
3496 const AOffset : PtrUInt
3497 ) : TSDOString;
3498 begin
3499 Result := TSDOConvertHelper.FloatToString(getFloat(ABuffer,AOffset));
3500 end;
3501
3502 procedure TSDOFloatField.setString(
3503 const ABuffer : TSDOFieldBuffer;
3504 const AOffset : PtrUInt;
3505 const AValue : TSDOString
3506 );
3507 begin
3508 setFloat(ABuffer,AOffset,TSDOConvertHelper.StringToFloat(AValue));
3509 end;
3510
TSDOFloatField.getFloatnull3511 function TSDOFloatField.getFloat(
3512 const ABuffer : TSDOFieldBuffer;
3513 const AOffset : PtrUInt
3514 ) : TSDOFloat;
3515 var
3516 buff : PByte;
3517 begin
3518 buff := PByte(ABuffer);
3519 if ( AOffset <> 0 ) then
3520 Inc(buff,AOffset);
3521 if IsBitON(buff^,BIT_ORDER_NULL) then begin
3522 Result := 0;
3523 end else begin
3524 Inc(buff);
3525 Result := PSDOFloat(buff)^;
3526 end;
3527 end;
3528
3529 procedure TSDOFloatField.setFloat(
3530 const ABuffer : TSDOFieldBuffer;
3531 const AOffset : PtrUInt;
3532 const AValue : TSDOFloat
3533 );
3534 var
3535 buff : PByte;
3536 begin
3537 buff := PByte(ABuffer);
3538 if ( AOffset <> 0 ) then
3539 Inc(buff,AOffset);
3540 SetBit(buff^,BIT_ORDER_SET,True);
3541 SetBit(buff^,BIT_ORDER_NULL,False);
3542 Inc(buff);
3543 PSDOFloat(buff)^ := AValue;
3544 end;
3545
getCurrencynull3546 function TSDOFloatField.getCurrency(
3547 const ABuffer : TSDOFieldBuffer;
3548 const AOffset : PtrUInt
3549 ) : TSDOCurrency;
3550 begin
3551 Result := getFloat(ABuffer,AOffset);
3552 end;
3553
3554 procedure TSDOFloatField.setCurrency(
3555 const ABuffer : TSDOFieldBuffer;
3556 const AOffset : PtrUInt;
3557 const AValue : TSDOCurrency
3558 );
3559 begin
3560 setFloat(ABuffer,AOffset,AValue);
3561 end;
3562
getDoublenull3563 function TSDOFloatField.getDouble(
3564 const ABuffer : TSDOFieldBuffer;
3565 const AOffset : PtrUInt
3566 ) : TSDODouble;
3567 begin
3568 Result := getFloat(ABuffer,AOffset);
3569 end;
3570
3571 procedure TSDOFloatField.setDouble(
3572 const ABuffer : TSDOFieldBuffer;
3573 const AOffset : PtrUInt;
3574 const AValue : TSDODouble
3575 );
3576 begin
3577 setFloat(ABuffer,AOffset,AValue);
3578 end;
3579 {$ENDIF HAS_SDO_FLOAT}
3580
3581 {$WARNINGS OFF}
getVariantnull3582 function TSDOBaseField.getVariant(
3583 const ABuffer: TSDOFieldBuffer;
3584 const AOffset: PtrUInt
3585 ) : TSDOVariant;
3586 begin
3587 raise ESDOInvalidConversionException.Create(ClassName);
3588 end;
3589
3590 procedure TSDOBaseField.setVariant(
3591 const ABuffer: TSDOFieldBuffer;
3592 const AOffset: PtrUInt;
3593 const AValue: TSDOVariant
3594 );
3595 begin
3596 raise ESDOInvalidConversionException.Create(ClassName);
3597 end;
3598 {$WARNINGS ON}
3599
3600 procedure TSDOBytesField.setVariant(
3601 const ABuffer: TSDOFieldBuffer;
3602 const AOffset: PtrUInt;
3603 const AValue: TSDOVariant
3604 );
3605 var
3606 tempValue : TSDOBytes;
3607 i, c : Integer;
3608 begin
3609 if VarIsNull(AValue) or VarIsEmpty(AValue) then begin
3610 setNull(ABuffer,AOffset)
3611 end else begin
3612 if not VarIsArray(AValue) then
3613 raise ESDOInvalidConversionException.Create(ClassName);
3614 c := VarArrayHighBound(AValue,1) - VarArrayLowBound(AValue,1) + 1;
3615 if (c > 0) then begin
3616 SetLength(tempValue,c);
3617 for i := VarArrayLowBound(AValue,1) to VarArrayHighBound(AValue,1) do
3618 tempValue[i] := AValue[i];
3619 end else begin
3620 tempValue := nil;
3621 end;
3622 setBytes(ABuffer,AOffset,tempValue);
3623 end;
3624 end;
3625
getVariantnull3626 function TSDOCurrencyField.getVariant(
3627 const ABuffer: TSDOFieldBuffer;
3628 const AOffset: PtrUInt
3629 ) : TSDOVariant;
3630 begin
3631 if isNull(ABuffer,AOffset) then
3632 Result := Null
3633 else
3634 Result := getCurrency(ABuffer,AOffset);
3635 end;
3636
3637 procedure TSDOCurrencyField.setVariant(
3638 const ABuffer: TSDOFieldBuffer;
3639 const AOffset: PtrUInt;
3640 const AValue: TSDOVariant
3641 );
3642 begin
3643 if VarIsNull(AValue) then
3644 setNull(ABuffer,AOffset)
3645 else
3646 setCurrency(ABuffer,AOffset,AValue);
3647 end;
3648
getVariantnull3649 function TSDODoubleField.getVariant(
3650 const ABuffer: TSDOFieldBuffer;
3651 const AOffset: PtrUInt
3652 ) : TSDOVariant;
3653 begin
3654 if isNull(ABuffer,AOffset) then
3655 Result := Null
3656 else
3657 Result := getDouble(ABuffer,AOffset);
3658 end;
3659
3660 procedure TSDODoubleField.setVariant(
3661 const ABuffer: TSDOFieldBuffer;
3662 const AOffset: PtrUInt;
3663 const AValue: TSDOVariant
3664 );
3665 begin
3666 if VarIsNull(AValue) then
3667 setNull(ABuffer,AOffset)
3668 else
3669 setDouble(ABuffer,AOffset,AValue);
3670 end;
3671
TSDOFloatField.getVariantnull3672 function TSDOFloatField.getVariant(
3673 const ABuffer: TSDOFieldBuffer;
3674 const AOffset: PtrUInt
3675 ) : TSDOVariant;
3676 begin
3677 if isNull(ABuffer,AOffset) then
3678 Result := Null
3679 else
3680 Result := getFloat(ABuffer,AOffset);
3681 end;
3682
3683 procedure TSDOFloatField.setVariant(
3684 const ABuffer: TSDOFieldBuffer;
3685 const AOffset: PtrUInt;
3686 const AValue: TSDOVariant
3687 );
3688 begin
3689 if VarIsNull(AValue) then
3690 setNull(ABuffer,AOffset)
3691 else
3692 setFloat(ABuffer,AOffset,AValue);
3693 end;
3694
3695 initialization
3696 PrepareMap();
3697
3698 finalization
3699 UnprepareMap();
3700
3701 end.
3702
3703