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

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

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

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

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

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

Доброе время суток! Ошибка в цикле, совсем запутался(((
Есть два списка типе datetime, нужно пробежать по двум спискам и в третий вывести все значения где разница между датами больше одного дня или если даты равны то разницу между временем больше к примеру 1 часа. кто может помочь?:confuse d:
alex89d вне форума Ответить с цитированием
Старый 13.05.2015, 12:15   #2
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

где сам цикл? что за ошибка? в каком месте при дебаге валится?
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Старый 13.05.2015, 12:38   #3
alex89d
Пользователь
 
Регистрация: 05.06.2014
Сообщений: 42
По умолчанию

Код:
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 Кб, 7 просмотров)

Последний раз редактировалось Serge_Bliznykov; 13.05.2015 в 13:03.
alex89d вне форума Ответить с цитированием
Старый 13.05.2015, 14:04   #4
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

зачем так писать
Цитата:
StrToint('0')
? можно же просто ноль поставить

а эта конструкция зачем?
Цитата:
StrToint(floatTostr
достаточно будет trunc(dat)
кстати ошибка тут и валится

Цитата:
StrToTime(TimeToStr
опять из пустого в порожнее

Цитата:
begin
A := True;
end;

if a=True then
begin
lst3.Items.Add(DateTimeToStr(tm2));
end;
a:=False;
зачем переменная А?
можно же вместо "A := True;" сразу поставить "lst3.Items.Add(DateTimeToStr(tm2)) ;" результат будет тот же
Пишу на Delphi за еду

Последний раз редактировалось Toxa; 13.05.2015 в 14:06.
Toxa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнить два списка Datetime alex89d Общие вопросы Delphi 6 11.05.2015 17:04
Сравнить два списка DozEL Microsoft Office Excel 3 27.04.2015 13:14
Считать два набора чисел из файла Joose Общие вопросы C/C++ 0 08.12.2013 20:29
Сравнить два файла demiancz Общие вопросы Delphi 22 16.02.2011 15:29
Сравнить два файла Aleksandr Microsoft Office Excel 6 07.10.2008 00:22