NEW INTEGER из Ады через записи
Добавлено: 18.04.20 15:48
Для наведения порядка в буквах, нужно избежать представления их числами. К счастью, по умолчанию записи из одного поля никак не выравниваются в A2 (проверено в 32-разядной или 64-разрядной версии). Поэтому можно сделать так:
Печатает 2 и 256, т.к. такая запись, будучи помещённой в массив, имеет размер 2 байта, что и требуется.
Проверено под Windows на 32 и 64 разрядных версиях.
Код: Выделить всё
MODULE Proba;
IMPORT Commands, KernelLog;
PROCEDURE RangeFromInteger*(CONST integer: SIGNED32): ARRAY 2 OF SIGNED32;
BEGIN RETURN [integer, integer + 1];
END RangeFromInteger;
TYPE Utf16 = RECORD
data : UNSIGNED16 END;
TYPE Utf16x128 = ARRAY 128 OF Utf16;
PROCEDURE W*(c:Commands.Context);
BEGIN
KernelLog.Int(SIZEOF(Utf16),0); KernelLog.Ln;
KernelLog.Int(SIZEOF(Utf16x128),0); KernelLog.Ln;
END W;
END Proba.W~
Проверено под Windows на 32 и 64 разрядных версиях.