Форум: "Основная";
Текущий архив: 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