Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.26;
Скачать: CL | DM;

Вниз

Изменения типа данных   Найти похожие ветки 

 
KyRo   (2006-03-14 11:45) [0]

У меня есть строка в каторой теоретически должна находится дата в формате ( 12.01.2006 ) эту строку можно фунцией перевести в тип данных даты.
Как можно проверить что формат строки такой который можно перевести в дату ??


 
Джо ©   (2006-03-14 11:48) [1]

TryStrToDate?


 
Desdechado ©   (2006-03-14 12:25) [2]

> дата в формате ( 12.01.2006 )
это не формат, это дата, причем не то 12 января, не то 1 декабря
это к вопросу "во что ее можно перевести" - могут быть неоднозначности


 
balepa ©   (2006-03-14 12:33) [3]

function StrToDate(const S: string): TDateTime; overload;
переводит строку в дату в соответствии с настройками ОС

function StrToDate(const S: string; const FormatSettings: TFormatSettings): TDateTime; overload; с возможностью установки формата
F1


 
Johnmen ©   (2006-03-14 12:35) [4]


> Desdechado ©   (14.03.06 12:25) [2]
>
> > дата в формате ( 12.01.2006 )
> это не формат, это дата, причем не то 12 января, не то 1
> декабря
> это к вопросу "во что ее можно перевести" - могут быть неоднозначности


Это дата, представленная в германском формате.
И ничем, кроме  12 января быть не может...


 
Desdechado ©   (2006-03-14 13:08) [5]

> И ничем, кроме  12 января быть не может
Опять поспорить захотелось?
Может. Я могу вообще сделать дату в формате ddyyyymm и без разделителей, поди разбери тогда...
проверь
ShortDateFormat:="ddyyyymm";
showmessage(DateToStr(now()));


 
Johnmen ©   (2006-03-14 13:15) [6]

Ты можешь напридумывать множество разнообразных форматов, несомненно...


 
Desdechado ©   (2006-03-14 13:24) [7]

увы, не я
внешние системы и их изобретатели
а насмотрелся я их - ого-го сколько
так что закладываться на что-то без оговорения, что 12.01.2006 в формате-таки dd.mm.yyyy, нельзя
да ты и сам знаешь, только сопротивляешься :)


 
Johnmen ©   (2006-03-14 13:31) [8]

Если нельзя закладываться, то 12.01.2006 вообще не дата, а миллиметры.метры.километры
А в этом случае разбор нереализуем.


 
Джо ©   (2006-03-14 13:32) [9]

Ребята, вы о чем? Вопрос ведь выражен прямо:

> Как можно проверить что формат строки такой который можно
> перевести в дату ??


 
Anatoly Podgoretsky ©   (2006-03-14 13:34) [10]

Johnmen ©   (14.03.06 13:31) [8]
Закладываться можно, но Акцесс докажет, что нельзя.


 
Desdechado ©   (2006-03-14 13:41) [11]

Johnmen ©   (14.03.06 13:31) [8]
автор-то говорит "теоретически должна находится дата" и ее предполагаемый формат
но вот насколько предположения совпадают с реальностью?


 
Johnmen ©   (2006-03-14 13:42) [12]


> Anatoly Podgoretsky ©   (14.03.06 13:34) [10]
> Закладываться можно, но Акцесс докажет, что нельзя.


Если мы вообще хотим что-то сделать, то закладываться нужно!
Не знаю, что там думает т.Акцесс, пусть здесь излагает своё док-во!
:)


 
Anatoly Podgoretsky ©   (2006-03-14 13:45) [13]

Johnmen ©   (14.03.06 13:42) [12]
А он и докажет, что это 1 декабря, а 13.01.2006 - 13 января


 
Johnmen ©   (2006-03-14 13:50) [14]


> Anatoly Podgoretsky ©   (14.03.06 13:45) [13]
> А он и докажет, что это 1 декабря, а 13.01.2006 - 13 января


Не сомневаюсь, что т.Акцесс на многое способен. Вот пусть и приводит доказательства! А не свои беспочвенные выводы...:)


 
Sergey13 ©   (2006-03-14 13:50) [15]

2KyRo   (14.03.06 11:45)
>У меня есть строка в каторой теоретически должна находится дата
Ну так и измени тип данных со "Строка" на "Дата" и проверять ничего не надо будет.


 
Desdechado ©   (2006-03-14 13:56) [16]

