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 надо именно умножать, чтобы быть уверенным что результат впишется в выделенный тип данных. Такой хак редко нужен, но там, где лень проверять диапазон всех возможных данных, он по видимому необходим.