Quote:
Типы
char ? Byte ? string255 ?
в процедурах
procedure PUTCHAR(ch:char);
procedure CURSOR(x,y:Byte);
procedure PUTSTR(s:string255);
С таким проблем в Обероне не будет ? Можна такие типы в входящими в процедуры применять ? и т.д.
Типа strings255 в Обероне нет. Можно определить:
Code:
IMPORT SYSTEM;
TYPE
string255ptr = POINTER TO ARRAY 256 OF CHAR; (* это указатель! *)
string255 = ARRAY 256 OF CHAR; (* это строка! *)
Вах, сейчас опять скажешь, что я пытаюсь тебя запутать. Ты, в общем, учитывай, что если в PUTSTR будет параметр-чисто строка, то будет и операция копирования строки, т.е. переброса её из одного куска памяти в другой. А если указатель - то такой операции не будет. Так что юзай тут указатель. У нас есть такой системный тип, я тебе показал как он описывается выше. Он совместим по передаче параметров с любой строкой.
CHAR и BYTE - да, такие же, как в Дельфи.
Code:
Type
INT8=Byte; (* Неа. INT8 = -128..127; или Shortint, раз он -128..127 signed 8-bit *)
INT16=Word; (* Неа. INT16 = -32768..32767; или Smallint, раз он -32768..32767 signed 16-bit *)
Quote:
А тогда к какому типу у обероне приравнивать дельфийский Word ?
В Обероне такого типа нет.
Quote:
...что можна прописать аналогами и как из того что может очень пригодится ?
Ну есть ещё INT32 и INT64, но зачем они. Смысла нет.
Quote:
"repeat .... until" - в Обероне без проблем ? В таком виде как написано в FoxHunt.dpr
в процедуре PrintField; ?
Да.
Quote:
А что это за....
Flag = 1CX; (* 9X, 0BX, 1EX *)
Fox = 1DX; (* 9X, 0EX, 1EX *)
Это равносильно
Flag = $1C;
Fox = $1D;
Да.
Quote:
вот еще дельфя не понимает
field, number: ARRAY Xm, Ym OF INT8;
opened, marked: ARRAY Xm, Ym OF BOOLEAN;
т.е. в дельфе надо указывать как-то так:
field, number: ARRAY[1..Xm,1..Ym]OF INT8;
opened, marked: ARRAY[1..Xm,1..Ym] OF BOOLEAN;
Это верно ?
Нет. Индексы в Обероне всегда от 0. Надо так:
Code:
field, number: ARRAY[0..Xm-1,0..Ym-1]OF INT8;
opened, marked: ARRAY[0..Xm-1,0..Ym-1] OF BOOLEAN;
Quote:
Понятное дело всё равно будут разные "приколы" типа
в IF .... THEN .... ELSE ... END;
что если в дельфи несколько команд после "THEN" и/или "ELSE" то надо в "BEGIN... END;",
а Обероне это вроде как по другому.... с одним "END;" без всяких "THEN BEGIN" и "ELSE BEGIN"...
Но согласись что для портации, переброски из Дельфи в оберон, это всё такие мелочи....
что и разговаривать не стоит за них!
Ну наверное.
Возможно, стоит потом написать препроцессор, переводящий одно в другое.