mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-08 10:59:10 +02:00
* correct TValue.Cast<AnsiString>, patch by Евгений Савин. Fixes issue #41042
This commit is contained in:
parent
6f5f567087
commit
1b8209fee4
@ -2862,7 +2862,7 @@ var
|
||||
RS : RawByteString;
|
||||
WS : WideString;
|
||||
SS : ShortString;
|
||||
|
||||
AStr: AnsiString;
|
||||
begin
|
||||
aRes:=False;
|
||||
US:=AsUnicodeString;
|
||||
@ -2894,6 +2894,11 @@ begin
|
||||
SetString(RS,PAnsiChar(US),Length(US));
|
||||
TValue.Make(@RS, aDestType, aDest);
|
||||
end;
|
||||
tkAString:
|
||||
begin
|
||||
AStr := AnsiString(US);
|
||||
TValue.Make(@AStr, aDestType, aDest);
|
||||
end;
|
||||
tkWChar:
|
||||
begin
|
||||
if Length(US)<>1 then
|
||||
@ -2901,7 +2906,7 @@ begin
|
||||
TValue.Make(PWideChar(US),aDestType,aDest);
|
||||
end;
|
||||
else
|
||||
// silence compiler warning
|
||||
Exit;
|
||||
end;
|
||||
aRes:=True;
|
||||
end;
|
||||
|
@ -1954,6 +1954,10 @@ begin
|
||||
{$endif}
|
||||
CheckTrue(Byte(397) = (TValue. specialize From<Integer>(397). specialize Cast<Byte>(). specialize AsType<Byte>), 'Byte(397) = (TValue.From<Integer>(397).Cast<Byte>().AsType<Byte>)');
|
||||
CheckTrue(32 = (TValue. specialize From<Byte>(32). specialize Cast<Integer>(). specialize AsType<Integer>), '32 = (TValue.From<Byte>(32).Cast<Integer>().AsType<Integer>)');
|
||||
|
||||
CheckTrue('test_str' = TValue.{$ifdef fpc}specialize{$endif} From<ShortString>('test_str')
|
||||
.{$ifdef fpc}specialize{$endif} Cast<AnsiString>
|
||||
.{$ifdef fpc}specialize{$endif} AsType<AnsiString>, 'TValue.From<shortring>.Cast<AnsiString> failed');
|
||||
end;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user