:: Visual Foxpro, Foxpro for DOS
Re: Непонятки с фигурными скобками в FPD 2.6
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Премення myvar в "правильном" формате.
Ratings: 0 negative/0 positive
Re: Непонятки с фигурными скобками в FPD 2.6
leonid

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
Simple777
Премення myvar в "правильном" формате.

Да, Вы "правильно" мыслите.
Ratings: 0 negative/0 positive
Re: Непонятки с фигурными скобками в FPD 2.6
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
В смысле некорректно будет сравнение выполняться?
Ratings: 0 negative/0 positive
Re: Непонятки с фигурными скобками в FPD 2.6
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Не "некорректно", а не в зависимости от date british прописанной чуть ранее. И config программы не поможет - только config твоей IDE на момент компиляции.
SET DATE YMD
dat={01/05/2018}
?YEAR(m.dat),MONTH(m.dat),DAY(m.dat), m.dat
SET DATE AMERICAN
dat={01/05/2018}
?YEAR(m.dat),MONTH(m.dat),DAY(m.dat), m.dat
SET DATE BRITISH
dat={01/05/2018}
?YEAR(m.dat),MONTH(m.dat),DAY(m.dat), m.dat
Компилируй, запускай и наблюдай что установка SET DATE влияет на формат вывода, но не влияет на то как разобран литерал даты. После первой компиляции и запуска, кстати, вторая компиляция и запуск может дать другой результат, т.к. оставляет SET DATE BRITISH для IDE, а возможно это отличается от изначальной установки.
Вообще лучше искать по исходнику при помощи регулярных выражений - т.к. этот литерал может оказаться и где-нить после -, + или того же >
Ну "от бедности" можно просто одиночную фигурную скобку искать - вряд ли она широко применяется у тебя в программе...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Непонятки с фигурными скобками в FPD 2.6
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Фигурные скобки применяются активно, но в 99,9% случаев сравнивается дата или на пустое значение, или на 1 января. Присвоений дат через скобки в проектах вообще нет. А вот в одном месте (то, чем сейчас занимаюсь) делал присвоение через фигурные скобки при подготовке данных для юзера. Тут и столкнулся с этой неочевидной проблемой.

В общем, резюме такое. Надо в FPD избегать "играться" с установкой SET DATE и присваивать явно задаваемые даты (если речь идет о переменных) через CTOD(). Сравнение же через фигурные скобки можно проводить при проверке на 1 января и на пустую дату. [sm128]



Исправлено 2 раз(а). Последнее : Simple777, 03.06.18 13:38
Ratings: 0 negative/0 positive
Re: Непонятки с фигурными скобками в FPD 2.6
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Для VFP тоже не стоит злоупотреблять "дёрганьем" SET DATE, хотя проблема с литералами решается при помощи {^
Кстати, не знаю был ли в FPD формат типа YMD - где первым год идёт, но если был, то и с проверкой "на 1 января" могут быть нюансы
А на пустоту IMHO логичнее проверять при помощи функции EMPTY().


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Непонятки с фигурными скобками в FPD 2.6
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Как-то даже в голову не приходило проверять пустую дату на EMPTY().
Ratings: 0 negative/0 positive
Re: Непонятки с фигурными скобками в FPD 2.6
akvvohinc

Сообщений: 4222
Откуда: Москва
Дата регистрации: 11.11.2008
Igor Korolyov
Кстати, не знаю был ли в FPD формат типа YMD - где первым год идёт, но если был, то и с проверкой "на 1 января" могут быть нюансы

В VFP появилось лишь 3 новых формата:
TAIWAN
SHORT
LONG

Все остальные форматы были и в FPD.

Год идет первым в FPD (помимо YMD) в форматах ANSI и JAPAN.
Ratings: 0 negative/0 positive
Re: Непонятки с фигурными скобками в FPD 2.6
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
И еще шляпа появилась в VFP ^ :hi:
Ratings: 0 negative/0 positive
Re: Непонятки с фигурными скобками в FPD 2.6
akvvohinc

Сообщений: 4222
Откуда: Москва
Дата регистрации: 11.11.2008
Simple777
И еще шляпа появилась в VFP ^

Шляпа была и в FPD:
10^6

Но и твоя шляпа, и моя к SET DATE отношения не имеют.
Ratings: 0 negative/0 positive
Re: Непонятки с фигурными скобками в FPD 2.6
andrewk
Автор

Сообщений: 174
Откуда: Красноярск
Дата регистрации: 15.05.2005
Simple777
В общем, резюме такое. Надо в FPD избегать "играться" с установкой SET DATE
Когда-то давно что-то сильно экспериментировал с этими датами, вероятно, как раз-таки наткнувшись на неоднозначность. Задача стояла о «гарантированно не ошибиться в будущем» и о максимальной совместимости кода между FPD и VFP. Так вот, в результате в config.fp написал "Date=german" и комментарий "нигде не меняй".
Что касается неоднозначностей при всяких импортах данных, то использую свою функцию:
FUNC VtoD && ([@]vDate, [[@]vYm2], [cOps]) - Дата <- куча вариантов
* vDate:
* строка дата с разделителем: '.' | '-' | '/' варианты:
* дд.мм.гггг | дд.мм.гг | гггг.мм.дд | мм.гггг | мм.гг | ГгггМмДд | ГгггМм | ГгМм | Гггг | дд
* дата
* 0 date()
* 1-30 ?-е число месяца vYm2
* >30 последнее число месяца vYm2
* vYm2 (D|C|.t.) если задан, то подставим число из vDate в месяц из vYm2
* cOps:
* MD если это строка с двумя разделителями и год не в начале, то считать: сначала месяц потом число: 02/21/2018
* Пустое число считаем как 1-е, пустой месяц - январь
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 9 (Гостей: 9)

© 2000-2024 Fox Club 
Яндекс.Метрика