Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > циферблат


Автор: valerchi 6.12.2017, 19:20
Помогите, очень нужен циферблат, но не обыкновенный, - показывающий время, а такой, который может показывать случайные числа. В виде панели времени. Что- то типа: 00:00

Автор: valerchi 7.12.2017, 15:58
Нужно, чтобы на экран выводилось "своё" время, то есть секунды и минуты идут или быстрее или медленнее - так как мне будет нужно. Сделал так:
Код

var t,z,i,j,k:integer; i1,j1,k1:string;
begin
repeat
i:=-1;
repeat
inc(i);
if i<10 then
i1:='0'+inttostr(i)
else
i1:=inttostr(i);
j:=-1;
repeat
inc(j);
if j<10 then
j1:='0'+inttostr(j)
else
j1:=inttostr(j);
k:=-1;
repeat
inc(k);
if k<10 then
k1:='0'+inttostr(k)
else
k1:=inttostr(k);
for t:=0 to 222225565 do // регулирование времени , - быстрее - медленнее
z:=0;
memo1.SelText:=i1+' : '+j1+' : '+k1;
memo1.Text:='';
until k=59;
until j=59;
until i=23;
until z=1;
end;

Но при загруженности компьютера программа тормозит. Что делать?

Автор: Romikgy 7.12.2017, 22:32
код вообще не понятен....
нельзя ли делать через таймеры? и какая основная цель вашей программы?

Автор: valerchi 13.12.2017, 12:51
Цитата(Romikgy @ 7.12.2017,  22:32)
код вообще не понятен....
нельзя ли делать через таймеры? и какая основная цель вашей программы?

Цель программы - мошенничество в игре.  smile То есть когда нужно мне, то секунды идут быстрее или медленнее. Но таймер такого не может сделать

Автор: Romikgy 13.12.2017, 14:26
может

Автор: valerchi 15.12.2017, 16:43
Мне нужно ещё, чтобы менялось количество секунд в минуте. В общем различные манипуляции со временем. Пытался разобраться сам, но не могу найти нужной информации. Хотелось бы написать свою функцию, а не использовать уже готовую. Может кто подскажет, где почитать нужную инфу?

Автор: Romikgy 15.12.2017, 17:34
ничего не понятно 
что вам нужно ? сделать циферблат , что бы шел с разными временными интервалами? или надо для какой то программы поменять временные интервалы? 

Автор: valerchi 15.12.2017, 20:05
 сделать циферблат , что бы шел с разными временными интервалами

Автор: Romikgy 15.12.2017, 20:12
если циферблат на компьютере , то таймера хватит

Автор: valerchi 15.12.2017, 21:26
Ну, а на таймере можно сделать в минуте 70 секунд? Допустим, так:
Код

var t,z,i,j,k:integer; i1,j1,k1:string;
begin
repeat
i:=-1;
repeat
inc(i);
i1:=inttostr(i);
j:=-1;
repeat
inc(j);
j1:=inttostr(j);
k:=-1;
repeat
inc(k);
k1:=inttostr(k);
memo1.SelText:=i1+' : '+j1+' : '+k1;
memo1.Text:='';
until k=69;
until j=69;

Автор: valerchi 15.12.2017, 23:17
Всё, спасибо, вроде бы разобрался,сейчас начну экспериментировать smile 

Автор: valerchi 16.12.2017, 12:26
Вот, что у меня получилось:
Код

var strsec,strmin,strchas:string;
begin
inc(sec);
if sec=20 then
begin
sec:=0;
inc(min);
end;
if sec <10 then
strsec:='0'+ inttostr(sec)
else
strsec:=inttostr(sec);
if min=20 then
begin
min:=0;
inc(chas);
end;
if min <10 then
strmin:='0'+ inttostr(min)
else
strmin:=inttostr(min);
if chas=20 then
chas:=0;
if chas <10 then
strchas:='0'+ inttostr(chas)
else
strchas:=inttostr(chas);
label1.Caption:=strchas+':'+strmin+':'+strsec;
end;

А, теперь, возникла новая проблема. Как синхронизировать моё время на циферблате с системным временем, чтобы, допустим за 20 моих секунд проходило 2 секунды системного времени? И вообще, возможно ли это?

Добавлено через 5 минут и 17 секунд
Пробовал менять интервал вручную, методом подбора, но это очень сложно

Автор: Romikgy 16.12.2017, 17:37
какой версией дельфи пользуетесь?

Автор: valerchi 16.12.2017, 17:48
delphi 7

Добавлено через 2 минуты и 52 секунды
Что- то ничего не получается. Пробовал выставлять интервал вручную, вроде бы подобрался к синхронному отсчёту, а тут раз... и перебор. Точное значение интервала не поймаешь. Что не так?

Автор: valerchi 17.12.2017, 12:29
Кто- нибудь подскажет, как из текущего времени узнать количество секунд? Есть какие- нибудь простые способы, или нужно брать кол- во часов умножать на 60, потом кол- во минут на 60 потом прибавлять всё это и прибавить оставшиеся секунды?

Автор: Romikgy 18.12.2017, 00:07
Попробуй ... на таймерах...

Автор: valerchi 20.12.2017, 00:51
Romikgy, спасибо, всё получилось, всё сделал. Только немного по- своему. Как можно поделиться своей программой? Уже готовой. Это гаджет часы на рабочий стол.

