Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Упростить конструкцию [D7, WinXP]


нехочу называться ©   (2005-06-08 22:15:00) 

Помогите упростить конструкцию:

 mp:=mediaplayer1.Position;
 hi:=Trunc(mp/25/60/60);
 mi:=Trunc(mp/25/60-(hi*60));
 si:=Trunc(mp/25-(mi*60));
 h:=IntToStr(hi);
 m:=IntToStr(mi);
 s:=IntToStr(si);
 if Length(h)=1 then h:='0'+h;
 if Length(m)=1 then m:='0'+m;
 if Length(s)=1 then s:='0'+s;
 Label1.Caption:=h+':'+m+':'+s;


Юрий Зотов   (2005-06-09 02:32:00) [1]

> нехочу называться   (09.06.05 00:31) [7]

Идея кода обязана работать - она настолько элементарна, что не работать буквально не может. Нужно просто повнимательнее посмотреть справку по TimeFormat и внести поправки. Вероятнее всего, нужно использовать другое значение TimeFormat.


нехочу называться   (2005-06-09 00:31:00) [2]

Юрий Зотов ©   (09.06.05 00:03) [6]
Или справка врет или одно из двух. Но Ваш вариант показывает:
00:00:00 = a:b:c
где а постоянно увеличивается со скоростью кадров в сек. до 250, а потом увеичивается b на 1 и снова а. b до 20 я подождал, потом надоело =)


Юрий Зотов   (2005-06-09 00:03:00) [3]

> Помогите упростить конструкцию:

Ставим TimeFormat=tfHMS. Если верить справке, то после этого никакие вспомогательные переменные не нужны, а весь приведенный код заменяется одним оператором:

with MediaPlayer1 do
 Label1.Caption := Format('%2.2d:%2.2d:%2.2d',
   [Position and $FF, Position and $FF00 shr 8, Position and $FF0000 shr 16]);


Virgo_Style   (2005-06-08 22:47:00) [4]

нехочу называться   (08.06.05 22:31) [4]

Кажется, Position может выдаваться в кадрах или миллисекундах в зависимости от не помню чего. Так было бы надежнее - возможно, где-то будет не 25 кадров в секунду...


нехочу называться   (2005-06-08 22:31:00) [5]

Как ни странно =)
С первого раза скомпилировалось и работает как надо.


Alx2   (2005-06-08 22:24:00) [6]

Заработало хоть? (самому интересно :) )


нехочу называться   (2005-06-08 22:21:00) [7]

=)

Спасибо.


Alx2   (2005-06-08 22:20:00) [8]

Да вроде и так просто.

Разве что чуток короче будет так:

Label1.Caption:=TimeToStr(mediaplayer1.Position/2160000);


Наверх

Титульная страница Поиск, карта сайта Написать письмо