![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос о таймерах !
Offceman © (2006-02-07 12:54:00)Как оно будет быстрее работать?
2-е обработки в 1-ом Таймере, при Timer1.interval:= 500;
или
1-а обработка в 1-ом таймере, при Timer1.interval:= 500;
+
1-а обработка в 1-ом таймере, при Timer1.interval:= 500;
т.е. есть ли смысл разделять различные обработки(расчёты) в отдельные таймеры или можно всё в одном крутить. Около 500 строк занимают ДВЕ обработки в одном таймере. при расчётах используются простые арифметические действия, и if ..then..begin..end
Officeman (2006-02-07 14:27:00) [21]Kolan =) это я так обозвал массив переменных. я дурак.
Digitman (2006-02-07 14:26:00) [22]
> невсегда сокращённый код, работает быстрее полного
"Быстроту" ту самую ты не там ищешь.
Ну а читать эту галиматью нет никакого желания, поверь.
Officeman (2006-02-07 14:24:00) [23]to Digitman
Я попробую с помощью with или for уменьшить код.
Но невсегда сокращённый код, работает быстрее полного.
Kolan (2006-02-07 14:22:00) [24]виртуальных переменных
А это что такое?
Officeman (2006-02-07 14:11:00) [25]пс. просто вы быстро пишите. пока я сам пишу сообщения. вы уже новые добавляете. получается второе сообщение перед первым.
Officeman (2006-02-07 14:09:00) [26]to Zeqfreed
короче =) скачайте и посмотрите. размер 1,8 метра.
http://stalkerz.onfo/primer/v0602.rar
Надо собрать чуваку комплект доспех.
Кратно описание:
1)сначало выбираете любое зелёное поле двойным щелчком мыши,
затем в списке выбираете нужный предмет.
Одевается тоже дв.щелчком мыши.
evvcom (2006-02-07 14:09:00) [27]
> Officeman (07.02.06 13:54) [21]
> to evvcom, wrote:
> И про таймер: чем обусловлена необходимость запускать "сложный"
> расчет каждые полсекунды? Может здесь подойдет что-то менее
> ресурсоемкое?
>
> Например?
Ты как тот еврей, отвечаешь вопросом на вопрос, игнорируя первую половину. Тебе также коротко ответить? Сообщения.
Officeman (2006-02-07 14:02:00) [28]to Kolan, концепция абсолютно верная. уверен на 100%.
Согласен. Реализация дерьмовая. Я никогда не работал с таким больши колличеством реквизитом.
А данные я только храню в ListView. т.е. при загрузке программы открываю текстовый файлик с разделителями. и гружу всё в ListView. потом работаю с данными из ListView (читаю, перезаписываю) и при выходе их программы снова всё сохраняю в текстовый файл в разделителями.
всё работает в принципе. конечно я согласен что я загнался с "strtofloat".
думал что код будет намного меньше. скорее всего сделаю так. буду держать все данные ячеек в виртуальных переменных. и уже в ними работать в таймере.
Zeqfreed (2006-02-07 13:57:00) [29]
> подскажи как можно подругому записать следующую строку:
> ))
Для начала — использовать with. А вообще, такой код подлежит безжалостному уничтожению.
Digitman (2006-02-07 13:55:00) [30]Вся эта абракадабра
calc_sila.Caption:=
inttostr(strtoint(u_sila.text)+
strtoint(LVu.items.Item[0].SubItems[6])+
strtoint(LVu.items.Item[1].Sub Items[6])+
strtoint(LVu.items.Item[2].SubItems[6])+
strtoint(LVu.items.Item[4].SubItems[6])+
strtoint(LVu.items.Item[5].Sub Items[6])+
strtoint(LVu.items.Item[6].SubItems[6])+
strtoint(LVu.items.Item[7].SubItems[6])+
strtoint(LVu.items.Item[8].Sub Items[6])+
strtoint(LVu.items.Item[9].SubItems[6])+
strtoint(LVu.items.Item[10].SubItems[6])+
strtoint(LVu.items.Item[3].Su bItems[6])+
strtoint(LVu.items.Item[11].SubItems[6])+
strtoint(LVu.items.Item[0].SubItems[31])+
strtoint(LVu.items.Item[1].SubItems[31])+
strtoint(LVu.items.Item[2].SubItems[31])+
strtoint(LVu.items.Item[3].SubItems[31])+
strtoint(LVu.items.Item[4].SubItems[31])+
strtoint(LVu.items.Item[5].SubItems[31])+
strtoint(LVu.items.Item[6].SubItems [31])+
strtoint(LVu.items.Item[7].SubItems[31])+
strtoint(LVu.items.Item[8].SubItems[31])+
strtoint(LVu.items.Item[9].SubIt ems[31])+
strtoint(LVu.items.Item[10].SubItems[31])+
strtoint(LVu.items.Item[11]. SubItems[31]));
сводится к примитивнейшему, до смешного протому коду :
var
Accum := 0; //Accum: Integer;
..
with LVu.items do
for I:=0 to 11 do
Accum := Accum + strtoint(Item[i].SubItems[6]) + strtoint(Item[i].SubItems[31]);
calc_sila.Caption:= IntToStr(StrToInt(u_sila.text) + Accum);
Officeman (2006-02-07 13:54:00) [31]to evvcom, wrote:
И про таймер: чем обусловлена необходимость запускать "сложный" расчет каждые полсекунды? Может здесь подойдет что-то менее ресурсоемкое?
Например?
evvcom (2006-02-07 13:45:00) [32]
> подскажи как можно подругому записать следующую строку:
> ))
> u2_sila.text
Есть, например, TSpinEdit. Зачем использовать TEdit и преобразовывать текст к числу, если можно выбрать другой компонент и работать непосредственно с числом?
> strtoint(LVu2.items.Item[0].SubItems[6])+
Что такое LVu2? Вероятно, тебе для данной задачи это не очень-то и подходит. Возможно, надо написать нечто свое, которое хранит числа, а не строки.
И про таймер: чем обусловлена необходимость запускать "сложный" расчет каждые полсекунды? Может здесь подойдет что-то менее ресурсоемкое?
Kolan (2006-02-07 13:40:00) [33]Опеши задачу. У тебя неверный подход к её решению...
Kolan (2006-02-07 13:38:00) [34]сами таблички скрыты от глаз пользователя
Те ты хочешь сказать, что ты берешь данные из ListView, делаешь кучу преобразований, и этиListViewдаже пользователю НЕВИДНЫ ?
Извени - бред...
Officeman (2006-02-07 13:37:00) [35]evvcom, помоги!
подскажи как можно подругому записать следующую строку: ))
calc2_sila.Caption:=inttostr(strtoint(u2_sila.text)+strtoint(LVu2.items.Item[0].SubItems[6])+strtoint(LVu2.items.Item[1] .SubItems[6])+strtoint(LVu2.items.Item[2].SubItems[6])+strtoint(LVu2.items.Item[4].SubItems[6])+strtoint(LVu2.items.Item [5].SubItems[6])+strtoint(LVu2.items.Item[6].SubItems[6])+strtoint(LVu2.items.Item[7].SubItems[6])+strtoint(LVu2.items.I tem[8].SubItems[6])+strtoint(LVu2.items.Item[9].SubItems[6])+strtoint(LVu2.items.Item[10].SubItems[6])+strtoint(LVu2.ite ms.Item[3].SubItems[6])+strtoint(LVu2.items.Item[11].SubItems[6])+
strtoint(LVu2.items.Item[0].SubItems[31])+strtoint(LVu2.items.Item[1].SubItems[31])+strtoint(LVu2.items.Item[2].SubItems [31])+strtoint(LVu2.items.Item[4].SubItems[31])+strtoint(LVu2.items.Item[5].SubItems[31])+strtoint(LVu2.items.Item[6].Su bItems[31])+strtoint(LVu2.items.Item[7].SubItems[31])+strtoint(LVu2.items.Item[8].SubItems[31])+strtoint(LVu2.items.Item [9].SubItems[31])+strtoint(LVu2.items.Item[10].SubItems[31])+strtoint(LVu2.items.Item[3].SubItems[31])+strtoint(LVu2.ite ms.Item[11].SubItems[31]));
Officeman (2006-02-07 13:35:00) [36]to Kolan, =( нельзя.
Программа как конструктор.
Пользователь визуально подбирает элементы(каждый имеет свои параметры), и сразу видит изменившийся результат.
сами таблички скрыты от глаз пользователя.
evvcom (2006-02-07 13:32:00) [37]Зачем же столько StrToInt и IntToStr? :o) Бедная машина!.. :) А еще циклы есть и массивы констант, например.
Kolan (2006-02-07 13:31:00) [38]ЗЫ
Код ужасный ничего не понятно
calc_lovka.Caption:=inttostr(strtoint(u_lovka.text)+strtoint(LVu.items.Item[0].SubItems[7])+strtoint(LVu.items.Ite m[1].S ubItems[7])+strtoint(LVu.items.Item[2].SubItems[7])+strtoint(LVu.items.Item[4].SubItems[7])+strtoint(LVu.items.Item[5].S ubItems[7])+strtoint(LVu.items.Item[6].SubItems[7])+strtoint(LVu.items.Item[7].SubItems[7])+strtoint(LVu.items.Item[8].S ubItems[7])+strtoint(LVu.items.Item[9].SubItems[7])+strtoint(LVu.items.Item[10].SubItems[7])+strtoint(LVu.items.Item[3]. SubItems[7])+strtoint(LVu.items.Item[11].SubItems[7])+
На генератор сл символов похоже
Kolan (2006-02-07 13:29:00) [39]
x0:=strtofloatDef(LVu.Items.Item[0].SubItems[5],0);
А что кто-то может успеть поменять
LVu.Items.Item[0].SubItems[5],0за пол секунды думаю нет.
Так зачем тогда ты это там храшишь. Раздели Хранение и отображение данных.
Тогда не придется делать кучу преобразований..
Мож конечно не так понял..
Digitman (2006-02-07 13:29:00) [40]
> класса Pentium I . возникают проблемы.
> обишка к памяти и прочае
Да наплоди ты там хоть косой десяток таймеров - результат будет тем же !