Буфер записи (top secret) #2

VY> PS.
VY> А вот еще интересный момент, как например сработать «указатель» на буфер записи по аналогии с C55. То есть, чтоб некоторая процедура позволяла получить его как &GROUP (без магического обрамления в группу).
VY> C55:
VY> RecPtr &GROUP
VY> ….
VY> RecPtr &= MyFile{PROP:Record}
VY> C5:
VY> RecPtr &GROUP
VY> ….
VY> А здесь процедура должна этот RecPtr «указать».
VY> У меня получилость только так (с обрамлением):
VY> !********************
VY> FRecGrp       GROUP
VY> FRecord         &GROUP
VY>              END
VY>  CODE
VY>  GetFileRecord(TestFile, FRecGrp)
VY> ! Теперь FRecGrp.FRecord — то что нам надо.
VY> !********************
VY> GetFileRecord PROCEDURE(FILE MyFile, *GROUP RecGrp)

Иначе и не получиться. Я уже писал про то, что компилятор не позволяет вернуть из функции указатель на группу. Даже в С55. Новое свойство {PROP:Record} просто исключение, которое по особому обрабатывается компилятором.

У меня, вообще, есть подозрение, что компилятор знает как обрабатывать каждое свойство! Т.е., вместо того, чтобы сделать универсальный механизм свойств объекта, которые обрабатываются исключительно внутренними методами объекта без вмешательства компилятора, разработчики опять «намудрили»! Сами свойства, как и положено, обрабатываются внутренним механизмом объекта: у файла/View — драйвером файла, у контролов окна — методами класса контрола. Но вот насчет возвращаемого значения — тут опять работает компилятор. Если, например, написать дополнительный драйвер объекта, который будет обрабатывать дополнительные свойства, то в большинстве случаев ничего путного из этого не получиться. Компилятор просто не будет знать, что делать с возвращаемым результатом. Так что, увы, пока у разработчиков не получился универсальный механизм работы со свойствами объектов.

Кстати, Владимир. Ты спрашивал насчет моих писем. Обычно все письма насчет внутренней работы Кларион шли с заголовками типа: «Внутренняя реализация Клариона» и «Некоторые особенности при работе с …» Вместо точек — GROUP/QUEUE/FILE/VIEW/CLASS.

Обычно я их слал в оба списка рассылки. К сожалению, в отличие от списка clarion@yahoogroups.com, у данного списка нет архива писем. По крайней мере, на сайте АРСИСа я не видел никакого упоминания на этот счет. А жаль! Было бы неплохо, если бы такой архив был в данном списке.

P.S. В предыдущем письме я спрашивал — не знает ли кто как можно передавать в функцию указатели на НЕИМЕНОВАННЫЕ классы и возвращать из функций указатели на них. Так вот, если кому интересно — мне удалось это сделать. Правда, возврат получается немного некрасиво, типа:

MyClass &= Address(GetClassRef())

Зато — работает. И не надо предпринимать какие-либо специальные меры, типа помещения данного указателя в группу.