> Ну так и измени тип данных
Похоже, у автора именно такая задача и стоит. Есть строковое поле, в которое ручками долбили даты. Но вот как их туда вдолбили, знают только долбильщики. Поэтому формат будет весьма произвольный. Подозреваю, что:
- день будет все-таки не между месяцем и годом, бо у нас так не пишут
- порядок гггг.мм.дд или дд.мм.гггг
- возможно, год будет короткий
- возможно, будут другие разделители (в т.ч. запятые и пробелы)
- возможно, разделители будут по несколько (две точки подряд или точка-пробел)


 
Desdechado ©   (2006-03-14 13:57) [17]

да, не договорил
автору, видимо, нужно конвертнуть это в поле типа "дата", вот и озадачился


 
Anatoly Podgoretsky ©   (2006-03-14 13:59) [18]

Так пусть и конвертирует, зачем проверять то?
А что он будет делать если не проверится?


 
KyRo   (2006-03-14 14:12) [19]

Дело не в формате даты !!! Формат всегда у меня один это дни.месяцы.год
Но проблема в том что место строки (12.01.2006) у меня может быть вариант когда будет (12.01.укуычвв) или вообще (выаываываыв) что то такое при переводе такой строки будет ошибка , а мне надо что бы она не возникала , для этого я и хочу проверить можно ли строку переводить в тип дата или же у меня бракованая строка и ее надо откинуть .


 
Джо ©   (2006-03-14 14:13) [20]

> [19] KyRo   (14.03.06 14:12)
> Дело не в формате даты !!! Формат всегда у меня один это
> дни.месяцы.год
> Но проблема в том что место строки (12.01.2006) у меня может
> быть вариант когда будет (12.01.укуычвв) или вообще (выаываываыв)
> что то такое при переводе такой строки будет ошибка , а
> мне надо что бы она не возникала , для этого я и хочу проверить
> можно ли строку переводить в тип дата или же у меня бракованая
> строка и ее надо откинуть .

Ну, так смотри пост [1] Джо ©.


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

Конечно я могу проверить строку на вхождение точек и чисел но это так же не гарантирует мне что она будет правильной


 
Sergey13 ©   (2006-03-14 14:17) [22]

2 [21] KyRo   (14.03.06 14:14)
Гарантирует только изменение типа.


 
Джо ©   (2006-03-14 14:20) [23]

> [21] KyRo   (14.03.06 14:14)
> Конечно я могу проверить строку на вхождение точек и чисел
> но это так же не гарантирует мне что она будет правильной

То, что она будет правильной не может гарантировать НИКТО и НИЧТО.


 
KyRo   (2006-03-14 14:28) [24]

Я думаю что TryStrToDate это то что мне и нужно буду щас пробовать


 
Sergey13 ©   (2006-03-14 14:34) [25]

2[24] KyRo   (14.03.06 14:28)
Она вроде зависит от региональных настроек, т.е. на разных машинах с одной строкой можно получить разные результаты.


 
Johnmen ©   (2006-03-14 14:35) [26]

DateSeparator := ".";
ShortDateFormat := "dd.mm.yyyy";
try
d:=StrToDate(s);
...


 
Джо ©   (2006-03-14 14:36) [27]

> [25] Sergey13 ©   (14.03.06 14:34)
> Она вроде зависит от региональных настроек, т.е. на разных
> машинах с одной строкой можно получить разные результаты.

Она зависит от содержимого глобальной переменной DateSeparator.


 
KyRo   (2006-03-14 18:20) [28]


> DateSeparator := ".";
> ShortDateFormat := "dd.mm.yyyy";
> try
> d:=StrToDate(s);
> ...

Ну это совсем не то .!!
Хотя тот вариант с TryDateToStr() мне вроде как подошол щас пратестирую и есле глюков не будет то ее и оставлю



Страницы: 1 вся ветка

Текущий архив: 2006.03.26;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.053 c
3-1138877901
Alex_1234
2006-02-02 13:58
2006.03.26
Группировка по временным интервалам...


2-1142263597
VitV
2006-03-13 18:26
2006.03.26
Interbase. Пусто поле....


2-1142317624
chapchaps
2006-03-14 09:27
2006.03.26
Дельфи


1-1140478735
kilop
2006-02-21 02:38
2006.03.26
Интерпретатор Pascal на Delphi


1-1140463549
Grol
2006-02-20 22:25
2006.03.26
Потоки созданные ExcelApplication