Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2011, 23:13   #1
arthur1
Пользователь
 
Регистрация: 01.09.2011
Сообщений: 44
Сообщение delphi и время (Timer)

итак я хочу создать программу в которой скачала нажимаю начать и числу а присваевается значение 100 после чего условие на включение таймера if a>1 then ...но я хочу сделать так что бы первые три секунды к 100 прибовлялось по 1 в каждую секунду потом отнималось одну секунду 1 а дальше прибовлялось три секунды по 1 потом отнималосьпо 1 несколько секунд и так далее. вот думаю как это сделать?
помогите.
значения каждую секунду будут выводиться через Timer2 в Label1.

p.s (один человек мне сказал так "Создай массив - константу с положительными и отрицательными значениями для прибавления/убавления, а по таймеру меняй переменную индекс массива." но я не понял что он имел ввиду если кто сможет расшифруйте)
Кое что интерестное ожидает тебя тут.
мир прекрастная штука ... как не крути)
arthur1 вне форума Ответить с цитированием
Старый 01.09.2011, 23:21   #2
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
расшифруйте
Что расшифровывать-то ?
Ничего зашифрованного и нет совсем.
Или во фразе "одного человека" есть незнакомые тебе буквы ?
mss вне форума Ответить с цитированием
Старый 01.09.2011, 23:25   #3
lux16
Форумчанин
 
Аватар для lux16
 
Регистрация: 11.02.2009
Сообщений: 305
По умолчанию

Хм, массив это просто последовательность чисел, например: +100 +1 +1 +1 -1 -1 +1 -1 +1 +1 +1 +1 -1 -1 -1 +1 +1 и т. д. Начальное значение у таймера 0, и потом:
Код:
a := a + a[i];
Inc(i);
i - это индекс массива
Хочу быть лучшим, но пока что я только обычный =(
lux16 вне форума Ответить с цитированием
Старый 01.09.2011, 23:37   #4
arthur1
Пользователь
 
Регистрация: 01.09.2011
Сообщений: 44
По умолчанию

спасибо. подумаю
а как создать массив? b: array[1..100];
дальша что делать то??
делал так пока что без таймера
Код:
var a: currency; i: integer;
b: array[1..100] of integer;

procedure TForm1.Button1Click(Sender: TObject);
begin
a:=100;
a:=a+b[i];
inc(i);
label1.Caption:= currtostr(a) + '=' + inttostr(i);
end;
Но что то не выходит значение (а) не меняется.

программировал последний раз в 98 (и последнюю неделю) так что трудно что то вспомнить

Пришлось вот так извращаться что бы получить жалаемый результат
Код:
var a: currency; i: integer;

procedure tform1.a_pl;
begin
a:=a+1/10;
inc(i);
end;

procedure tform1.a_sn;
begin
a:=a-1/10;
inc(i);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption:= currtostr(a) + ' = ' + inttostr(i) ;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if (i>=0) and (i<3) then
form1.a_pl;
if (i>=3) and (i<5) then
inc(i);
if (i>=5) and (i<6) then
form1.a_sn;
if (i>=6) and (i<8) then
inc(i);
if (i>=8) and (i<10) then
form1.a_pl;
if (i>=10) and (i<12) then
inc(i);
if (i>=12) and (i<15) then
form1.a_sn;
if (i>=15) and (i<17) then
inc(i);
if (i>=17) and (i<21) then
form1.a_pl;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Refresh;
a:=0;
i:=0;
end;
может кто знает более лёгкий способ? (желательно показать примером полного кода)
Кое что интерестное ожидает тебя тут.
мир прекрастная штука ... как не крути)

