Лучший ответ:
const
n: WideString = ''; //n=Nothing
s := n+#$0061+#$0301;
Это исправляет все случаи, которые у меня есть ниже, в противном случае происходит сбой.
Единственный работающий вариант - объявить его константой:
AccentAcute: WideString = #$0301;
AccentAcute: WideString = WideChar($0301);
AccentAcute: WideString = WideChar(#$0301);
AccentAcute: WideString = WideString(#$0301);
Пример использования:
s := 'Pasta'+AccentAcute;
Константы на основе синтаксиса, которые не работают
AccentAcute: WideString = $0301;
несовместимые типы
AccentAcute: WideString = #0301;
дает
AccentAcute: WideString = WideString($0301);
недопустимый тип
AccentAcute: WideString = WideString(#$0301);
недопустимый тип
AccentAcute: WideChar = WideChar(#0301);
т Pastai
AccentAcute: WideChar = WideChar($0301);
т Pasta´
Другие синтаксисы, которые терпят неудачу
'Pasta'+WideChar($0301)
т Pasta´
'Pasta'+#$0301
дает Pasta´
WideString('Pasta')+#$0301
дает
Сводка всех найденных констант синтаксисов, придуманных:
AccentAcute: WideString = #$0301; //works
AccentAcute: WideString = WideChar(#$0301); //works
AccentAcute: WideString = WideString(#$0301); //works
AccentAcute: WideString = $0301; //incompatble types
AccentAcute: WideString = WideChar($0301); //works
AccentAcute: WideString = WideString($0301); //invalid typecast
AccentAcute: WideChar = #$0301; //fails, gives Pasta´
AccentAcute: WideChar = WideChar(#$0301); //fails, gives Pasta´
AccentAcute: WideChar = WideString(#$0301); //incompatible types
AccentAcute: WideChar = $0301; //incompatible types
AccentAcute: WideChar = WideChar($0301); //fails, gives Pasta´
AccentAcute: WideChar = WideString($0301); //invalid typecast
Перестановка WideChar
может работать, если вы добавляете только переменную
//Works
t := '0123401234012340123';
t := t+WideChar(#$D840);
t := t+WideChar(#$DC00);
//fails
t := '0123401234012340123'+WideChar(#$D840);
t := t+WideChar(#$DC00);
//fails
t := '0123401234012340123'+WideChar(#$D840)+WideChar(#$DC00);
//works
t := '0123401234012340123';
t := t+WideChar(#$D840)+WideChar(#$DC00);
//works
t := '';
t := t+WideChar(#$D840)+WideChar(#$DC00);
//fails; gives junk
t := ''+WideChar(#$D840)+WideChar(#$DC00);
//crashes compiler
t := WideString('')+WideChar(#$D840)+WideChar(#$DC00);
//doesn't compile
t := WideChar(#$D840)+WideChar(#$DC00);
Определенно удар по чепухе компилятора; случаи, которые не были проверены, проверены полностью. Да, я знаю Дэвида, мы должны обновить.