Manchmal habe ich Strings gesehen, die so wirken, als wären Leerzeichen dazwischen (z.B. K E R N E L 3 2 . D L L)...
Das ist eben die Darstellung von UTF-16 als
ANSI (CP1252), weil
ANSI/
ASCII-Nullzeichen dazwischen sind. Binärdateien als UTF-16 darstellen ergibt wenig Sinn, weil UTF-16 erfordert, dass wenn als höherwertiges Byte die Werte 0xD8-0xDB vorkommen, das übernächste Byte 0xDC-0xDF sein muss. In UCS2 sind beide Wertbereiche als höherwertiges Byte verboten. Ein beiden ist zudem verboten, dass das höherwertige Byte 0xFF und das niedrigwertige 0xFE ist.
siehe System.pas
Delphi-Quellcode:
OlderLocaleOverrideKey = 'Software\Borland\Delphi\Locales'; // do not localize
OldLocaleOverrideKey = 'Software\Borland\Locales'; // do not localize
NewLocaleOverrideKey = 'Software\CodeGear\Locales'; // do not localize
NewerLocaleOverrideKey = 'Software\Embarcadero\Locales'; // do not localize
für
Delphi-Quellcode:
function InternalGetLocaleOverride(AppName: string): string;
function GetLocaleOverride(const AppName: string): string;
Und kann man via
procedure SetLocaleOverride(const NewPreferredLanguages: string);
auch überschreiben/umgehen.
Kann es den Zugriff auch verhindern, wenn man es früh genug aufruft?