Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.04.2011, 23:25
protot-ip protot-ip вне форума
Прохожий
 
Регистрация: 18.04.2011
Сообщения: 5
Репутация: 10
По умолчанию Нужна помощь

Здрасте, пишу программу для выключения компа по таймеру,
написал функцию которая выщитывает оставшееся время до выключения.
Сталкнулся с такой проблемой:
Когда я передаю функции строчку
Label1.Caption:=Ostatok('13:26:10', '13:35:15');
то она всё нормально выщитывает, но когда беру значения из переменной
Label1.Caption:=Ostatok(Time, Time);
вылазит ошибка "is not a valid integer value"
Переменная типа String, нет вней не лишних пробелов, нелишних символов.
Объясните нубу почему возникает эта ошибка???
Ответить с цитированием
  #2  
Старый 18.04.2011, 23:40
RAZDVATRITASHI RAZDVATRITASHI вне форума
Прохожий
 
Регистрация: 10.04.2011
Сообщения: 19
Репутация: 9
По умолчанию

дай код всей процедуры
Ответить с цитированием
  #3  
Старый 18.04.2011, 23:52
protot-ip protot-ip вне форума
Прохожий
 
Регистрация: 18.04.2011
Сообщения: 5
Репутация: 10
По умолчанию

Код:
function Ostatoc(Ttime:string; Timer:string):String;
var dd,mm,yy,S:integer; dd1,mm1,yy1,S1:Integer;
 begin
   Dd:=StrToInt(Copy(Ttime,1,pos(':',Ttime)-1));
     if (length(Ttime))=7 then
       S:=2
       else S:=3;
   Mm:=StrToInt(Copy(Ttime,pos(':',Ttime)+1,S-2));
   yy:=StrToInt(Copy(Ttime,S+4,length(Ttime)));

   Dd1:=StrToInt(Copy(Timer,1,pos(':',Timer)-1));
     if length(Timer)=7 then
       S1:=2
       else S1:=3;
   Mm1:=StrToInt(Copy(Timer,pos(':',Timer)+1,S1-2));
   yy1:=StrToInt(Copy(Timer,S1+4,length(Timer)));

   Result:='осталось: '+IntToStr(dd1-dd)+' час. '+IntToStr(mm1-mm)+' мин. '+IntToStr(yy-yy1)+' сек.';
 end;
Админ: Пользуемся тегами для оформления кода!

Последний раз редактировалось Admin, 19.04.2011 в 09:50.
Ответить с цитированием
  #4  
Старый 19.04.2011, 08:48
Аватар для AND_REY
AND_REY AND_REY вне форума
Активный
 
Регистрация: 31.03.2009
Адрес: Украина, г.Днепропетровск
Сообщения: 324
Версия Delphi: Delphi7
Репутация: 3877
По умолчанию

Так работает нормально, ошибок не выдаёт но вряд ли правильно считает к.т у меня минуты и сек с минусом получались.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Label1.Caption:= Ostatoc('12:11:10','13:12:15');
end;
Используй стандартные ф-нц для сравнения времени или переводи время всё в секунды потом отнимай добавляй и обратно в формат времени переводи.
__________________
If end Then begin;
Ответить с цитированием
  #5  
Старый 19.04.2011, 09:35
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

реализация 1:
Код:
function DiffTime(ANow: String; ATime: String): String;
begin
  Result:=TimeToStr(StrToDateTime(ATime)-StrToDateTime(ANow));
end;
реализация 2:
Код:
function DiffTime(ANow: String; ATime: String): String;
var
  diff: TDateTime;
  h, m, s, ms: Word;
begin
  diff:=StrToDateTime(ATime)-StrToDateTime(ANow);
  DecodeTime(diff, h, m, s, ms);
  Result:=Format('%.2d час. %.2d мин. %.2d сек.', [h, m, s]);
end;
использование:
Код:
begin
  Edit1.Text:=DiffTime(DateTimeToStr(Time), '12:00');
  Edit2.Text:=DiffTime(DateTimeToStr(Time), DateTimeToStr(Time));
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 19.04.2011, 12:12
protot-ip protot-ip вне форума
Прохожий
 
Регистрация: 18.04.2011
Сообщения: 5
Репутация: 10
По умолчанию

Вроде разобрался, всем спасибо!
Ответить с цитированием
  #7  
Старый 19.04.2011, 13:47
protot-ip protot-ip вне форума
Прохожий
 
Регистрация: 18.04.2011
Сообщения: 5
Репутация: 10
По умолчанию

А теперь как из даты вычесть дату?
Сколько непробовал год получается 1898
Ответить с цитированием
  #8  
Старый 19.04.2011, 16:14
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
function DiffTime(ANow: String; ATime: String): String;
var
  diff: TDateTime;
begin
  diff:=StrToDateTime(ATime)-StrToDateTime(ANow);
  Result:=Format('%.0f дн.', [diff]);
end;
кста, до нового года осталось 256 дней
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #9  
Старый 19.04.2011, 21:17
protot-ip protot-ip вне форума
Прохожий
 
Регистрация: 18.04.2011
Сообщения: 5
Репутация: 10
По умолчанию

Спасибо...
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:55.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025