Перетаскиваю в ВВ обероновский Juice. Чтобы не вносить собственных ляпов, пользуюсь конвертером, но он не предусматривает преобразование типа BYTE в SHORTCHAR, а проблемы возникают. Например
Код:
PROCEDURE Read(VAR R: Rider; VAR x: BYTE);
...
BEGIN
...
ELSE
x := 0X[incompatible assignment]; R.eof := TRUE
END
END Read;
Можно убрать
X, но тогда не понятно будет ли целочисленный нуль читаться концом строки. Если изменить тип на SHORTCHAR, тогда придется изменять тип массивов BYTE в других местах модуля.
Иная проблема.
Код:
PROCEDURE FreeEntry(): INTEGER;
VAR i, j: INTEGER;
BEGIN
FOR j := 0 TO 1 DO
FOR i := 0 TO MaxFiles-1 DO
IF FileTab[i] = S.VAL(INTEGER, NIL[operand inapplicable to (this) function]) THEN
RETURN i
END
END;
Kernel.GC()
END;
HALT(99)
END FreeEntry;
Пока делаю так
Код:
PROCEDURE FreeEntry(): INTEGER;
VAR a, i, j: INTEGER;
BEGIN
a := 0;
FOR j := 0 TO 1 DO
FOR i := 0 TO MaxFiles-1 DO
IF FileTab[i] = S.VAL(INTEGER, a) THEN
RETURN i
END
END;
Kernel.GC()
END;
HALT(99)
END FreeEntry;
Но как будет правильно?