![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что это - Constant expression expected?
PJiur © (2012-03-16 22:20:00)Здравствуйте, пытаюсь сделать вот что:
Var
P,V,Vi:integer;
y:Double;
...
y:=(V)/Vi*100 ;
frmmain.prgProcentVip.Position:= y;
....
Компилятор дает ошибку
[DCC Error] UntMain.pas(829): E2026 Constant expression expected
А как тогда правильно написать?
Cobalt (2012-03-20 23:25:00) [1]Я обновляю не чаще 1 раза в 2 секунды.
sniknik (2012-03-18 11:02:00) [2]> то можно обновлять Position только если V чётно, или кратно десяти, и т.д.)
это все одно тот же расчет, только до цикла, в цикле придется кратность по высчитанному коэффициенту определять.
ИМХО, без разницы, что в лоб что по лбу.
Inovet (2012-03-18 09:13:00) [3]> [4] begin...end © (18.03.12 08:57)
> Так ведь и не при каждом увеличении процентов квадратик
> добавляется.
Квадратик или сплошная лента зависит от настроек Виндоус. Лучше определить диапазон минимальное-максимальное и вызывать разумное число раз какой-нибудь StepIt() возможно StepIt(n), а там пусть само решает рисовать или только счётчик увеличить. Разумность зависит от конкретной ситуации.
begin...end (2012-03-18 08:57:00) [4]> sniknik © (17.03.12 22:32) [3]
Так ведь и не при каждом увеличении процентов квадратик добавляется. Поэтому я всё же не высчитывал бы их самостоятельно, а обновлял бы Position как в [2], но не при каждом изменении V (например, если V изменяется в цикле, то можно обновлять Position только если V чётно, или кратно десяти, и т.д.).
sniknik (2012-03-17 22:32:00) [5]> И возиться с процентами тут ни к чему
каждое изменение вызывает перерисовку, но не каждое меняет что то в отображаемом... т.е. при больших числах, это жутко тормозит процесс, но ничего не меняет визуально (квадратика не добавляется).
проценты вполне нормальное решение, для минимизации "тормозов". ну или перейти на TGaude.
begin...end (2012-03-17 08:48:00) [6]Странно. Если prgProcentVip - это TProgressBar, то должна быть другая ошибка - несовместимость типов. Ибо свойство TProgressBar.Position, насколько я знаю, целочисленное. И возиться с процентами тут ни к чему - достаточно сообщить ProgressBar'у границы изменяющейся величины, а потом передавать ему текущее её значение:
prgProcentVip.Min := 0;
prgProcentVip.Max := Vi;
prgProcentVip.Position := V;
Германн (2012-03-16 22:25:00) [7]
> y:=(V)/Vi*100 ;
> frmmain.prgProcentVip.Position:= y;
И в каком же это месте эти строки прописаны?