Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
ВнизИзменения типа данных Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.045 c