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

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

Тупой вопрос!!! [D7, XP]


Varf ©   (2006-10-24 08:50:00) 

Гсопода помогите че то голова не работает!!!!
---есть строка типа: 1.09.2006 00:00 (тип Variant)
нужно ее сделать типом TDate вида:1.09.2006
заранее спасибо!!!


Anatoly Podgoretsky   (2006-10-24 12:54:00) [1]

есть строка типа: 1.09.2006 00:00 (тип Variant)
Тут возможны всякие варианты, поэтому и предложено преобразовать в строку, но тут опять варианты, будет ли в результате строка "1.09.2006 00:00"
Пока для меня вопрос смутный.


Ketmar   (2006-10-24 09:45:00) [2]

как же я люблю велосипеды! в CDM я дату/время честно разламываю на кусочки руками, и делаю EncodeDateTime(). %-)


Джо   (2006-10-24 09:39:00) [3]

> [11] Anatoly Podgoretsky ©   (24.10.06 09:35)
> Ему надо отрезать то что после пробела, а вот сам вопрос

Отрезать не проблема :) Да, в принципе, это даже не нужно, достаточно использовать StrToDate.

>
> в частном решается, если
> известен точный формат и он гарантируется.

Формат был описан в [0]. А гарантироваться он обязан в любом случае — что в случае использования готовой библиотечной функции StrToDate[Time], что в случае изготовления самописного парсера, не так ли?


Anatoly Podgoretsky   (2006-10-24 09:35:00) [4]

Ему надо отрезать то что после пробела, а вот сам вопрос

> нужно ее сделать типом TDate

В общем случае не имеет решения, в частном решается, если известен точный формат и он гарантируется.


Джо   (2006-10-24 09:14:00) [5]

> [9] Anatoly Podgoretsky ©   (24.10.06 09:12)
Подход не системный.

Обоснуйте.


Anatoly Podgoretsky   (2006-10-24 09:12:00) [6]


> Лучше используй подход из поста [4].

У которого могут быть неожиданные побочные эффекты. Подход не системный.


Varf   (2006-10-24 09:11:00) [7]

да да спасибо


Anatoly Podgoretsky   (2006-10-24 09:11:00) [8]

Это не строка, но если преобразовать к строке, то далее задача простая
StrLength(S, Pos(' ', S) -  1)


Джо   (2006-10-24 09:08:00) [9]

> [5] Varf   (24.10.06 09:03)

Лучше используй подход из поста [4].


Varf   (2006-10-24 09:03:00) [10]

Спасибо всем!!!
я про это не знал:
DateSeparator := '.';
TimeSeparator := ':';


Джо   (2006-10-24 09:02:00) [11]

>
>
> [3] ЮЮ ©   (24.10.06 08:57)
> 1.09.2006 может быть как 1 сентября, так и 9 января.


Что ж, тогда так:

var
 V: Variant;
 Dt: TDate;
...
 V := '1.09.2006 00:00';
 ShortDateFormat := 'd.mm.yyyy';
 Dt := StrToDateTime(V);


ЮЮ   (2006-10-24 08:57:00) [12]

1.09.2006 может быть как 1 сентября, так и 9 января.


Джо   (2006-10-24 08:55:00) [13]

var
 V: Variant;
 Dt: TDate;
...
 V := '1.09.2006 00:00';
 DateSeparator := '.';
 TimeSeparator := ':';
 Dt := StrToDateTime(V);


ЮЮ   (2006-10-24 08:55:00) [14]

"разобрать" стоку на составляющие: Copy
преобразовать к целым: StrToInt
преобразовать к TDate: EncodeDateTime


Наверх

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