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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2010, 03:39   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию Обратный отсчет в формате минуты и секунды

Задаю таймеру время 330000 (5 с половиной минут). Вывожу обратный отсчёт в статус бар
Код:
dec(C);
StatusBar1.Panels.Items[2].Text := 'Проверка процесса через ' + intToStr(C) + ' сек';
Выводится так: Проверка процесса через 330000 сек. Как сделать, чтобы показывалось так: Проверка процесса через 5 мин 30 сек?
Shouldercannon вне форума Ответить с цитированием
Старый 13.04.2010, 04:03   #2
maLoy*508
Форумчанин
 
Аватар для maLoy*508
 
Регистрация: 28.03.2008
Сообщений: 672
По умолчанию

как вариант - делить на 60(в твоем случае на 60000) mod и div...
в одном случае получим целую часть от деления, а в другом остаток от деления...
ход мыслей думаю ясен
maLoy*508 вне форума Ответить с цитированием
Старый 13.04.2010, 11:45   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Не догадаюсь. Можно кодом?
Shouldercannon вне форума Ответить с цитированием
Старый 13.04.2010, 12:27   #4
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

вот что имел ввиду maLoy*508
Код:
var
  Sec: integer;
begin

dec(C);

sek:=c div 60; // переводим в секунды

StatusBar1.Panels.Items[2].Text := 'Проверка процесса через ' + intToStr(sek) + ' сек';
принимаю благодарности в письменном виде( весы слева)...
MaxNik2009 вне форума Ответить с цитированием
Старый 13.04.2010, 13:38   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Чет не то. Задача заключается в том, чтобы в статус баре был не такой отсчёт 350000 сек, а такой 5 мин 30 сек. С данным кодом постоянно показывает Проверка процесса через 0 сек
Shouldercannon вне форума Ответить с цитированием
Старый 13.04.2010, 13:44   #6
maLoy*508
Форумчанин
 
Аватар для maLoy*508
 
Регистрация: 28.03.2008
Сообщений: 672
По умолчанию

примерно следующее
Цитата:
var sek, min.....
.....
min := c div 60000 // получаем целое(т.е. 330000 div 60000 = 5)
sek := c mod 60000 / 1000 // получаем остаток (т.е. 330000 mod 60000 = 30000 / 1000 = 30
.....
вот что я имел ввиду
maLoy*508 вне форума Ответить с цитированием
Старый 13.04.2010, 22:36   #7
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Разобрался, но теперь не получается нормально обработать значение для таймера. Ставится значение Min UpDown1, а не загружаемое.
Вложения
Тип файла: rar Reg.rar (5.6 Кб, 9 просмотров)

Последний раз редактировалось Shouldercannon; 14.04.2010 в 02:32.
Shouldercannon вне форума Ответить с цитированием
Старый 14.04.2010, 07:26   #8
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

Код:
procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
var
F: TRegIniFile;
begin
F := TRegIniFile.Create('Software');
  F.OpenKey('Project1', true);
    F.WriteString('Settings', 'Time', Edit1.Text);
    C:= StrToIntDef(Edit1.Text, 0) * 60; // вот так надо бы
      F.Free;
end;
принимаю благодарности в письменном виде( весы слева)...
MaxNik2009 вне форума Ответить с цитированием
Старый 14.04.2010, 12:44   #9
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Не то. Вот простой выход, который ещё вчера нашёл, но он старнно работал, секунды нормально отсчитывались потом очень быстро и так до конца (отсчёт с разной скоростью), сегодня всё нормально стало.
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
F: TRegIniFile;
begin
F := TRegIniFile.Create('Software');
  F.OpenKey('Project1', true);
    Self.UpDown1.Position := StrToInt(F.ReadString('Settings', 'Time', '10'));
      F.Free;
        Timer1.Enabled := True;
          //C := StrToIntDef(Edit1.Text, 0) * 60;
          C := StrToInt(Edit1.Text);
end;
Так не работает
Код:
Form1.C := StrToInt(Edit1.Text);
Если ещё и часы добавить, то будет так?
Код:
var
  sec, min, hour: Integer;
begin
  dec(C);

  hour := C div 60;
  min := C mod 60;
  sec := (C mod C) mod 60;
И как в случае с часами будет выглядеть
Код:
C:= StrToIntDef(Edit1.Text, 0) * 60;

Последний раз редактировалось artemavd; 05.08.2010 в 15:29.
Shouldercannon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как текстовый файл в формате word 2007 переделать в файл в формате ZAY JULIA Microsoft Office Word 13 09.06.2010 19:43
Обратный отсчет в real time Alex Cones JavaScript, Ajax 5 09.04.2010 02:14
Таймер. Конвертирование ms в часы,минуты, секунды.. ищу решения.. Человек_Борща Общие вопросы Delphi 3 08.04.2010 09:51
обратный отсчет(таймер) DEsh Microsoft Office Excel 1 19.11.2009 22:45
Обратный отсчет в прогрессбар Stanislav Общие вопросы Delphi 3 09.01.2008 16:49