Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему функция возвращает фалсе


KyRo ©   (2006-03-21 12:02:00) 

if TryStrToDate(Trans[6],DT)
             then
            ERR_Table.FieldByName('DATE_TR').Value:=Trans[6];


Подскажите почему Фалсе если число 12.22.04 и нормально все когда
04.01.05 ?

Формат даті в базу вводится именно такой как и надо


balepa   (2006-03-21 12:56:00) [1]

Если знаеш на каких устройствах какие форматы можно и отсеять по устройствам (если конечно в базе есть названия устройств)


Рамиль   (2006-03-21 12:53:00) [2]

При такой постановке задачи НЕЛЬЗЯ опираться на результат TryStrToDate.
Надо знать, от какого устройства данные и преобразовывать в соответсвии с ним. Проверить в каком формате дата нельзя, потому что, например 01.01.06 может быть одновременно и в формате DD.MM.YY и в формате MM.DD.YY. Неужели не понятно?!.


Reindeer Moss Eater   (2006-03-21 12:51:00) [3]

Да никак, если ты еще не понял.

'01.02.03'

Это может быть и первое февраля и второе января.
При обеих форматах системной даны dd.mm.yy и mm.dd.yy
эта строка преобразуется в валидную дату.


KyRo   (2006-03-21 12:47:00) [4]


> Sergey13 ©

У меня и так поле формата дата.
На сервере дата в нашем формате покрайней мере отображается в нашем.
Даты которые поставляются , поставляются разными устройствами и переконфигурировать их не реально , а насчет принимать как есть то я не могу иначе я не смогу эту запись потом найти в базе !! Мне надо что бы у нее обязательно была дата.

Если я буду переводить дату в случае фалса функцией
FormatDateTime('mm.dd.yyyy', fsDateTimePicker3.date);
то у меня может быть вариант когда вообще  вместа даты прийдет
строка в виде '12.sZA.23' и если на такую строку нарветса функция то будет ошибка.
Мне надо как то тогда проверить в каком формате эта дата
как это можно сделать ?


Reindeer Moss Eater   (2006-03-21 12:43:00) [5]

если у меня половина дат в одном формате , а другая половина в другом как проверить в каком формате дата ??

06.11.06
11.07.06

это 6-nov-2006 и 11-jul-2006?
или может это 11 июня 2006 и 11 июля 2006?
нет, а может это 6 ноября и 7 ноября?


Reindeer Moss Eater   (2006-03-21 12:34:00) [6]

>как проверить в каком формате дата ??

Тебе про это функция рассказывает TryStrToDate.
Надо принимать её результат как есть, а не чесать репу почему она тебе фальш возвратила.
Раз возвратила значит аргументом  была не дата.


Sergey13   (2006-03-21 12:34:00) [7]

2[9] KyRo   (21.03.06 12:30)
Я тебе давно говорил, что лучше перевести поле в формат даты и не маяться с форматированием строки.
Иначе, чувствую, недалек тот день, когда ты спросишь - "а как мне отсеять записи по диапазону дат?".


Плохиш   (2006-03-21 12:34:00) [8]


> KyRo   (21.03.06 12:30) [9]
> Ну я вообщем то понял из за чего .
> Подскажите тогда что лучше сделать если у меня половина
> дат в одном формате , а другая половина в другом как проверить
> в каком формате дата ??

Это надо спросить у того, кто тебе эти данные поставляет.


KyRo   (2006-03-21 12:30:00) [9]

Ну я вообщем то понял из за чего .
Подскажите тогда что лучше сделать если у меня половина дат в одном формате , а другая половина в другом как проверить в каком формате дата ??


Рамиль   (2006-03-21 12:27:00) [10]


> Потому как некоторы даты в этом формате проходят , а некоторые
> нет ??

Да не некоторые.
04.01.05 интерпретируется как 4-ое января
а
12.22.04 как 12-ое 22-ого месяца.
Первый же ответ

> Плохиш ©   (21.03.06 12:05) [1]

был исчерпывающим, что тебе еще надо?


Плохиш   (2006-03-21 12:20:00) [11]


> KyRo   (21.03.06 12:12) [4]
> Предлогаете перевести в длинный формат ??

Это ваша программа

> Потому как некоторы даты в этом формате проходят , а некоторые
> нет ??

Чушь


Reindeer Moss Eater   (2006-03-21 12:19:00) [12]

>Предлогаете перевести в длинный формат ??

Лично я предлагаю не ограничиваться полумерами, я предлагаю реформу календаря.


Сергей М.   (2006-03-21 12:17:00) [13]


> Потому как некоторы даты в этом формате проходят , а некоторые
> нет ?


И какие же "нет" ?


KyRo   (2006-03-21 12:12:00) [14]

Предлогаете перевести в длинный формат ??
Потому как некоторы даты в этом формате проходят , а некоторые нет ??


Reindeer Moss Eater   (2006-03-21 12:06:00) [15]

ShowMessage(ShortDateFormat);


Плохиш   (2006-03-21 12:05:00) [16]

Локальные настройки короткой даты "DD.MM.YY"


Сергей М.   (2006-03-21 12:05:00) [17]


> почему Фалсе


Ну наверно потому что (цитата из справки)

S must consist of two or three numbers, separated by the character defined by the DateSeparator global variable or its TFormatSettings equivalent


Наверх

Титульная страница Поиск, карта сайта Написать письмо