Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.03.24;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.033 c
6-76564
Serge_T
2003-02-01 23:57
2003.03.24
WinSock


1-76426
valery
2003-03-11 14:37
2003.03.24
Автоматизация MsWord. Плавающая ошибка Interface not supported


1-76422
Serginio
2003-03-11 13:00
2003.03.24
Помогите примером вытаскивания из ITypeInfo всех методов и свойст


8-76520
SPIRIT
2002-12-12 13:50
2003.03.24
Прочитать TAG в MP3


3-76324
denis24
2003-03-05 15:20
2003.03.24
TFields.onGetText





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский