Aua!
Zitat von
Alter Mann:
if GetLocaleInfo(GetUserDefaultLangID, LOCALE_STHOUSAND, S, SizeOf(PWideChar)) = 0 then S := '.';
Du übergibst ein Char (S) als Buffer, dieses ist 1 Byte (Delphi <= 2007) bzw. mind. 2 Byte (Delphi 2009/2010) groß. Als Größe übergibst du aber die von PWideChar, also einem Pointer. In einer 32-Bit-Architektur sind das immer 4 Byte.
Du sagst also GetLocaleInfo, dass du einen Buffer mit einer Größe von 4 Zeichen(!) übergibst, übergibst aber nur einen von 1 bzw. 2 Byte Größe...