Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.044 c
8-1129731831
Torvald
2005-10-19 18:23
2006.03.26
EnumSurfaces в контексте потока чужего процесса


15-1141209859
Никита
2006-03-01 13:44
2006.03.26
Описание стандарта Object Pascal


2-1141906227
jeka_t
2006-03-09 15:10
2006.03.26
Может ли DBGrid иметь разное значение RowsHeigth для каждой Ячейк


2-1141973054
Елена
2006-03-10 09:44
2006.03.26
Работа с динамическими компонентами


4-1136460435
Arazel
2006-01-05 14:27
2006.03.26
Как прочитать/записать MBR из под Win9x





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский