summaryrefslogtreecommitdiff
path: root/fpcsrc/tests/webtbs/tw3227.pp
blob: 64c185b2b4b2d7d99b0dd43f4b0800b146a15957 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
{ Source provided for Free Pascal Bug Report 3227 }
{ Submitted by "mickaël leduque" on  2004-08-03 }
{ e-mail: mickael.leduque@laposte.net }
uses Variants;


type
  TGffVarType           = (

    gffBYTE,            // 0

    gffCHAR,            // 1

    gffWORD,            // 2

    gffSHORT,           // 3

    gffDWORD,           // 4

    gffINT,             // 5

    gffDWORD64,         // 6

    gffINT64,           // 7

    gffFLOAT,           // 8

    gffDOUBLE,          // 9

    gffVoid,            // 13

    gffStruct,          // 14

    gffList             // 15

  );

  TGffVarData           = record

    AsVoid              : array of Char;

    case TGffVarType of

      gffBYTE           : (AsByte: Byte);

      gffCHAR           : (AsChar: Shortint);

      gffWORD           : (AsWord: Word);

      gffSHORT          : (AsShort: Smallint);

      gffDWORD          : (AsDWord: Longword);

      gffINT            : (AsInt: Longint);

      gffDWORD64,

      gffINT64          : (AsInt64: Int64);

      gffFLOAT          : (AsFloat: Single);

      gffDOUBLE         : (AsDouble: Double);

  end;






var     FType : TGffVarType;

        Machin : variant;
        Data : TGffVarData;

begin
SetLength(Data.AsVoid,3);
Data.AsVoid[0]:='b';
Data.AsVoid[1]:='c';
Data.asFloat:=0.0;
FType:=gffBYTE;

  case FType of

    gffBYTE:

      Machin            := Data.AsByte;

    gffCHAR:

      Machin            := Data.AsChar;

    gffWORD:

      Machin            := Data.AsWord;

    gffSHORT:

      Machin            := Data.AsShort;

    gffDWORD:

      Machin            := Data.AsDWord;

    gffINT:

      Machin            := Data.AsInt;

    gffDWORD64, gffINT64:

      Machin            := Data.AsInt64;

    gffFLOAT:

      Machin            := Data.AsFloat;

    gffDOUBLE:

      Machin            := Data.AsDouble;

    gffVoid:

      Machin            := Data.AsVoid;

  end;

end.