Главная страница
    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.047 c
9-1126253501
RzCoDer
2005-09-09 12:11
2006.03.26
ладшафт в OpenGL


1-1140416878
V.exeR
2006-02-20 09:27
2006.03.26
Корзина (Recycled)


5-1127898961
Иванов__
2005-09-28 13:16
2006.03.26
Нужен компонент HTML-редактор


1-1140096851
Дмитрий_177
2006-02-16 16:34
2006.03.26
Как увеличить изображение в Image?


15-1141284592
КаПиБаРа
2006-03-02 10:29
2006.03.26
Каким будет программирование в 2030 году?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский