Даже глобальные настройки могут измениться, когда Application.UpdateFormatSettings (Delphi 7, не знаю о Delphi XE) имеет значение True. Когда пользователь изменяет региональные и языковые параметры Windows, это будет отражено в вашем приложении. Вы можете обойти это, установив UpdateFormatSettings в False, но даже в этом случае вы не можете быть уверены, возможно, есть какая-то сторонняя библиотека, которую вы используете, которая меняет ее.
У меня были некоторые проблемы с нашим собственным приложением: нигде в нашем приложении глобальные настройки формата не были изменены, но все же произошла потеря информации, потому что float был преобразован в строку, а когда строка была преобразована обратно в float, настройки формата были волшебным образом изменилось. (Итак, у вас было следующее: 1.2 -> конвертировать в строку -> '1.2' -> черная магия, которая изменила formatsettings.decimalseparator -> конвертировать в float -> 12).
Мое предложение: используйте не поточно-ориентированную версию только для целей пользовательского интерфейса, чтобы пользователь видел даты и отображал их так, как ему нравится, для всего остального используйте поточно-ориентированную версию. Конверсии внутри вашего приложения будут согласованными и не принесут сюрпризов.