Легко. Дело в том, что при изменении интернациональных настроек, к которым относится формат даты, времени, чисел с плавающей точкой, и пр., Windows посылает всем приложениям специальное сообщение (имя не помню). По идее, грамотно написанные приложения должны как минимум перерисоваться с учетом этих настроек. Borland, как всегда, о нас позаботился и в этом случае. А именно, это сообщение ловит объект Application, и в соответствии с ним, повторно читает из Windows интернациональные настройки, переустанавливая соответствующие переменные модуля System (DateSeparator, ShortDateFormat, DecimalSeparator, и т.п.). Вообщем-то это наверное правильно. Однако, в некоторых случаях это может навредить (мне лично почти всегда ). Вот поэтому, у объекта Application есть свойство UpdateFormatSettings установленное по умолчанию в True. Если-же присвоить ему False, то Application будет игнорировать соответствующее сообщение от Windows, и не будет "на лету" менять переменные связанные с форматом. Лично у меня, очень часто программы живут не сами по себе, а общаются с программыми на других компах, используют экспорт/импорт данных в вполне определенных текстовых форматах. А поскольку во многих случаях происходит неявное (неконтролируемое мною) преобразование число<>строка, дата<>строка (например tDateTimeField.AsString или StringVar := VariantVar), то я вынужден сам устанавливать нужные мне форматы. Ну и что-бы шаловливый пользователь не нарушил работу моей программы, я перед установкой собственных настроек делаю Application.UpdateFormatSettings := False;. Естественно, для консольных приложений это не актуально - там нет Application, следовательно некому и "следить" за изменениями.
Хотелось коротенько, а получилось как всегда  |