Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.24;
Скачать: CL | DM;

Вниз

такой вот нехитрый вопросик...   Найти похожие ветки 

 
reticon ©   (2003-03-11 23:01) [0]

Уважаемые мастера помогите пожалуйст. Сделал я значит одну программку, в которой с помощью компонента
ТМедиаПлеер проигрывается AVI-файл. При создании формы начинает проигрываться видео, а при нажатии на пробел активируется таймер, обработчик которого следующий:

procedure TForm2.Timer1Timer(Sender: TObject);
begin
Gauge1.Progress:=Gauge1.Progress + 1;
if Gauge1.Progress = 100 then
begin
Sleep(1000);
Gauge1.Visible:=false;
Timer1.Enabled:=false;
Gauge1.Progress:=0;
end;
end;


Так вот, на компе с конфигурацией Celeron-1700, 650 ОЗУ,
GeForce-4 64МБ все идет прекрасно без тормозов, а на других компах (с конфигурацией в два раза хуже), при активировании таймера начинаются тормоза (пока timer.active = false видео проигрывается без тормозов). Как избежать этого и возможно ли такое, ведь вроде ничего такого нет сильно зависящего от аппаратной конфигурации компа? Заранее благодарен.


 
MAN-In-RED ©   (2003-03-11 23:03) [1]


> Sleep(1000);

Это плохая бяка...
А от плохих бяк надо избавлятся...


 
reticon ©   (2003-03-11 23:05) [2]

А как избавиться если мне нужна задержка в 1 сек. Может тогда чем-нить заменить?


 
MAN-In-RED ©   (2003-03-11 23:07) [3]

А интервал у таймера какой?


 
reticon ©   (2003-03-11 23:12) [4]

Интервал равен 30


 
MAN-In-RED ©   (2003-03-11 23:18) [5]

procedure Delay(Value: Cardinal);
var
F,
N :Cardinal;
begin
N := 0;

while N<=(Value div 10) do
begin
SleepEx(1,True);
Application.ProcessMessages;
Inc(N);
end;

F := GetTickCount;

repeat
Application.ProcessMessages;
N := GetTickCount;
until (N-F>=(Value mod 10)) or (N<F);
end;








Delay(1000); //Задержка на одну секунду


 
MAN-In-RED ©   (2003-03-11 23:19) [6]

И интервал таймеру ставь минимум 50


 
MAN-In-RED ©   (2003-03-11 23:31) [7]

А можно проще:

if Timer1.Interval=1000 then
ProgressBar1.Hide
else
begin
ProgressBar1.Position := ProgressBar1.Position+1;

if ProgressBar1.Position=100 then
Timer1.Interval := 1000
else
Timer1.Interval := 1;
end;


Типа того...


 
reticon ©   (2003-03-11 23:38) [8]

Спасибо. Завтра проверю на другой машине - скажу как работает


 
reticon ©   (2003-03-12 12:25) [9]

нифига таймер, задержка тут не причем - тормозит только видео



Страницы: 1 вся ветка

Текущий архив: 2003.03.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
9-76243
Tihas
2002-10-21 01:14
2003.03.24
Какой самый простой способ наложения текстуры?


6-76556
Фыеукщшв
2003-02-03 16:20
2003.03.24
Как работать через PROXY?


3-76319
Pluto
2003-03-05 13:00
2003.03.24
Репликация


1-76387
ЮРИЙ_К
2003-03-05 14:22
2003.03.24
Как отследить, что другая программа завершилась?


3-76300
Бедный Йорик
2003-03-04 21:25
2003.03.24
Выполнение ADO запросов в потоке