Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.015 c
2-1193582414
AlexanderMS
2007-10-28 17:40
2007.11.18
Что это такое - "the instance handle of the application"?


6-1173887404
Gilrods
2007-03-14 18:50
2007.11.18
Выбор сетевого подключения для программы.


15-1192133280
Eraser
2007-10-12 00:08
2007.11.18
Трансляции формулы 1


15-1189799101
matt
2007-09-14 23:45
2007.11.18
Русская ОС появится во всех школах


3-1183542343
HID
2007-07-04 13:45
2007.11.18
Группировка и суммирование строк в таблице dbf




   Наверх