|
@@ -0,0 +1,61 @@
|
|
|
+program tw38429;
|
|
|
+
|
|
|
+{$mode objfpc}{$h+}
|
|
|
+
|
|
|
+uses
|
|
|
+ SysUtils, Variants, uw38429;
|
|
|
+
|
|
|
+var
|
|
|
+ v, d: Variant;
|
|
|
+ I: Integer = 42;
|
|
|
+begin
|
|
|
+ Writeln('Test VarAsType');
|
|
|
+ d := I;
|
|
|
+ try
|
|
|
+ v := VarAsType(d, varMyVar);
|
|
|
+ except
|
|
|
+ on e: exception do begin
|
|
|
+ WriteLn('cast ', VarTypeAsText(VarType(d)), ' to ',VarTypeAsText(varMyVar),
|
|
|
+ ' raises ', e.ClassName, ' with message: ', e.Message);
|
|
|
+ Halt(1);
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+ WriteLn('now v is ', VarTypeAsText(VarType(v)));
|
|
|
+ VarClear(d);
|
|
|
+ try
|
|
|
+ d := VarAsType(v, varInteger);
|
|
|
+ except
|
|
|
+ on e: exception do begin
|
|
|
+ WriteLn('cast ', VarTypeAsText(VarType(v)), ' to ',VarTypeAsText(varInteger),
|
|
|
+ ' raises ', e.ClassName, ' with message: ', e.Message);
|
|
|
+ Halt(2);
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+ WriteLn('now d is ', VarTypeAsText(VarType(d)));
|
|
|
+
|
|
|
+ { also test VarCast from #20849 }
|
|
|
+ Writeln('Test VarCast');
|
|
|
+ d := I;
|
|
|
+ try
|
|
|
+ VarCast(v, d, varMyVar);
|
|
|
+ except
|
|
|
+ on e: exception do begin
|
|
|
+ WriteLn('cast ', VarTypeAsText(VarType(d)), ' to ',VarTypeAsText(varMyVar),
|
|
|
+ ' raises ', e.ClassName, ' with message: ', e.Message);
|
|
|
+ Halt(3);
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+ WriteLn('now v is ', VarTypeAsText(VarType(v)));
|
|
|
+ VarClear(d);
|
|
|
+ try
|
|
|
+ VarCast(d, v, varInteger);
|
|
|
+ except
|
|
|
+ on e: exception do begin
|
|
|
+ WriteLn('cast ', VarTypeAsText(VarType(v)), ' to ',VarTypeAsText(varInteger),
|
|
|
+ ' raises ', e.ClassName, ' with message: ', e.Message);
|
|
|
+ Halt(4);
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+ WriteLn('now d is ', VarTypeAsText(VarType(d)));
|
|
|
+end.
|
|
|
+
|