![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() Когда-то, на скорую руку, написал вот такой код:
Код:
YY := Copy(XMLList['FileName'], Pos('TE_000024_', XMLList['FileName']) + 10, 4); MM := Copy(XMLList['FileName'], Pos('TE_000024_', XMLList['FileName']) + 14, 2); DD := Copy(XMLList['FileName'], Pos('TE_000024_', XMLList['FileName']) + 16, 2); WorkDate := IncDay(StrToDate(DD + '.' + MM + '.' + YY), -1); Исходная строка (XMLList['FileName']) может принимать следующие значения: TE_000024_20150707 TE_000024_20150707_2 TE_000024_20150707_3 На выходе нужно получить TDateTime, чтоб потом уменьшит дату на 1 день |
#2
|
||||
|
||||
![]() Если это работает, то лучше и не трогать, может VarToDateTime можно подключить для краткости, но не факт, что будет лучше
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
![]() Ну, в принципе, код почти нормальный, хотя можно попробовать и оптимизировать.
Код:
var s : String; begin // Сл. 2 строки убирают обращение к листу, // Даже с учетом копирования данных будет быстрее. S := XMLList['FileName']; S := Copy(S,Pos('TE_00024_',S) + 10,8); // Теперь собираем дату и вычитаем 1 день. Result := EncodeDate(StrToInt(Copy(S,1,4)),StrToInt(Copy(S,5,2)),StrToInt(Copy(S,7,2))) - 1; end; |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Uniq! (09.03.2016)
|