Нет, они не идентичны.
WideString
- это просто оболочка для типа ActiveX / COM BSTR
. Это необходимо при работе со строками в ActiveX / COM.
String
в Delphi 2009 и более поздних версиях - это псевдоним для UnicodeString
, который может содержать символы Unicode, как BSTR
, но это НЕ то же самое, что WideString
. WideString
выделяется диспетчером памяти COM и не считается счетчиком. UnicodeString
выделяется диспетчером памяти RTL и подсчитывается, как AnsiString
.
Вы должны использовать (Unicode)String
везде, где это возможно, и использовать WideString
только для COM-взаимодействия или иметь дело с устаревшими библиотеками, которые используют WideString
для поддержки Unicode.