runewalsh писал(а): ПодсказкаHint: Mixing signed expressions and longwords gives a 64bit result[/code]
специально для подсвечивания таких случаев и сделана.
Не знаю, где так подсвечивается, может в окошке лазаруса, в консоли её нету.
- Код: Выделить всё
- var
 ReturnData0: byte;
 WholeData, Z1: int64; // или uint64
 begin
 ReturnData0 := 230;
 Z1:=1;
 WholeData := Z1 + ReturnData0 * $1000000;
 writeln(WholeData);
 WholeData := Z1 * ReturnData0 * $1000000;
 writeln(WholeData);
 end.
Не любое смешивание переменных влияет на результат, на Int64 надо именно умножать, чтобы быть уверенным что результат впишется в выделенный тип данных. Такой хак редко нужен, но там, где лень проверять диапазон всех возможных данных, он по видимому необходим.



