Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
А вообще, leo прав — замени int на dword или uint, всё заработает правильно. По крайней мере, у меня в дельфях так ;-) 08.08.05 17:37 Число просмотров: 1717
Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 08.08.05 17:44 Количество правок: 5
|
Правильный вариант:
Var
m_h, m_l: DWORD;
mantissa: INT64;
begin
m_h := $db2dcd57;
m_l := $c0000000;
mantissa := (Int64(m_h) SHL 32) + m_l;
Caption := '$' + IntToHex(Mantissa, 16);
End;
---
Неправильный вариант:
Var
m_h, m_l: Integer;
mantissa: INT64;
begin
m_h := $db2dcd57;
m_l := $c0000000;
mantissa := (Int64(m_h) SHL 32) + m_l;
Caption := '$' + IntToHex(Mantissa, 16);
End;
[Warning] Unit1.pas(31): Constant expression violates subrange bounds
[Warning] Unit1.pas(32): Constant expression violates subrange bounds
---
Видно, что компилер ругается на присвоение констант в коде к целым знаковым переменным, говоря, что константы выходят за границы диапазона типа Integer.
|
|
|