Nein, das genügt nicht, siehe OP bzw. Beitrag #4.
{$Mode DelphiUnicode}
bzw.
{$ModeSwitch UnicodeStrings}
macht String zu UnicodeString, und (P)Char zu (P)WideChar. An den Imports der
API-Funktionen ändert sich nichts, d.h. der Alias ExpandEnvironmentStrings verweist weiterhin auf ExpandEnvironmentStringsA statt ExpandEnvironmentStringsW.
Analog gilt das auch für die Klassen und Funktionen der Free Pascal
RTL, wie man auch im von dir verlinkten Teil lesen kann. TIniFile und TFileStream kommen nach dem Umschalten nicht automatisch mit
Unicode-Dateinamen bzw. -inhalten klar. Naja, vielleicht kommen sie schon damit klar (diese Frage ist ja weiterhin ungeklärt), aber es gibt beim Kompilieren Warnungen. Um die loszuwerden, muss man sich jeden einzelnen Aufruf anschauen und ändern, also eine andere Funktion rufen (z.B. UnicodeFormat statt Format), Casten oder Konvertierungsfunktion rufen. Das bedeutet, es kann eben nicht alles so bleiben.
Zitat:
oder ein anderer ansatz, {$modeswitch m_default_unicodestring}
Meintest du
{$ModeSwitch UnicodeStrings}
?
Grüße
Dalai