Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Допустим, есть такая прога myprog.prg
Не могу понять, почему присваивается в дате 5 января 2018 года, а не 1 мая 2018 года. И config.fp пробовал отключать. И в отладчике смотрел. Причем если после отладчика еще раз сделать присвоение, то присваивается правильно. |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
А из чего по твоему коду видно, что в результате получается 5 января 2018 года?
Ты хочешь сказать, что при выводе видишь 05/01/2018 ? Но в любом случае у меня такого не происходит, я вижу 01/05/2018 А проверять надежнее так: ? DAY(m.a), MONTH(m.a), YEAR(m.a) ведь на формат вывода даты влияет SET DATE. Рискну предположить, что в реальной проге у тебя SET DATE BRIT не стоит, а по умолчанию используется AMERICAN. Исправлено 2 раз(а). Последнее : akvvohinc, 02.06.18 15:55 |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Интересно.
На 9ке
Принять как данность))) Не знаю, есть ли в 2.6 MDY ------------------ |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Интересного здесь нет - результат ты получил один и тот же.
А формат даты при выводе разный, так как определяется установкой SET DATE. Но в FPD такого нет: m.a= {^2018/05/01} Там и формат даты при присвоении определяется установкой SET DATE. |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
{01/05/2018} это литерал задающий дату. Как таковой он обрабатывается компилятором и в объектный код попадает уже значение даты, а не вот это его текстовое представление. Соответственно на то как именно будет обработан этот литерал, влияет установка SET DATE на момент компиляции, а не во время исполнения кода. Под отладчиком может быть и по другому, хотя в VFP всё равно берётся значение из объектного кода - конечно же если он существует и не "устарел" (т.е. исходник не изменялся после предыдущей компиляции)
Я не помню можно было ли в FPD в функцию DATE передать 3 параметра и получить совершенно однозначный результат, вне зависимости от установок SET DATE/CENTURY ни на момент компиляции ни на момент исполнения. Если возможно - то именно так и следует задавать любые "статические" даты. ------------------ WBR, Igor |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Игорь поставил правильный диагноз.
У тебя в Config.FP нет установки DATE = ... Поэтому по умолчанию подразумевается AMERICAN, при которой и происходит компиляция проги. То есть фактически в FXP дата не та, что ты "как бы" написал, думая, что пишешь ее при SET DATE BRITISH. После отработки проги SET DATE устанавливается в BRITISH, поэтому дальнейшие манипуляции приводят к правильному результату. Но без перекомпиляции при подходящем SET DATE (German, British, DMY и т.п.) прога всегда будет "врать". Советую всегда включать нужный DATE в Config.FP. Ну, или на худой конец использовать другой способ присвоения:
Исправлено 3 раз(а). Последнее : akvvohinc, 02.06.18 19:04 |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Поставил в config.fp
date = brit Ничего не изменилось. Дата присваивается некорректно. То, что можно присваивать m.a = CTOD('01/05/2018'),конечно, знаю. Но просто хочется понять, почему такая странная заморочка. |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
ry Сообщений: 2113 Дата регистрации: 24.09.2007 |
Стоп. Так в British {01/05/2018} и будет 5 января, емнип (лень лезть проверять, никогда British не использовал). Если требуется привычный нам формат DD/MM/YYYY, то надо ставить German. |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
А вот не надо тень на плетень наводить. SET DATE BRITISH работает как надо. И притом в качестве разделителей использует слэши, а не точки как GERMAN
|
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Нет. Это 1 мая.
Надо еще перекомпилировать исходник при такой установке, ведь сам по себе FXP не изменится. Цитата: Соответствующие разделители - это только при выводе. А при присваивании можно использовать почти любые, даже нестандартные типа "+", "=", ',' и т.п. Исправлено 2 раз(а). Последнее : akvvohinc, 02.06.18 20:20 |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Да, после перекомпиляции работает как надо. Вообще говоря, далеко не очевидно, что для того, чтобы пользоваться в программе присвоением даты через фигурные скобки, надо прописывать формат даты в config.fp Да еще не забыть перекомпилироваться. |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Да, не очевидно. Для этого надо понимать, что происходит с такой "датой" при компиляции - она преобразуется в формат даты, то есть в FXP уже нет никакого строкового представления даты - никаких 1 5 2018. А при преобразовании во внутренний формат даты компилятор использует текущую (на момент компиляции) настройку SET DATE, а не ту, которая стоит в самой проге - та сработает лишь в Run-time. Но если ты установишь нужный формат даты в Config.FP и не будешь без нужды менять его в окне Command или в программе на не соответствующий (British и German можно считать соответствующими, а British и USA - нет), то подобная проблема уйдет. В VFP этой проблемы нет вообще, так как литерал типа "Дата" всегда задается в формате YYYY-MM-DD, то есть никак не зависит от SET DATE. Исправлено 1 раз(а). Последнее : akvvohinc, 02.06.18 20:48 |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Это только в "новом" формате "с крышкой" {^yyyy-mm-dd} - "старые" форматы VFP тоже понимает (со всеми вытекающими нюансами), но уже лишь при нестандартной установке SET STRICTDATE - так то ругаться будет сильно, и не откомпилирует Сам новый формат появился тоже не сразу - наверное в 6 версии... Не помню точно. Т.е. проблему таки признали и решили вполне эффектно - даже "неоднозначные" (но чуть более "понятные", т.к. это уже штука времени исполнения, а не компиляции) CTOD() и то слегка придушили тем же SET STRICTDATE. ------------------ WBR, Igor |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Надо будет сделать поиск в FARe по маске *.prg и поискать ={
И всё к чертям резать, не дожидаясь перитонита! - поменять на CTOD(). Вроде в реальных проектах нигде фигурных скобок не использовал, а вот в "подножном" инструментарии - не исключено. |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Честно говоря не уверен что где-либо в коде имеют смысл литералы даты отличные от 1 января, или от 31 декабря (а этот уже ругнётся при компиляции с "не той системы" set date) - да и то для "ненастоящих" дат - типа спецзначений.
------------------ WBR, Igor |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Даты разные нужны,
Даты разные важны. Например, дата ввода в действие нового инструктивного письма, меняющего экономические расчеты. И прочая хрень. |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Щас тебе скажут, что такую хрень надо держать в таблицах, а не зашивать в программу. |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
По хорошему - да, но кто ж у нас особо то парится по поводу "сомнительных решений" ------------------ WBR, Igor |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Ежели это дата касается бизнес-логики как таковой, то да. А ежели это даты "внешних аномалий", то можно хранить нумер алгоритма в файле временных переменных, например. А юзеру предлагать выбрать из списка нужное.
Вааще могу заверить, что "сегодня завтрак в детском саду отменяется". Нету никаких правил. Нету. |
Re: Непонятки с фигурными скобками в FPD 2.6 | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
После поиска в FAR по ={01/ нашел одно сомнительное место.
Сейчас нет возможности проверить. Там есть такая конструкция:
Будет ли корректно отрабатывать сравнение? В config.fp DATE не прописывалось. |
© 2000-2024 Fox Club  |