Главная страница
    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
1-88879
AlexT1000
2002-06-13 19:31
2002.06.27
аналог TShellTreeView из D6


1-88925
Коля
2002-06-15 05:05
2002.06.27
добавить документ в меню


1-88929
Korona
2002-06-14 20:26
2002.06.27
TForm1.Create(Screen)


1-88811
Charlz
2002-06-16 16:23
2002.06.27
Определение дня недели из заданой даты


1-88826
tamerlan311
2002-06-17 11:07
2002.06.27
Помогите создать безхозный процесс





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