Freeman пишет:Главная проблема SDK — мы не видим своего пользователя.
А его и нет просто.
А откуда бы он взялся?
Вот, к примеру, в данный момент некоторые функции(Write\WriteLn) стали стандартными.
Но в релизах по-прежнему старая версия, с нашим изначальным "велосипедом".
При отсутствии RoadMap как предполагается использовать данное SDK?
Можно переделать свой существующий код под теущую версию из релиза.
Потом дождаться следующего релиза, где функции станут стандартными и снова переделывать свой код.
Кому-то захочется двойную работу делать?
Если функции не стандартные, то где документация по их использованию?
Если планируется привести всё в порядок и сделать по стандарту, то надо об этом где-то писать, обычно пишут в RoadMap или хотя бы в описании проекта.
Где-то здесь на форуме проскакивала информация о планах внедрения куда-то(в ВУЗы?) SDK, Кантора, ещё-чего-то. Я не помню дословно.
Вот тут пишут
Если повезёт, XD Pascal будет внедрён, наряду с BeRo Tiny Pascal, в лабораторный практикум по курсу конструирования компиляторов в МГТУ им. Н.Э. Баумана.
в частности тут немного уточняется, как именно это происходит.
Автор BeRo Tiny Pascal — Benjamin «BeRo» Rosseaux, это который из Farbrausch.
Ну, в общем, как мне кажется, развивать полезные вещи — это просто замечательно!
Добавлено 2020-08-21 в 15:19
Freeman пишет:...
Добавить ООП на object-ах, реализовать некоторые простые классы, типа TFileStream. Коллекцию и список можно портировать с CoreLite.
ООП на основе ключевого слова class планируется только для исключений. Объекты дают больше гибкости и экономят код, что важно для Колибри.
Насколько я понимаю, для ООП на object-ах ничего дополнительного реализовывать не нужно.
▼Например, такой код сейчас уже и так работает:
program OOP_Object;
uses
CRT;
type
TMyObject = object
private
FName: PAnsiChar;
protected
function GetBackColor: Byte;
function GetForeColor: Byte;
procedure SetBackColor(Value: Byte);
procedure SetForeColor(Value: Byte);
public
property BackColor: Byte read GetBackColor write SetBackColor;
property ForeColor: Byte read GetForeColor write SetForeColor;
property Name: PAnsiChar read FName write FName;
procedure Hello;
end;
function TMyObject.GetBackColor: Byte;
begin
Result := TextBackground;
end;
procedure TMyObject.SetBackColor(Value: Byte);
begin
TextBackground(Value);
end;
function TMyObject.GetForeColor: Byte;
begin
Result := TextColor;
end;
procedure TMyObject.SetForeColor(Value: Byte);
begin
TextColor(Value);
end;
procedure TMyObject.Hello;
begin
WriteLn('Hello, ', FName, '!');
end;
var
MyObject: TMyObject;
begin
InitConsole('Hello');
with MyObject do
begin
BackColor := White;
ForeColor := LightRed;
Name := 'World';
Hello;
end;
end.
Что касается ООП на основе ключевого слова class, то тут нужно реализовать TObject и его методы.
▼То есть, вот это:
TObject = class
constructor Create;
procedure Free;
class function InitInstance(Instance: Pointer): TObject;
procedure CleanupInstance;
function ClassType: TClass;
class function ClassName: ShortString;
class function ClassNameIs(const Name: string): Boolean;
class function ClassParent: TClass;
class function ClassInfo: Pointer;
class function InstanceSize: Longint;
class function InheritsFrom(AClass: TClass): Boolean;
class function MethodAddress(const Name: ShortString): Pointer;
class function MethodName(Address: Pointer): ShortString;
function FieldAddress(const Name: ShortString): Pointer;
function GetInterface(const IID: TGUID; out Obj): Boolean;
class function GetInterfaceEntry(const IID: TGUID): PInterfaceEntry;
class function GetInterfaceTable: PInterfaceTable;
function SafeCallException(ExceptObject: TObject;
ExceptAddr: Pointer): HResult; virtual;
procedure AfterConstruction; virtual;
procedure BeforeDestruction; virtual;
procedure Dispatch(var Message); virtual;
procedure DefaultHandler(var Message); virtual;
class function NewInstance: TObject; virtual;
procedure FreeInstance; virtual;
destructor Destroy; virtual;
end;
Freeman пишет:Главная проблема SDK — мы не видим своего пользователя.
Может есть смысл попросить кого-то потестировать? Предложить, например, в той же группе ВК или ещё каком-то форуме.
Ну, то есть, скачать релиз, попробовать что-то скомпилировать, создать что-то своё, запустить это в KolibriOS.
Если у них возникают какие-то проблемы — сообщить о них, и тогда будем думать, как дополнить\исправить SDK.