record'ы с методами

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Аватара пользователя
XProger
новенький
Сообщения: 44
Зарегистрирован: 13.08.2007 02:52:28
Откуда: Москва
Контактная информация:

record'ы с методами

Сообщение XProger »

Всего два вопроса:
1) Планируется ли данная весьма удобная и полезная фитча в FPC?
2) Перегрузка операторов в FPC синтаксически отличается от реализации в Delphi. Планируется ли введение большей совместимости в режиме {$MODE DELPHI} ?
Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

А что там полезного?
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Иван Шихалев писал(а):А что там полезного?

Тем более, что это уже вовсе и не рекорд получается... :)
Аватара пользователя
FedeX
постоялец
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Сообщение FedeX »

Используй
TMyType=object
procedure method;
end;
или
TMyType=record
method:TMyProcedure;
end;
Вообще бы неплохо уточнить для какой цели. Небось тоже желание получить кроссязыковые кроссплатформенные экспортируемые обьекты :wink: Тогда кроме второго варианта вроде пока ещё ничего не придумали :roll:
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

FedeX
Ну да, потом сразу же потребуется ввести события, без этого не обойтись, ведь надо же отслеживать ситуацию... :)
И что получим в итоге? ;)
Аватара пользователя
XProger
новенький
Сообщения: 44
Зарегистрирован: 13.08.2007 02:52:28
Откуда: Москва
Контактная информация:

Сообщение XProger »

Спасибо за ответы.
Нужно это лишь для создания кроссязыковых (Delphi <-> FPC) математических "классов" по типу такого:

Код: Выделить всё

TMat3f = record
  procedure Inverse;
  ...
  case Integer of
    0: (cell : array [0..3, 0..3] of Single);
    1: (e00, e01, e02, e03,
        e10, e11, e12, e13,
        e20, e21, e22, e23,
        e30, e31, e32, e33: Single);
    2: (row: array [0..3] of TVec4f);
end;

Насколько я знаю, object не поддерживает case, поэтому пока извращаюсь со всякими absolute... :)

А что до перегрузки операторов, столкнулся с одной очень неприятной особенностью, в {$MODE DELPHI} она не работает, пишет:
operator Fatal: Syntax error, "=" expected but "*" found

Поэтому приходится извращаться переключением на {$MODE FPC} внутри мат. модуля и восстановлением в конце :(
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

XProger писал(а):Насколько я знаю, object не поддерживает case

Зато object поддерживает overload.
Аватара пользователя
XProger
новенький
Сообщения: 44
Зарегистрирован: 13.08.2007 02:52:28
Откуда: Москва
Контактная информация:

Сообщение XProger »

Vadim, каково применение перегрузки в рамках данного примера? :shock:
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

XProger
:roll:
Не могу сказать, что совсем уж в рамках... :)
Но перезагрузка позволяет использовать одну и ту же функцию с разным типом параметров:

Код: Выделить всё

myobject = TObject
procedure пересчитать(ar: array of single); overload;
procedure пересчитать(ar: array of TVec4f); overload;
Аватара пользователя
XProger
новенький
Сообщения: 44
Зарегистрирован: 13.08.2007 02:52:28
Откуда: Москва
Контактная информация:

Сообщение XProger »

Vadim
Но обращение вида:

Код: Выделить всё

Mat4f.e00 := blabla;
Mat4f.cell[i, j] := blablabla;

Эта перегрузка сделать не поможет :\
Аватара пользователя
*vmr
постоялец
Сообщения: 168
Зарегистрирован: 08.01.2007 00:46:07
Откуда: Киев
Контактная информация:

Сообщение *vmr »

Object уже не поддерживается дельфями, вернее оставлен для совместимости...
packed object -- уже дает синтаксическую ошибку... (а как же TVector3f = packed object ?), хотя в седьмых дельфях работал на ура....
В рекорды подобавляли каких-то методов...

Блин, ну остановитесь на чем-то одном!!!
А то ни того ни другого — везде какие то полуфабикаты...
Аватара пользователя
XProger
новенький
Сообщения: 44
Зарегистрирован: 13.08.2007 02:52:28
Откуда: Москва
Контактная информация:

Сообщение XProger »

Я бы с радостью остановился, но вот у FPC нет нормального IDE с нормальным дебаггером... [ moderated ] (предупреждение: выражения выбираем, да?) :\
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

XProger писал(а):FPC нет нормального IDE с нормальным дебаггером..

ну как всегда есть 2 варианта : написать и заказать разработку.
Ответить