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

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

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

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

Сообщение XProger » 29.07.2008 00:58:22

Всего два вопроса:
1) Планируется ли данная весьма удобная и полезная фитча в FPC?
2) Перегрузка операторов в FPC синтаксически отличается от реализации в Delphi. Планируется ли введение большей совместимости в режиме {$MODE DELPHI} ?
Аватара пользователя
XProger
новенький
 
Сообщения: 44
Зарегистрирован: 13.08.2007 02:52:28
Откуда: Москва

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

Сообщение Иван Шихалев » 29.07.2008 02:19:52

А что там полезного?
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

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

Сообщение Vadim » 29.07.2008 06:05:17

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

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

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

Сообщение FedeX » 29.07.2008 10:55:23

Используй
TMyType=object
procedure method;
end;
или
TMyType=record
method:TMyProcedure;
end;
Вообще бы неплохо уточнить для какой цели. Небось тоже желание получить кроссязыковые кроссплатформенные экспортируемые обьекты :wink: Тогда кроме второго варианта вроде пока ещё ничего не придумали :roll:
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

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

Сообщение Vadim » 29.07.2008 11:15:58

FedeX
Ну да, потом сразу же потребуется ввести события, без этого не обойтись, ведь надо же отслеживать ситуацию... :)
И что получим в итоге? ;)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение XProger » 29.07.2008 12:37:16

Спасибо за ответы.
Нужно это лишь для создания кроссязыковых (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} внутри мат. модуля и восстановлением в конце :(
Аватара пользователя
XProger
новенький
 
Сообщения: 44
Зарегистрирован: 13.08.2007 02:52:28
Откуда: Москва

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

Сообщение Vadim » 29.07.2008 12:43:27

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

Зато object поддерживает overload.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение XProger » 29.07.2008 12:48:05

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

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

Сообщение Vadim » 29.07.2008 13:03:39

XProger
:roll:
Не могу сказать, что совсем уж в рамках... :)
Но перезагрузка позволяет использовать одну и ту же функцию с разным типом параметров:
Код: Выделить всё
myobject = TObject
procedure пересчитать(ar: array of single); overload;
procedure пересчитать(ar: array of TVec4f); overload;
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение XProger » 29.07.2008 14:02:42

Vadim
Но обращение вида:
Код: Выделить всё
Mat4f.e00 := blabla;
Mat4f.cell[i, j] := blablabla;

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

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

Сообщение *vmr » 29.07.2008 21:03:23

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

Блин, ну остановитесь на чем-то одном!!!
А то ни того ни другого — везде какие то полуфабикаты...
Аватара пользователя
*vmr
постоялец
 
Сообщения: 168
Зарегистрирован: 08.01.2007 01:46:07
Откуда: Киев

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

Сообщение XProger » 30.07.2008 01:49:36

Я бы с радостью остановился, но вот у FPC нет нормального IDE с нормальным дебаггером... [ moderated ] (предупреждение: выражения выбираем, да?) :\
Аватара пользователя
XProger
новенький
 
Сообщения: 44
Зарегистрирован: 13.08.2007 02:52:28
Откуда: Москва

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

Сообщение Attid » 30.07.2008 13:12:20

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

ну как всегда есть 2 варианта : написать и заказать разработку.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru