Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц, летом дешевле!

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2015, 19:50   #1
alex89d
Пользователь
 
Регистрация: 05.06.2014
Сообщений: 42
По умолчанию Сравнить два списка Datetime

Доброе время суток! Ошибка в цикле, совсем запутался) В итоговый список выводит слишком много значений, а должно выводиться всего одно.Как это исправить?
Код:
var i, j: integer;
a:Boolean;
tm1,tm2,dat,tim:TDateTime;
begin
  a:=False;
  for i:=0 to lst1.Items.Count-1 do
     begin
       tm1:=StrToDateTime(lst1.Items.Strings[i]);
        for j:=0 to lst2.items.count-1 do
           begin
              tm2:=StrToDateTime(lst2.Items.Strings[j]) ;
              if tm1>tm2 then
                 begin
                   dat:= Trunc(DaySpan(tm1, tm2));
                   tim := tm1 - tm2;
                   end else
                   begin
                    dat:= Trunc(DaySpan(tm2, tm1));
                    tim := tm2 - tm1;
                   end;
               if (StrToint(floatTostr(dat))>StrToint('0')) and
               (StrToTime(TimeToStr(tim))>StrToTime('01:00:00'))
                 then
                 begin
                   A := True;
                 end;
 
                if a=True then
                    begin
                      lst3.Items.Add(DateTimeToStr(tm2));
                    end;
              a:=False;
 
           end;
 
     end;
 
end;
Вложения
Тип файла: rar примеррр.rar (171.0 Кб, 9 просмотров)

Последний раз редактировалось Stilet; 10.05.2015 в 20:23.
alex89d вне форума Ответить с цитированием
Старый 11.05.2015, 00:42   #2
alex89d
Пользователь
 
Регистрация: 05.06.2014
Сообщений: 42
По умолчанию

Вопрос по прежнему актуален)))
alex89d вне форума Ответить с цитированием
Старый 11.05.2015, 06:32   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А можно поинтересоваться, зачем делать перевод из строки в дату?
В списках даты в каком виде сидят?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.05.2015, 12:58   #4
alex89d
Пользователь
 
Регистрация: 05.06.2014
Сообщений: 42
По умолчанию

В в списках сидят в типе string. а нужно пробежать по двум спискам и в третий вывести все значения где разница между датами больше одного дня и разница между временем больше 1 часа. Код работает, но в итоговый список выводится дубликаты, повторы найденной строки, хотя в примере в результате должно быть всего одно значение.
alex89d вне форума Ответить с цитированием
Старый 11.05.2015, 13:39   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А ты делай проверку:
Код:
 newdt:=DateTimeToStr(tm2);
 with lst3.Items if indexof(newdt)=-1 then Add(newdt);
Где newdt:String;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.05.2015, 16:54   #6
alex89d
Пользователь
 
Регистрация: 05.06.2014
Сообщений: 42
По умолчанию

А что не правильно в моем примере! хотелось все таки выяснить
alex89d вне форума Ответить с цитированием
Старый 11.05.2015, 17:04   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну не знаю )
Кроме того, что он громоздкий пожалуй ты как раз не делаешь сверку с сушествующим в третьем списке. Я бы точно делал не так, но поскольку я не знаю как твои два исходных списка построены пример накидать не могу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц, летом дешевле!

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнить два списка DozEL Microsoft Office Excel 3 27.04.2015 13:14
Как сравнить два цвета? Andruxai Общие вопросы по Java, Java SE, Kotlin 1 11.12.2013 14:40
Как сравнить два string? demigod82 Общие вопросы C/C++ 3 08.05.2012 23:07
Сравнить два файла demiancz Общие вопросы Delphi 22 16.02.2011 15:29
Сравнить два файла Aleksandr Microsoft Office Excel 6 07.10.2008 00:22