Cześć, mam double'a w postaci X.Y. Chcę pobrać jego część ułamkową, czyli Y, a nie 0.Y(jak mi zwróci funkcja FRAC).
Więc wpadłem na super pomysł przesunięć bitowych. Jednak kompilator mnie przechytrzył i powiedział: "Operator not applicable to this operand type". Więc zacząłem grzebać w helpie. Tam znalazłem informacje(odnośnie operatorów shl i shr): "Both expressions must be absolute immediate values, and the result is an absolute immediate value." Jednak w żaden sposób nie mogę rozkminić, co to jest "immediate value" i dlaczego mój kod nie działa. Od razu mówię, że nie wiem, ile mam cyfr po przecinku. Wiem tyle, że nie więcej niż 3. I chcę to robić bez operacji na stringach.
Mój kod wygląda tak:
var
verD: double;
verMaj: integer;
verMin: integer;
begin
verD:=3.95;
VerMaj:=Trunc(verD);
VerMin:=verD shr 1; //<- tu mam błąd
end;
To jest kod testowy(dlatego shr 1). Dlaczego nie mogę wykonać takiego przesunięcia? A może ktoś z Was już takie rzeczy robił. Tylko interesuje mnie szybkość, nie chcę tego robić na stringach.