Тонкая работа с WideString даже в старых версиях

Методы:

uses SysUtils, WideStrUtils;
 
function WideStrStartsWith(const ANeedle, AHaystack: WideString): Boolean;
var L, L2: Integer;
begin
    L := WStrLen(PWideChar(ANeedle));
    L2 := WStrLen(PWideChar(AHaystack));
    if L > L2 then
        Result := False
    else
        Result := WideSameStr(ANeedle, Copy(AHaystack, 1, L));
end;
 
function WideTextStartsWith(const ANeedle, AHaystack: WideString): Boolean;
var L, L2: Integer;
begin
    L := WStrLen(PWideChar(ANeedle));
    L2 := WStrLen(PWideChar(AHaystack));
    if L > L2 then
        Result := False
    else
        Result := WideCompareText(ANeedle, Copy(AHaystack, 1, L)) = 0;
end;