主页
Top.Mail.Ru Yandeks.Metrika
论坛:“抢”;
当前存档:2002.07.29;
下载:[xml.tar.bz2];

向下

最简单的时钟算法 找到类似的分支


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);
开始
label1.caption:=timetostr(now);
结束;



Сергей Суровцев   (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;
下载:[xml.tar.bz2];

楼上









内存:0.65 MB
时间:0.034 c
1-95371
XYZ
2002-07-15 21:02
2002.07.29
对象又是什么?


7-95587
普什卡列夫帕维尔
2002-04-30 16:37
2002.07.29
如何确定主板,声音和背心


6-95481
DikobraZ
2002-05-11 18:18
2002.07.29
套接字错误10057


1-95346
andrey_pst
2002-07-18 11:40
2002.07.29
我怎么知道工作是否完成* .exe


3-95240
zombi_71
2002-07-08 11:57
2002.07.29
unix命令





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法文
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本性玩偶 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 泰米尔人 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский