[an error occurred while processing this directive]
|
<< и >> работают по-разному для signed и unsigned переменных. Для первых - сдвиг арифметический, для вторых - логический.
А тут я сделал
Function SgnAdj(var ii : LongInt):Longint;
begin
if (ii and 0x8000) <> 0 then Result := ii or LongInt($FFFF0000) else Result := ii;
end;
ЭТО, засунутое в каждое выражение с shr'ом ситуацию спасло. Так как все значения 16-битные, а LongInt - 32-х. А shr'ов этих десятками в программе и по нескольку штук в выражении. Но это-же неэффективно по быстродействию. По-этому хочу ХОТЯ БЫ объявить эту функцию inline. Ан нет - тоже хрен. И как тут не возмущаться?
E-mail: info@telesys.ru