|
@@ -136,6 +136,9 @@ type
|
|
function AsBoolean: boolean;
|
|
function AsBoolean: boolean;
|
|
function AsCurrency: Currency;
|
|
function AsCurrency: Currency;
|
|
function AsInteger: Integer;
|
|
function AsInteger: Integer;
|
|
|
|
+ function AsChar: Char; inline;
|
|
|
|
+ function AsAnsiChar: AnsiChar;
|
|
|
|
+ function AsWideChar: WideChar;
|
|
function AsInt64: Int64;
|
|
function AsInt64: Int64;
|
|
function AsUInt64: QWord;
|
|
function AsUInt64: QWord;
|
|
function AsInterface: IInterface;
|
|
function AsInterface: IInterface;
|
|
@@ -1948,6 +1951,31 @@ begin
|
|
raise EInvalidCast.Create(SErrInvalidTypecast);
|
|
raise EInvalidCast.Create(SErrInvalidTypecast);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+function TValue.AsAnsiChar: AnsiChar;
|
|
|
|
+begin
|
|
|
|
+ if Kind = tkChar then
|
|
|
|
+ Result := Chr(FData.FAsUByte)
|
|
|
|
+ else
|
|
|
|
+ raise EInvalidCast.Create(SErrInvalidTypecast);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TValue.AsWideChar: WideChar;
|
|
|
|
+begin
|
|
|
|
+ if Kind = tkWChar then
|
|
|
|
+ Result := WideChar(FData.FAsUWord)
|
|
|
|
+ else
|
|
|
|
+ raise EInvalidCast.Create(SErrInvalidTypecast);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+function TValue.AsChar: Char;
|
|
|
|
+begin
|
|
|
|
+{$if SizeOf(Char) = 1}
|
|
|
|
+ Result := AsAnsiChar;
|
|
|
|
+{$else}
|
|
|
|
+ Result := AsWideChar;
|
|
|
|
+{$endif}
|
|
|
|
+end;
|
|
|
|
+
|
|
function TValue.AsInt64: Int64;
|
|
function TValue.AsInt64: Int64;
|
|
begin
|
|
begin
|
|
if Kind in [tkInteger, tkInt64, tkQWord] then
|
|
if Kind in [tkInteger, tkInt64, tkQWord] then
|