Последний раз редактировалось mihali4; 03.11.2011 в 21:05.
arthur1 вне форума Ответить с цитированием
Старый 02.09.2011, 10:53   #5
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Получается, что до начала выполнения программы вы знаете на каждой секунды что нужно делать - прибавлять или отнимать, следовательно вы можете вычислить для каждой секунды состояние ...
Код:
a:array [0..4] of integer = (100, 99, 98, 97,98);
i:integer;
procedure TForm1.Button1Click(Sender: TObject);
begin
 i:=0;
 Button1.Enabled:=false;
 Timer1.Enabled:=true;
 Label1.Caption:=IntToStr(a[0])+'=0';
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
inc(i);
if i>high(a)
 then
  begin
   Timer1.Enabled:=false;
   Button1.Enabled:=true;
   Label1.Caption:='Off'
  end
 else
Label1.Caption:=IntToStr(a[i])+'='+IntToStr(i);
end;
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 02.09.2011, 11:36   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
один человек мне сказал так "Создай массив - константу с положительными и отрицательными значениями для прибавления/убавления
const a:array[1..100] of integer=(1,1,1,-1,-1,-1,1,1,1,1,1,-1,-1,........//100значений);
По таймеру меняешь индекс массива и изменяешь значение
Код:
inc(znach,a[i]);
puporev вне форума Ответить с цитированием
Старый 02.09.2011, 16:31   #7
arthur1
Пользователь
 
Регистрация: 01.09.2011
Сообщений: 44
Радость

Цитата:
Сообщение от Step_UA Посмотреть сообщение
Получается, что до начала выполнения программы вы знаете на каждой секунды что нужно делать - прибавлять или отнимать, следовательно вы можете вычислить для каждой секунды состояние ...
Код:
a:array [0..4] of integer = (100, 99, 98, 97,98);
да, Спасибо.) я знаю порядок для каждой секунды и этот код помог поставить всё на место.
теперь вот буду думать как сделать так что бы эти числа читались из файла.(1.txt)
Код:
var  i:integer;
a: array [0..5] of integer;

procedure tform1.aaa;
var f: file of integer;
begin
AssignFile(f, '1.txt');
Reset(f);
for i:=0 to 5 do
read(f,a); 
closefile(f);
end;
может кто подскажет что не так делаю?
выдаёт ошибку при компиляции.
Кое что интерестное ожидает тебя тут.
мир прекрастная штука ... как не крути)

Последний раз редактировалось mihali4; 03.11.2011 в 21:06.
arthur1 вне форума Ответить с цитированием
Старый 03.09.2011, 23:04   #8
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Код:
read(f,a[i]);
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 04.09.2011, 07:53   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
что бы эти числа читались из файла.(1.txt)
Код:
var  a: array [0..5] of integer;

procedure tform1.aaa;
var i:integer;
     f: text;
begin
AssignFile(f, '1.txt');
Reset(f);
for i:=0 to 5 do
read(f,a[i]); 
closefile(f);
end;
puporev вне форума Ответить с цитированием
Старый 08.09.2011, 09:36   #10
arthur1
Пользователь
 
Регистрация: 01.09.2011
Сообщений: 44
По умолчанию

Спасибо помогло.

возник ещё вопрос как сделать так что бы в поле мемо когда место в строке для символов кончалось оно переносило последующий текст на следующую строку?
например текст состоит из 30 слов по 5-6 символов... он не вмещается в одну строку и должен переходить на следующую строку.
как это сдалать?
Кое что интерестное ожидает тебя тут.
мир прекрастная штука ... как не крути)

Последний раз редактировалось mihali4; 03.11.2011 в 21:06.
arthur1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить время в timer Alex Cones Общие вопросы Delphi 4 10.07.2010 18:37
Время проигрывания Delphi Степа Верхозин Помощь студентам 0 25.11.2009 21:21
Время сортировки в Delphi 7 Александр М Помощь студентам 3 19.11.2008 22:50
Системное время???Помогите???(Delphi) Dinarochka Помощь студентам 5 28.05.2008 12:11
время в Delphi Cantana Помощь студентам 7 13.11.2007 13:43