- Код: Выделить всё
Type
PComplex=^TComplex;
TComplex = record
Re,
Im:Double;
end;// TComplex = record
Иногда необходимо именно Double, иногда можно обойтись и Single. В модуле есть пару функций написанных на ASM-е, в которых необходимо увеличить число согласно размеру TComplex, так как изначально используем типы размер которых есть степень двойки, то в процедурах использую что-то в виде:
- Код: Выделить всё
shl EBX, 4 (для Double)
shl EBX, 3 (для Single)
Из-за чего модули плодятся в двойном размере

- Код: Выделить всё
shl EBX, shlMnogitel
Но как мне объявить такую константу?
если есть функция, которая вернет этот множитель
- Код: Выделить всё
function Power2(N: Cardinal): Byte;
begin
Result:=0;
While N>1 do
begin
N := N shr 1;
Inc(Result);
end;
end;
Но объявление константы:
- Код: Выделить всё
const
shlMnogitel=Power2(SizeOf(TComplex));
Не допустимы.... Можно ли как то это сделать по другому
