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

Вниз

Timer   Найти похожие ветки 

 
Валет   (2002-06-13 15:16) [0]

Timer1 Глючит на 400-сотом и 1000-ом
как этого избежать ?


 
Валет   (2002-06-13 15:33) [1]

Т.Е по разному ходят часы написанные на таймере с интервалом в 1 секунду


 
Digitman   (2002-06-13 16:55) [2]

Как это - "по разному" ?


 
Валет   (2002-06-14 09:14) [3]

У друка на 400-сотом Celeron часы остают секунд на 10 в 3 часа.


 
Digitman   (2002-06-14 09:30) [4]

а на 1000-ом ?

дай код обработчика Timer1


 
Валет   (2002-06-14 10:14) [5]

procedure TForm1.Timer1Timer(Sender: TObject);
Var
Sek1, Sek2, Min1, Min2, Hour1, Hour2, Hour3, Hour4 : Byte;
begin
Sek2:=Sek2+1;
Image10.Picture.LoadFromFile( ExtractFilePath(Application.ExeName)+"Num\"+inttostr(Sek2)+".bmp");
if Sek2 >= 10 then
begin
Image10.Picture.LoadFromFile( ExtractFilePath(Application.ExeName)+"Num\0.bmp");
Sek2:=0;
Sek1:=Sek1+1;
Image9.Picture.LoadFromFile( ExtractFilePath(Application.ExeName)+"Num\"+inttostr(Sek1)+".bmp");
end;
if Sek1 >= 6 then
begin
Image9.Picture.LoadFromFile( ExtractFilePath(Application.ExeName)+"Num\0.bmp");
Min2:=Min2+1;
Image7.Picture.LoadFromFile( ExtractFilePath(Application.ExeName)+"Num\"+inttostr(Min2)+".bmp");
Sek1:=0;
end;
if min2 >= 10 then
begin
Image7.Picture.LoadFromFile( ExtractFilePath(Application.ExeName)+"Num\0.bmp");
Min1:=Min1+1;
Image6.Picture.LoadFromFile( ExtractFilePath(Application.ExeName)+"Num\"+inttostr(Min1)+".bmp");
Min2:=0;
end;
if min1 >= 6 then
begin
Image6.Picture.LoadFromFile( ExtractFilePath(Application.ExeName)+"Num\0.bmp");
Hour4:=Hour4+1;
Image4.Picture.LoadFromFile( ExtractFilePath(Application.ExeName)+"Num\"+inttostr(Hour4)+".bmp");
Min1:=0;

if Hour4 >= 10 then
begin
Image4.Picture.LoadFromFile( ExtractFilePath(Application.ExeName)+"Num\0.bmp");
Hour3:=Hour3+1;
Image3.Picture.LoadFromFile( ExtractFilePath(Application.ExeName)+"Num\"+inttostr(Hour3)+".bmp");
Hour4:=0;
end;
if Hour3 >= 10 then
begin
Image3.Picture.LoadFromFile( ExtractFilePath(Application.ExeName)+"Num\0.bmp");
Hour2:=Hour2+1;
Image2.Picture.LoadFromFile( ExtractFilePath(Application.ExeName)+"Num\"+inttostr(Hour2)+".bmp");
Hour3:=0;
end;
if Hour2 >= 10 then
begin
Image2.Picture.LoadFromFile( ExtractFilePath(Application.ExeName)+"Num\0.bmp");
Hour1:=Hour1+1;
Image1.Picture.LoadFromFile( ExtractFilePath(Application.ExeName)+"Num\"+inttostr(Hour1)+".bmp");
Hour2:=0;
end;
if Hour2 >= 10 then
begin
ShowMessage("Ну вы блин даёте");
end;
end;


 
Digitman   (2002-06-14 10:39) [6]

вот уж точно : ShowMessage("Ну вы блин даёте, сударь !!!!!!!!");


1.
вот ты тут пишешь :
var
Sek2: ...
begin
Sek2:=Sek2+1;
... и т.д.


вопрос тебе "на засыпку" : чему равно значение Sek2 перед тем, как оно будет инкрементировано ?

2. Кто тебя так учил - раз в секунду грузить одни и те же картинки с диска ?
Ты прочитай их все в память перед запуском часов, из памяти и грузи в св-во Image1.Picture. Потери времени на поиск дискового файла с картинкой, его загрузку в память и подготовку к последующему отображению могут быть значительны (даже при кэшировании), и этот факт вполне может влиять на "отставание" часов : загрузка файла может длиться (при определенных условиях) и более 1 сек. При этом события таймера будут вызываться не 1 раз в 1 сек. (как ты , видимо, ожидаешь), а чуть реже; такая ситуация как раз и приводит к "отставанию" часов


 
Валет   (2002-06-14 11:10) [7]

>Digitman © (14.06.02 10:39)
>Ты прочитай их все в память перед запуском часов, из памяти и >грузи в св-во Image1.Picture

А можно пример.


 
Digitman   (2002-06-14 11:29) [8]

var
BitmapArray: array [0..N] of TBitmap;
...
//загрузка в память всех нужных картинок
//последующие обращения к картинкам - по их индексам в массиве
for i:= 0 to N - 1 do
begin
BitmapArray[i] := TBitmap.Create;
BitmapArray[i].LoadFromFile(...);
end;

//ассоциация требуемого Image-контрола с требуемой картинкой c индексом M в массиве картинок
Image.Picture.Bitmap := BitmapArray[M];


 
Валет   (2002-06-14 14:11) [9]

Так оптимальнее ?

procedure TForm1.FormCreate(Sender: TObject);
Var
i:Byte;
begin
For i:=0 to 9 do
begin
BitmapArray[i] := TBitmap.Create;
BitmapArray[i].LoadFromFile(ExtractFilePath(Application.ExeName)+"Num\"+inttostr(i)+".bmp");
end;
end;

Sek2:=Sek2+1;
Image10.Picture.Bitmap:=BitmapArray[sek2];
if Sek2 >= 10 then
begin
Image10.Picture.Bitmap:=BitmapArray[0];
Sek2:=0;
Sek1:=Sek1+1;
Image9.Picture.Bitmap:=BitmapArray[sek1];
end;
if Sek1 >= 6 then
begin
Image9.Picture.Bitmap:=BitmapArray[0];
Min2:=Min2+1;
Image7.Picture.Bitmap:=BitmapArray[min2];
Sek1:=0;
end;
if min2 >= 10 then
begin
Image7.Picture.Bitmap:=BitmapArray[0];
Min1:=Min1+1;
Image6.Picture.Bitmap:=BitmapArray[Min1];
Min2:=0;
end;
if min1 >= 6 then
begin
Image6.Picture.Bitmap:=BitmapArray[0];
Hour4:=Hour4+1;
Image4.Picture.Bitmap:=BitmapArray[Hour4];
Min1:=0;
if N4.Checked = true then
Begin
Time:=TIniFile.create(ExtractFilePath(Application.exename)+"num\11.Bmp");
Time.WriteInteger("


 
Digitman   (2002-06-14 15:51) [10]

теперь в другую крайность ударился)

Time:=TIniFile.create(ExtractFilePath(Application.exename)+"num\11.Bmp");


Раз в секунду открываешь и закрываешь файл


 
Валет   (2002-06-14 16:33) [11]

Бля, тфу-ты мне на до раз в 10 мин.
Ща подправлю ;)



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

Форум: "Основная";
Текущий архив: 2002.06.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
3-88749
Aleksandr
2002-06-03 14:11
2002.06.27
Как корректно настроить ADO на Paradox?


3-88753
exteris
2002-06-04 16:36
2002.06.27
MS SQL 2000


1-88855
kull
2002-06-17 15:00
2002.06.27
Как запустить процедуру после открытия модального окна?


14-89026
DenKop
2002-05-26 22:17
2002.06.27
Массовая рассылка.


6-88975
Freddy
2002-04-19 09:33
2002.06.27
NMSMTP, OnInvalidHost- проблемы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский