![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Case - Constant expression expected
Ega23 © (2007-10-22 13:46:00)Туплю: что не так?
const
lsUnknown : Integer = 10;
lsAlarm : Integer = 20;
lsReady : Integer = 30;
lsBroken : Integer = 40;
lsSwitchOFF : Integer = 50;
lsGuardON : Integer = 60;
lsLocked : Integer = 70;
lsCaptured : Integer = 80;
...............
Case TLogObjChildItem(ChildList.Items[i]).LogStatCod of
lsUnknown : Result := Result + [psUnknown];
lsAlarm : Result := Result + [psAlarm];
lsReady : Result := Result + [psReady];
lsBroken : Result := Result + [psBroken];
lsSwitchOFF : Result := Result + [psSwitchOFF];
lsGuardON : Result := Result + [psGuardON];
lsLocked : Result := Result + [psLocked];
lsCaptured : Result := Result + [psCaptured];
end;
Leonid Troyanovsky (2007-10-22 14:24:00) [1]
> Ega23 © (22.10.07 13:46)
> Туплю: что не так?
Case TLogObjChildItem(ChildList.Items[i]).LogStatCod div 10 - 1 of
ord(psUnknown): ..
Ну, или константы определить, как lsUnknown = 10*(Ord(psUnknown)+1)
--
Regards, LVT.
Ega23 (2007-10-22 14:16:00) [2]
> Джо © (22.10.07 14:14) [11]
Да млжно, уже переделано было. просто начал специально их типизровать, на всякий пожарный. А тут вот такое...
Джо (2007-10-22 14:14:00) [3]> [9] Ega23 © (22.10.07 14:10)
> результатом выполнения Foo(MyFirstVal) будет 1, а Foo(MySecondVal)
> даст 2.
Дык, а кто мешает сделать Фу таким:
function Foo(Value : Variant) : Integer;
begin
Case VarType(Value) of
varByte,
varInteger : Result := 1;
end;
?
Ega23 (2007-10-22 14:11:00) [4]А для кода данное дело было достаточно критично.
Ega23 (2007-10-22 14:10:00) [5]Хорошо.
Я почему константы типизировать начал - при переходе с D5 на D7 выяснилось, что при объявлении
const
MyFirstVal = 6;
MySecondVal : Integer =6;
function Foo(Value : Variant) : Integer;
begin
Case VarType(Value) of
varByte : Result := 1;
varInteger : Result := 2;
end;
результатом выполнения Foo(MyFirstVal) будет 1, а Foo(MySecondVal) даст 2.
Reindeer Moss Eater (2007-10-22 14:03:00) [6]Значения на рантайме могут меняться
Ega23 (2007-10-22 14:02:00) [7]
> ну как же? assignable можно поменять значение, а в case
> допустимы только "чистые" константы
Нет, в чём разница между assignable typed constant и typed constant?
clickmaker (2007-10-22 14:00:00) [8]
> чём разница?
ну как же? assignable можно поменять значение, а в case допустимы только "чистые" константы
Ega23 (2007-10-22 13:54:00) [9]
> Типизированные "хаваются"... а вот "assignable" - как-то
> не очень...
Не понял, а в чём разница?
Jump (2007-10-22 13:52:00) [10]Типизированные "хаваются"... а вот "assignable" - как-то не очень...
Reindeer Moss Eater (2007-10-22 13:51:00) [11]const
lsUnknown = 10;
...
lsCaptured = 80;
Ega23 (2007-10-22 13:51:00) [12]разве в Case типизированные константы не "хаваются"?
Jump (2007-10-22 13:50:00) [13]lsUnknown : Integer = 10;
lsAlarm : Integer = 20;
lsReady : Integer = 30;
lsBroken : Integer = 40;
lsSwitchOFF : Integer = 50;
lsGuardON : Integer = 60;
lsLocked : Integer = 70;
lsCaptured : Integer = 80;
Integer убери
lsUnknown = 10;
lsAlarm = 20;
lsReady = 30;
lsBroken = 40;
lsSwitchOFF = 50;
lsGuardON = 60;
lsLocked = 70;
lsCaptured = 80;
Или в настройках компилятора попробуй отключить assignable typed constants.