![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Упростить конструкцию [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);