What Microsoft had to do with this?
In the beginning of your program, use this: DecimalSeparator:= '.'; // or ","
Also, properly written code shouldn't break because of this, if you use Try...Except statements for StrToFloat; StrToFloatDef will simply return default value if invalid character is found. Never seen access violations happen with these functions.
Bookmarks