Текущий архив: 2007.11.18;
Скачать: CL | DM;
Вниз
Case - Constant expression expected Найти похожие ветки
← →
Ega23 © (2007-10-22 13:46) [0]Туплю: что не так?
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;
← →
Jump (2007-10-22 13:50) [1]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.
← →
Reindeer Moss Eater © (2007-10-22 13:51) [2]const
lsUnknown = 10;
...
lsCaptured = 80;
← →
Ega23 © (2007-10-22 13:51) [3]разве в Case типизированные константы не "хаваются"?
← →
Jump (2007-10-22 13:52) [4]Типизированные "хаваются"... а вот "assignable" - как-то не очень...
← →
Ega23 © (2007-10-22 13:54) [5]
> Типизированные "хаваются"... а вот "assignable" - как-то
> не очень...
Не понял, а в чём разница?
← →
clickmaker © (2007-10-22 14:00) [6]
> чём разница?
ну как же? assignable можно поменять значение, а в case допустимы только "чистые" константы
← →
Ega23 © (2007-10-22 14:02) [7]
> ну как же? assignable можно поменять значение, а в case
> допустимы только "чистые" константы
Нет, в чём разница между assignable typed constant и typed constant?
← →
Reindeer Moss Eater © (2007-10-22 14:03) [8]Значения на рантайме могут меняться
← →
Ega23 © (2007-10-22 14:10) [9]Хорошо.
Я почему константы типизировать начал - при переходе с 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.
← →
Ega23 © (2007-10-22 14:11) [10]А для кода данное дело было достаточно критично.
← →
Джо © (2007-10-22 14:14) [11]> [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:16) [12]
> Джо © (22.10.07 14:14) [11]
Да млжно, уже переделано было. просто начал специально их типизровать, на всякий пожарный. А тут вот такое...
← →
Leonid Troyanovsky © (2007-10-22 14:24) [13]
> 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.
Страницы: 1 вся ветка
Текущий архив: 2007.11.18;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.036 c