I’m not sure there’s a simply way to do what you wish. You can convert a Word
into a WideChar
with a simple cast:
WideChar($FFFF)
but you cannot concatenate WideChar
. So this is a compiler error:
WideChar($FFFF) + WideChar($FFFF)
You could use a helper function to get the job done:
function InitialiseWideString(const chars: array of Word): WideString;
var
i: Integer;
begin
SetLength(Result, Length(chars));
for i := 0 to high(chars) do
Result[i+1] := WideChar(chars[i]);
end;
Then you can call it like this:
ws := InitialiseWideString([$0054, $0069, $006D, $0065, $0020, $0074, $006F,
$0020, $0075, $0070, $0067, $0072, $0061, $0064, $0065]);
xepol said
WideChar typecasting from a word is how it is done all over the RTL, so I would guess that is the closest way to correct, unless you need a utf32 code point that creates a mbcs utf16 sequence. (it’s in the standard, not sure how common it is)
Arnaud Bouchez said
What about the following?
ws := #$FFFF#$FFFF#$FFFF;
jpluimers said
Not sure as I don’t have a Delphi 7 VM any more, but I think that construct is only supported from Delphi 2009 onward.