Главная страница
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
1-76495
avet
2003-03-12 15:13
2003.03.24
в переменной записано название процедуры


4-76733
ILIAK
2003-01-27 16:28
2003.03.24
Создание десктопов в Windows 2000/XP


1-76479
Slym
2003-03-11 19:48
2003.03.24
Поворот текста из нескольких строк в TPicture...


3-76346
gorv
2003-03-05 18:36
2003.03.24
Convert DBF to CSV


1-76450
Leran2002
2003-03-11 15:34
2003.03.24
Lotus Notes 5