Jordan писал(а):
У меня есть вопрос к вам. На вашем форуме, вы используете консольную версию оберона.(не компонент паскаль) Поддерживает ли компилятор строки как в паскале? Пример a+b, if (a = 'hello') then. Возможно ли подключить библиотеку SDL? Я делаю библиотеку GUI (на фри паскале) и хотел бы сразу писать на обероне.
Здравствуйте, Jordan.
Да, компилятор OPCL имеет поддержку строк, но только однобайтовых (не юникод). Конкатенация (склейка) возможна традиционным для Оберона способом (отдельной процедурой). Впрочем, OPCL имеет поддержку расширения
OberonX, поэтому встроить конкатенацию в него (как и юникодные типы) представляется вполне возможным. Например:
Код: "OBERON"
PROCEDURE "+"* (a, b: String): String;
(* Console.String + String concatenation. *)
VAR
res: ARRAY LEN(a) + LEN(b) + 1 OF Char; i, j: Integer;
BEGIN
i := 0;
WHILE a # 0X DO res := a; INC(i) END;
j := 0;
WHILE b[j] # 0X DO res := b[j]; INC(i); INC(j) END;
res := 0X;
RETURN res
END "+";
И потом:
Код: "OBERON"
MODULE Program5;
IMPORT
C := Console;
VAR
str: ARRAY 80 OF C.Char; c: C.Char;
BEGIN
C.SetSize(64, 5); C.SetFont("Lucida Console");
C.SetColors(C.LGreenOnGreen); C.Clr;
C.WriteStr("Enter a string, please: ");
C.ReadStr(str);
C.WriteStr("You have entered the string '" + str + "'"); C.WriteLn;
c := C.ReadCh();
END Program5.
Это фрагмент консольной библиотеки для OPCL и демонстрационного примера к ней. Конечно изучить OPCL будет полезно, но всё же делать библиотеку GUI советую на Компонентном Паскале (BlackBox), он видится более готовым для этой цели.
Базовая поддержка SDL для OPCL есть, но только самая базовая (придётся допиливать). Увы, малое количество библиотек — общая проблема Оберонов. Для КП/BlackBox есть более полный вариант. Всё это выложено здесь:
http://sourceforge.net/projects/sdl-for-oberon/. (и для OPCL, и для BlackBox)