![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
StrToDateTime vs Я [D7, WinXP]
R1ka © (2008-07-19 16:33:00)Как бы заставить эту функцию переварить вот такое: "Thu, 24 Apr 2008 06:48:52" ? Уже 10 часов парюсь =(
Johnmen (2008-07-19 19:30:00) [21]
> Renegat © (19.07.08 17:25) [6]
Ты это о чём?
Renegat (2008-07-19 17:27:00) [22]> шестой символ
*извиняюсь, седьмой.
Renegat (2008-07-19 17:25:00) [23]Алгос:
0) Берём структуру st: SYSTEMTIME.
1) Приводим строку к PChar.
2) Сравниваем третий символ с массивом ['n', 'e', 'd', 'u', 'i', 't'].
3) Если подошёл символ 'n', то сравниваем второй символ. Если он равен 'u', проставляем в st.wDayOfWeek значение 0. Иначе - индекс массива, на котором сошлась третья буква.
4) Сравниваем шестой символ с пробелом.
а) Если сошлось:
Отнимаем от него 48 (48 = 30h = ord('0')) и заносим результат в st.wDay, переходим к [5].
б) Если не сошлось:
MOV EDX, BYTE PTR [EAX+5];
LEA EDX, [EDX*4+EDX-48*5];
MOV ECX, BYTE PTR [EAX+6];
LEA EDX, [EDX*2+ECX-48];
, где ЕАХ - указатель на тот самый PChar, а в EDX после выполнения будет лежать результат.
Влом думать, как это будет на Дельфях.
Пусть это будет в счёт д/з ;)
Короче, значение из EDX копируем в st.wDay
5) ... ну, и далее по образцу =)
R1ka (2008-07-19 17:06:00) [24]понятно. спасибо
{RASkov} (2008-07-19 17:03:00) [25]....ну и очивидно, что наоборот, из кучи разных вариантов строк, получить одно и тоже число проблематичнее...
{RASkov} (2008-07-19 17:01:00) [26]> [2] R1ka © (19.07.08 16:52)
Потому как из единственного числа, чем и является дата, можно получить множество разных вариантов прдставления этой самой даты в строковом виде...
R1ka (2008-07-19 16:52:00) [27]почему никак? FormatDateTime же позволяет создать точно такую же строку, Неужели не предусмотрено обратное действие :(
{RASkov} (2008-07-19 16:37:00) [28]Никак. Только свою писать... но тут.... многое зависит)