![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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)
| ||