Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
КАК РАБОТАЕТ CDate() в Visual Basic 6
|
|||
|---|---|---|---|
|
#18+
Функция CDate() представляет собой вызов функции vbaDateStr из динамической библиотеки MSVBVM60.DLL. А она, в свою очередь, опирается на функцию VarDateFromStr из oleaut32.dll, т.е. на функцию из системной библиотеки. Таким образом, остается исследовать работу VarDateFromStr на различных операционных системах и пакетах обновления (в данной заметке речь идет исключительно о Windows Server 2003, так как я на ней работаю – прошу дополнить для других систем, если есть информация). Напишем небольшую тестовую программу для вызова VarDateFromStr : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Код: plaintext 1. То есть, функция VarDateFromStr умна настолько, что переставляет местами цифры, если не может произвести преобразование. За такой подход разработчика VarDateFromStr надо сажать в клетку и кормить сырым мясом. Единственное, что мы можем сделать - определить формат даты, который будет использован в самый первый "заход". Вот как это можно сделать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Результаты: Код: plaintext Задав явно LCID , можно определить, что есть такие форматы: Код: plaintext 1. Т.е. десятое Августа в этих двух форматах представлено по-разному: в одном dd/mm/yyyy , в другом - m/dd/yyyy . Таким образом, для того, чтобы функция VarDateFromStr работала верно, необходимо, чтобы GetUserDefaultLCID() возвращала "верный" LCID . Опытным путем было установлено, что на результат GetUserDefaultLCID() можно повлиять таким образом (еще раз напомнб, что речь о системе Windows 2003 Server): Control Panel->Regional and Language Options В первой же вкладке выбираем требуемый стандарт (например, English (United States)) и, при необходимости, настраиваем детали (Customize Regional Options). _____________ jimmers forever! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2004, 08:28 |
|
||
|
КАК РАБОТАЕТ CDate() в Visual Basic 6
|
|||
|---|---|---|---|
|
#18+
jimmersТо есть, функция VarDateFromStr умна настолько, что переставляет местами цифры, если не может произвести преобразование. За такой подход разработчика VarDateFromStr надо сажать в клетку и кормить сырым мясом. я с тобой НЕ согласен!!! за такой подход этих ребят надо бы вообще разложить на облачко атомов, и размазать между 2-3 галактиками :-) например, за последние 8 лет работы с VB и VBA у меня ни в одном проекте не встретишь CDate - только DateSerial. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2004, 09:59 |
|
||
|
|

start [/forum/topic.php?fid=60&tid=2169094]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 391ms |

| 0 / 0 |
