|
|
|
Инициализация переменных "окружения" Delphi
|
|||
|---|---|---|---|
|
#18+
Доброго дня господа ! Пробую обрисовать проблему Windows - разделитель даты = . (точка) Приложение созданное Delphi 7 В момент создания основного окна OnCreate инициализирую переменные "окружения" Delphi разделитель даты = / (наклонная) С этим значением переменной все прекрасно отрабатывает - проблем нет ...... Суть вопроса Не закрывая приложение - выхожу из сеанса Windows (замечу это тонкий клиент сервера Win 12) Через пару секунд вхожу в тот же сеанс - вижу свое незакрытое приложение - но !!!! разделитель даты сказочным образом на системный . (точка) - ну соответственно полезли ошибки. Почему так и какое событие использовать для устранения (OnShow ?) Заранее благодарен ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 12:06 |
|
||
|
Инициализация переменных "окружения" Delphi
|
|||
|---|---|---|---|
|
#18+
HOME_X, наверное потому что он имплементирует системный разделитель, а вы ему периодически мешаете, но не всегда успеваете Лучше исправить ошибки в программе, тем более обычно достаточно добавить нужный вам TFormatSettings к функциям преобразования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 12:16 |
|
||
|
Инициализация переменных "окружения" Delphi
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Вы хотите сказать, что переменные "окружения" Delphi находятся в постоянном обновлении и при активации сеанса закономерно изменяются, но приложение УЖЕ запущено.... А TFormatSettings - полагаете не подвержена такому воздействию ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 12:33 |
|
||
|
Инициализация переменных "окружения" Delphi
|
|||
|---|---|---|---|
|
#18+
HOME_X, создайте просто свою локальную переменную этого типа и инициализируйте её как надо - её точно никто не тронет, большинство функций форматирования и деформатирования имеют вариант с использованием этой переменной в качестве параметра ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 12:41 |
|
||
|
Инициализация переменных "окружения" Delphi
|
|||
|---|---|---|---|
|
#18+
HOME_XПочему так... Видимо винда при пересоздании десктопа отсылает некое сообщение, которое воспринимается как необходимость переопределить переменные локали. [quote HOME_X] Просто использовать два набора настроек - системный для экрана, и стандартный для файлов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 12:45 |
|
||
|
Инициализация переменных "окружения" Delphi
|
|||
|---|---|---|---|
|
#18+
я преодолел проблему с неправильным форматом даты таким образом: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 13:51 |
|
||
|
Инициализация переменных "окружения" Delphi
|
|||
|---|---|---|---|
|
#18+
Правильный метод: - получить свою копию TFormatSettings - настроить поля как нужно - использовать ее для всех функций форматирования, где требуется фиксированный формат (обмен данными, вывод в файлы) - оставить функции отображения зависящими от системных настроек Иначе замучаетесь городить многоэтажные костыли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 14:58 |
|
||
|
Инициализация переменных "окружения" Delphi
|
|||
|---|---|---|---|
|
#18+
P.S. Мнение не только моё, но подкреплено лично встреченными многочисленными примерами косяков при несоблюдении этих рекомендаций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 15:05 |
|
||
|
Инициализация переменных "окружения" Delphi
|
|||
|---|---|---|---|
|
#18+
Василий 2Правильный метод: - получить свою копию TFormatSettings - настроить поля как нужно - использовать ее для всех функций форматирования, где требуется фиксированный формат (обмен данными, вывод в файлы) - оставить функции отображения зависящими от системных настроек Иначе замучаетесь городить многоэтажные костыли. Проще так: Код: pascal 1. И все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 16:09 |
|
||
|
Инициализация переменных "окружения" Delphi
|
|||
|---|---|---|---|
|
#18+
rgreatПроще так: Код: pascal 1. И все. Именно ! Спасибо ! Код: pascal 1. 2. 3. 4. 5. 6. P.S. Я начал события "городить", которые исправили бы ситуацию Спасибо ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 19:48 |
|
||
|
Инициализация переменных "окружения" Delphi
|
|||
|---|---|---|---|
|
#18+
Application.UpdateFormatSettings:=False; первым поставь. Мало ли у тебя на CreateForm какие действия происходят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 20:12 |
|
||
|
Инициализация переменных "окружения" Delphi
|
|||
|---|---|---|---|
|
#18+
Метод из серии заклеивания дыры в борту самолета жвачкой, имхо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 21:42 |
|
||
|
Инициализация переменных "окружения" Delphi
|
|||
|---|---|---|---|
|
#18+
Что-то мне этот Application.FormatSettings не помогает, куда его не воткни... Переопределяются выставленные мной в FormatSettings.CurrencyString и другие (DateSeparator,DecimalSeparator и др) значениями, установленнами виндой у этого юзера, причем глюк всплывает далеко не сразу, надо несколько часов подождать, подержать приложение открытым, и можно даже вообще ничего не делать, просто свернуто приложение. Отображение денежных полей да полей типа дата-время в гридах имею ввиду (TDBGRID и Delphi XE). Причем, если после того, как заметишь глюк этот, заново задать то же самое значение этой переменной, то проблема не устраняется, но поможет, если установить другое значение. Ну, или перезагрузить приложение, тоже помогает... Причем, кажется, лет 20 уже назад это было все написано вот так, и работало корректно в приложениях это, причем даже не через FormatSettings.CurrencyString, а через deprecated-переменную CurrencyString. И вот сейчас на одной-единственной машине под Windows Server 2012, в терминалках, выявилось недели две назад, и больше нигде. На других машинах под управлением и 2012 и более ранних версий - ничего подобного. На десктопных машинах под WinXE-Win10 тоже ничего подобного. Начал копать, обнаружил, что и Application.FormatSettings у меня давным-давно в False выставлен. Тоже, значит, не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2020, 16:46 |
|
||
|
Инициализация переменных "окружения" Delphi
|
|||
|---|---|---|---|
|
#18+
раз появилось недавно, значит M$ выпустила новый апдейт... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2020, 16:48 |
|
||
|
Инициализация переменных "окружения" Delphi
|
|||
|---|---|---|---|
|
#18+
А, нашел: TJvAppEvents имеет свойство UpdateFromatSettings, которое переопределяет Application.UpdateFormatSettings постоянно, в true выставляет (а оно по дефолту так true и стоит). То есть, кладем на форму TjvAppEvents, открываем форму, и всё, Application.UpdateFormatSettings слетает в true. Если выставить в дизайне этой компоненте UpdateFormatSettings, то эффект уходит. JVCL 3.50, Delphi XE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 00:03 |
|
||
|
Инициализация переменных "окружения" Delphi
|
|||
|---|---|---|---|
|
#18+
V.Borzov А, нашел: TJvAppEvents имеет свойство UpdateFromatSettings, которое переопределяет Application.UpdateFormatSettings постоянно, в true выставляет (а оно по дефолту так true и стоит). То есть, кладем на форму TjvAppEvents, открываем форму, и всё, Application.UpdateFormatSettings слетает в true. Если выставить в дизайне этой компоненте UpdateFormatSettings, то эффект уходит. JVCL 3.50, Delphi XE Наверное, очень суровое приложение, если оно использует Jedi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 08:45 |
|
||
|
Инициализация переменных "окружения" Delphi
|
|||
|---|---|---|---|
|
#18+
V.Borzov, зарепорть сюда: https://issuetracker.delphi-jedi.org/my_view_page.php есть шанс что поправят ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2020, 15:41 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39831198&tid=2038573]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
141ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 443ms |

| 0 / 0 |