Автор: valerchi 23.12.2017, 21:35
Это не простые часы, а такие, которые показывают в сутках 100 часов, в часе 100 минут, в минуте 100 секунд. Вот что получилось:
Код

var x1,x,y1,z,i,j,k:integer; z1,i1,j1,k1:string;
begin
ShowWindow(Application.Handle,SW_HIDE);
assignfile(f,'координаты формы.txt');
reset(f);
readln(f,x1);
readln(f,z);
closefile(f);
form1.Left:=x1;
form1.Top:=z;
assignfile(f,'фон.txt');
reset(f);
readln(f,k1);
closefile(f);
label1.Color:=StringToColor(k1);
assignfile(f,'цвет цифр.txt');
reset(f);
readln(f,k1);
closefile(f);
label1.font.Color:=StringToColor(k1);
assignfile(f,'секунды.txt');
reset(f);
read(f,y);
closefile(f);
x1:=0;
z:=0;
repeat    
Application.ProcessMessages;
repeat
i1:=(FormatDateTime('h',Now));
j1:=(FormatDateTime('n',Now));
k1:=(FormatDateTime('s',Now));
z1:=(FormatDateTime('z',Now));
x:=strtoint(z1)+((strtoint(k1))+(strtoint(j1)*60)+(strtoint(i1)*60*60))*1000;
if x1>x then
x1:=0;
y1:=x-x1;
until y1>86;
x1:=x;
k:=trunc(x/86.4);
if k>=10000 then
begin
i:= trunc(k/100/100);
k:=k-(i*100*100);
end
else
i:=0;
if i<10 then
i1:='0'+inttostr(i)
else
i1:=inttostr(i);
if k>=100 then
begin
j:=trunc(k/100);
k:=k-(j*100);
end
else
j:=0;
if j<10 then
j1:='0'+inttostr(j)
else
j1:=inttostr(j);
if k<10 then
k1:='0'+inttostr(k)
else
k1:=inttostr(k);
if y=0 then
begin
label1.Font.Size:=28;
label1.Caption:=i1+':'+j1+':'+k1;
end;
if y=1 then
begin
label1.Font.Size:=42;
label1.Caption:=i1+':'+j1;
end;
until z=1;
end;

procedure TForm1.N2Click(Sender: TObject);
begin
label1.Color:=clblack;
assignfile(f,'фон.txt');
rewrite(f);
append(f);
writeln(f,'clblack');
closefile(f);
end;

procedure TForm1.N3Click(Sender: TObject);
begin
label1.Color:=clcream;
assignfile(f,'фон.txt');
rewrite(f);
append(f);
writeln(f,'clcream');
closefile(f);
end;

procedure TForm1.N4Click(Sender: TObject);
begin
label1.Color:=clwhite;
assignfile(f,'фон.txt');
rewrite(f);
append(f);
writeln(f,'clwhite');
closefile(f);
end;

procedure TForm1.N5Click(Sender: TObject);
begin
label1.Color:=clblue;
assignfile(f,'фон.txt');
rewrite(f);
append(f);
writeln(f,'clblue');
closefile(f);
end;

procedure TForm1.N6Click(Sender: TObject);
begin
label1.Color:=clgreen;
assignfile(f,'фон.txt');
rewrite(f);
append(f);
writeln(f,'clgreen');
closefile(f);
end;

procedure TForm1.N8Click(Sender: TObject);
begin
label1.font.Color:=clgreen;
assignfile(f,'цвет цифр.txt');
rewrite(f);
append(f);
writeln(f,'clgreen');
closefile(f);
end;

procedure TForm1.N9Click(Sender: TObject);
begin
label1.font.Color:=clred;
assignfile(f,'цвет цифр.txt');
rewrite(f);
append(f);
writeln(f,'clred');
closefile(f);
end;

procedure TForm1.N10Click(Sender: TObject);
begin
label1.font.Color:=clblack;
assignfile(f,'цвет цифр.txt');
rewrite(f);
append(f);
writeln(f,'clblack');
closefile(f);
end;

procedure TForm1.N11Click(Sender: TObject);
begin
label1.font.Color:=clblue;
assignfile(f,'цвет цифр.txt');
rewrite(f);
append(f);
writeln(f,'clblue');
closefile(f);
end;

procedure TForm1.N12Click(Sender: TObject);
begin
label1.font.Color:=clcream;
assignfile(f,'цвет цифр.txt');
rewrite(f);
append(f);
writeln(f,'clcream');
closefile(f);
end;

procedure TForm1.N13Click(Sender: TObject);
begin
label1.font.Color:=clwhite;
assignfile(f,'цвет цифр.txt');
rewrite(f);
append(f);
writeln(f,'clwhite');
closefile(f);
end;

procedure TForm1.N14Click(Sender: TObject);
begin
y:=1;
assignfile(f,'секунды.txt');
rewrite(f);
append(f);
writeln(f,'1');
closefile(f);
end;

procedure TForm1.N15Click(Sender: TObject);
begin
y:=0;
assignfile(f,'секунды.txt');
rewrite(f);
append(f);
writeln(f,'0');
closefile(f);
end;

procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if ( Button = mbLeft ) then
  begin
    ReleaseCapture;
    SendMessage( form1.Handle, WM_SYSCOMMAND, $F012, 0 );
    assignfile(f,'координаты формы.txt');
rewrite(f);
append(f);
x:=form1.Left;
y:=form1.Top;
writeln(f,x);
writeln(f,y);
closefile(f);
  end;
end;


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)