Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.29;
Скачать: CL | DM;

Вниз

Самый простой алгоритм часов   Найти похожие ветки 

 
DeMoN-777 ©   (2002-07-02 18:23) [0]

Мастера не подскажете самый простой алгоритм часов.


 
Fiend ©   (2002-07-02 18:33) [1]

ТИК-ТАК->ТИК-ТАК->ТИК-ТАК->ТИК-ТАК->ТИК-ТАК->ТИК-ТАК->ТИК-ТАК->ТИК-ТАК->ТИК-ТАК->ТИК-ТАК->ТИК-ТАК->ТИК-ТАК->
Перевод стрелки


 
RV ©   (2002-07-02 18:44) [2]

рано еще для перевода, еще 49 раз надо


 
Lola ©   (2002-07-02 18:58) [3]

Ты правда определись, какие часы переводить: наручные, настенные, компьютерные или цифры в часы?


 
MBo ©   (2002-07-02 19:17) [4]

procedure timer1timer(Sender:TObject);
begin
label1.caption:=timetostr(now);
end;


 
Сергей Суровцев   (2002-07-02 19:27) [5]

Спичку поставь на подоконник, будут солнечные!


 
Igorek ©   (2002-07-02 20:56) [6]

А для механических часов написать алгоритм слабо? ;-)))

---
"Я ему про Фому, а он мне про Ерему"


 
MBo ©   (2002-07-02 21:16) [7]

>Igorek
А надо? :)


 
DeMoN-777 ©   (2002-07-02 21:41) [8]

Ну так-же ведь не делается ?

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");
Image1.
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;
end;
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;


Или это оптимально ;) ?


 
DeMoN-777 ©   (2002-07-02 21:53) [9]

Это конечно не часы, а пример.


 
это РВ, тока не получается у меня зайти   (2002-07-02 22:02) [10]

там в процедуру когда заходишь Сек2 чему равно?
не 0 всегда?

а в чем проблема, можть по другому можно решить


 
Anatoly Podgoretsky ©   (2002-07-02 22:16) [11]

DeMoN-777 © (02.07.02 21:41)
А Sound где, Козлевич


 
DeMoN-777 ©   (2002-07-02 22:23) [12]

>Anatoly Podgoretsky © (02.07.02 22:16)
А Sound где, Козлевич
Где козлевич ?, я вас кажется никогда не оскорблял, а наоборот относился к вам с уважением.

А если это изза этого лесного алгоритма, то между прочим это вообще не моих рук дело. Я просто задал вопрос и хотел бы получить ответ на него, а вместо этого..............


 
Anatoly Podgoretsky ©   (2002-07-02 22:26) [13]

DeMoN-777 © (02.07.02 22:23)
Не читаем мы классиков


 
RV ©   (2002-07-02 22:28) [14]

а в чем проблема, можть по другому можно решить


 
iZEN   (2002-07-02 22:37) [15]

Для DeMoN-777.
Возьмите часики со стрелочками из примеров к Java Development Kit, может это поможет с общими идеями, -- ещё с первых версий JDK там валялись в виде аплета.


 
DeMoN-777 ©   (2002-07-02 23:25) [16]

Немного переделал.
Правда считает только минуты и сек.
Так вернее будет ?


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls;

type
TForm1 = class(TForm)
Panel1: TPanel;
Image4: TImage;
Image5: TImage;
Image6: TImage;
Image7: TImage;
Image8: TImage;
Timer1: TTimer;
procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
BitmapArray: array [0..10] of TBitmap;
Sek2, Sek1, Min2, Min1, Hour2, Hour1: Byte;

implementation

{$R *.DFM}

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const SC_DragMove = $F012;
begin
if button=mbleft then
begin
ReleaseCapture;
perform(WM_SysCommand, SC_DragMove, 0);
end;
end;

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;
sek2:=0;
sek1:=0;
Min2:=0;
Min1:=0;
Hour2:=0;
Hour1:=0;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Sek2:=Sek2+1;
Image8.Picture.Bitmap:=BitmapArray[sek2];

