for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  

Список Форумов  :: Visual Foxpro, Foxpro for DOS
   :: Помощь сайту :: 

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

Сообщений: 20191
Дата: 03.06.18 08:01:11ОтветитьЦитировать
Премення myvar в "правильном" формате.
Ratings: 0 negative/0 positive

Re: Непонятки с фигурными скобками в FPD 2.6
leonid

Сообщений: 2549
Откуда: Рига
Дата: 03.06.18 10:21:52ОтветитьЦитировать
Simple777
Премення myvar в "правильном" формате.

Да, Вы "правильно" мыслите.
Ratings: 0 negative/0 positive

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

Сообщений: 20191
Дата: 03.06.18 11:36:33ОтветитьЦитировать
В смысле некорректно будет сравнение выполняться?
Ratings: 0 negative/0 positive

Re: Непонятки с фигурными скобками в FPD 2.6
Igor Korolyov

Сообщений: 32097
Дата: 03.06.18 12:04:27ОтветитьЦитировать
Не "некорректно", а не в зависимости от 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

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

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



Исправлено: Simple777, 03.06.18 13:38
Ratings: 0 negative/0 positive

Re: Непонятки с фигурными скобками в FPD 2.6
Igor Korolyov

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


------------------
WBR, Igor
Ratings: 0 negative/0 positive

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

Сообщений: 20191
Дата: 03.06.18 13:53:22ОтветитьЦитировать
Как-то даже в голову не приходило проверять пустую дату на EMPTY().
Ratings: 0 negative/0 positive

Re: Непонятки с фигурными скобками в FPD 2.6
akvvohinc

Сообщений: 2812
Откуда: Москва
Дата: 04.06.18 01:25:41ОтветитьЦитировать
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

Сообщений: 20191
Дата: 04.06.18 07:45:05ОтветитьЦитировать
И еще шляпа появилась в VFP ^ :hi:
Ratings: 0 negative/0 positive

Re: Непонятки с фигурными скобками в FPD 2.6
akvvohinc

Сообщений: 2812
Откуда: Москва
Дата: 04.06.18 08:11:39ОтветитьЦитировать
Simple777
И еще шляпа появилась в VFP ^

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

Но и твоя шляпа, и моя к SET DATE отношения не имеют.
Ratings: 0 negative/0 positive

Re: Непонятки с фигурными скобками в FPD 2.6
andrewk
Автор

Сообщений: 82
Дата: 04.06.18 11:41:29ОтветитьЦитировать
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: 34 dimuhametov Александр Жевелев  and Guests: 32


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