if Sek2 >= 10 then
begin
Image8.Picture.Bitmap:=BitmapArray[0];
Sek2:=0;
Sek1:=Sek1+1;
Image7.Picture.Bitmap:=BitmapArray[sek1];
end;

if Sek1 >= 6 then
begin
Image7.Picture.Bitmap:=BitmapArray[0];
Sek1:=0;
Min2:=Min2+1;
Image5.Picture.Bitmap:=BitmapArray[Min2];
end;

if min2 >= 10 then
begin
Image5.Picture.Bitmap:=BitmapArray[0];
Min2:=0;
Min1:=Min1+1;
Image4.Picture.Bitmap:=BitmapArray[Min1];
end;

if min1 >= 6 then
begin
Image4.Picture.Bitmap:=BitmapArray[0];
Min1:=0;
Beep;
end;
end;

end.




 
DeMoN-777 ©   (2002-07-02 23:27) [17]

>Anatoly Podgoretsky © (02.07.02 22:26

Неа не читаем.


 
RV ©   (2002-07-02 23:35) [18]

можть и вернее...
ну а надо то че сделать?
я так понял там у тя циферки красивые рисуются
так можть timetostr(now) и разобрать полученную строку


 
DeMoN-777 ©   (2002-07-02 23:38) [19]

>RV © (02.07.02 23:35
>так можть timetostr(now) и разобрать полученную строку

Это уже идея.


 
DeMoN-777 ©   (2002-07-03 00:23) [20]

Хотя нет чтот-то я торможу мне надо не сис. время а свой таймер.
Есть у кого-нить идеи по оптимизации ?


 
RV ©   (2002-07-03 09:09) [21]

/заливаем огонь из чайника и задача свелась к предидущей

завести переменую типа времени и по таймеру инкременируем
timetostr(переменная) и разобрать полученную строку




 
Alexandr ©   (2002-07-03 10:09) [22]

есть компонент Tclock

его кладешь на форму и вызываешь Clock1.Run и все.


 
Anatoly Podgoretsky ©   (2002-07-03 11:21) [23]

DeMoN-777 © (02.07.02 21:41)
По оптимизации

1. не оптимально вычленять путь в каждой строке, сделай переменную Path := ExtractFilePath(Application.ExeName)+"Num\", тоже в исправленном варианте от 02.07.02 23:25 вынеси это за пределы цикла, а в цикле BitmapArray[I].LoadFromFile(Path+IntToStr(I)+".bmp");

2. Не гарантируется срабатывание таймера каждую секунду, надо заменять на вычисление, при старте CurTime := StartTime := Now, а вычисление в таймере так, Now - StartTime и получение в формате word через DecodeTime, или через S := Format("hhnnss",CurTime) и получение значений из строки по индексу S[1,2,3,4,5,6] сразу в строковом виде, мне больше нравится этот вариант.

И будет у тебя короткий, быстрый и легко читаемый код


 
DeMoN-777 ©   (2002-07-03 13:28) [24]

Всем огромное спасибо за высказанные мнения !


 
Wizard_Ex ©   (2002-07-03 16:20) [25]

Очень интересное обсуждение
--------------------------------------------------------------------------------
Обхохочешься



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

Текущий архив: 2002.07.29;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.015 c
3-95265
big_bugzy
2002-07-09 15:11
2002.07.29
An unknown error has occurred


14-95483
Viewer
2002-06-28 21:23
2002.07.29
ОБЩИТЕЛЬНЫЙ ЭСТЕТ, ИЛИ В ГОСТЯХ БЕЗ КОМПЛЕКСОВ.


3-95261
DKalinin
2002-07-09 11:34
2002.07.29
Как сделать столбец фиксированным?


1-95323
Snake bite
2002-07-17 22:47
2002.07.29
<b>С добрым временем суток</b>


1-95327
firsor
2002-07-17 09:54
2002.07.29
В StringGrid-е невозможно организовать ввод данных с помощью спад