Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.11.15;
Скачать: CL | DM;

Вниз

object`ы в delphi 2009   Найти похожие ветки 

 
Германн ©   (2008-10-17 01:35) [80]


> просто так   (17.10.08 00:35) [79]
>
> спсб, вроде заработало. но это тоже не выход((
>

А какой выход ты хотел бы? Волшебную палочку?
P.S. Пустопорожняя тема, а длится уже более трёх суток. И мой пост уже 80-й.


 
просто так   (2008-10-17 01:56) [81]

>>P.S. Пустопорожняя тема, а длится уже более трёх суток. И мой пост уже 80-й.
Всем спасибо, тема закрыта


 
Германн ©   (2008-10-17 02:32) [82]


> просто так   (17.10.08 01:56) [81]
>
> >>P.S. Пустопорожняя тема, а длится уже более трёх суток.
>  И мой пост уже 80-й.
> Всем спасибо, тема закрыта
>

"Закрыть" тему может только модератор. А он пока не захотел её закрывать.


 
DevilDevil ©   (2008-10-17 14:57) [83]

> просто так   (16.10.08 17:42) [53]
> а смысл доделывать рекорд? чтоб получить обжект который
> нафиг никому не нужен((?


object (или аналогичный ) нужен всем, только они ещё об этом не знают. Преимуществ record над object-ом невижу никаких! Преимущества objectа над record-ами: наследование, виртуальные методы, секции private/public/protected.

Если честно, я вообще не вижу причин, по которым нельзя сделать record-ы с VMT или продвигать object, а record оставить для обратной совместимости.

Проблема только одна - расположение VMT.
В С++ VMT не обязательно хранится по нулевому смешению.
Приведу аналоги на Delphi.

type
 TMyPoint = object(TPoint)
 public
   function Length(): integer; virtual;
 end;


Если реализовать то же самое в С++, то VMT будет по смещению 8байт. А вообще можно организовать так:

VMT
X: integer;
Y: integer;


И при вызове функции, где TMyPoint должен приводиться к TPoint:
var
 MyPoint: TMyPoint;
begin
 MyPoint.Create();
 Windows.GetCursorPos(@MyPoint{!!!});


на уровне compiler magic должен пихаться указатель не на MyPoint, а на MyPoint+4. Вот и все проблемы.


 
oxffff ©   (2008-10-20 08:43) [84]


> Если честно, я вообще не вижу причин, по которым нельзя
> сделать record-ы с VMT


А мы например очень это видим. Причина простая record - это конечный тип, который связан со всеми методами на момент компиляции. И смысл делать позднее связывание полностью отсутствует. :)


 
просто так   (2008-10-20 09:11) [85]

>>А мы например очень это видим. Причина простая record - это конечный тип, который связан со всеми методами на момент компиляции

object без виртуальных методов - тоже, в нем нет вмт, тотже рекорд с методами, зачем херить старую провереную фичу и вводить новую аналогичную?

>>Проблема только одна - расположение VMT. В С++ VMT не обязательно хранится по нулевому смешению.

в delphi также. vmt появляется при первом виртуальном методе, по текущему смещению


 
oxffff ©   (2008-10-20 09:34) [86]


> object без виртуальных методов - тоже, в нем нет вмт, тотже
> рекорд с методами, зачем херить старую провереную фичу и
> вводить новую аналогичную?


Затем, что ввели другую идеалогию размещения объекта, в куче.


> в delphi также. vmt появляется при первом виртуальном методе,
>  по текущему смещению


В любом объекте (от class) уже есть виртуальные методы.


 
oxffff ©   (2008-10-20 09:34) [87]


> object без виртуальных методов - тоже, в нем нет вмт, тотже
> рекорд с методами, зачем херить старую провереную фичу и
> вводить новую аналогичную?


Затем, что ввели другую идеалогию размещения объекта, в куче.


> в delphi также. vmt появляется при первом виртуальном методе,
>  по текущему смещению


В любом объекте (от class) уже есть виртуальные методы.


 
просто так   (2008-10-20 10:20) [88]

>>Затем, что ввели другую идеалогию размещения объекта, в куче.
в обжекте легко реализовать что размещение в куче, что в стеке тут он практичнее.
>>В любом объекте (от class) уже есть виртуальные методы.
в object`е они есть только когда это надо програмисту, тоже имхо практичнее


 
oxffff ©   (2008-10-20 10:32) [89]


> просто так   (20.10.08 10:20) [88]


Чем практичнее?

-Тем что нельзя сделать динамическое инстранцирование
-нельзя прикрутить интерфейсы к объекту
-нельзя прикрутить procedure of object.

Все это ограничение стекового размещения.

Или JAVA, .NET не по тому пути пошли?


 
просто так   (2008-10-20 12:04) [90]

>>-Тем что нельзя сделать динамическое инстранцирование
можно
>>-нельзя прикрутить интерфейсы к объекту
это да
>>-нельзя прикрутить procedure of object.
можно, прекрасно работает


 
oxffff ©   (2008-10-20 15:37) [91]


> просто так   (20.10.08 12:04) [90]
> >>-Тем что нельзя сделать динамическое инстранцирование


А как ты собираешься делать динамическое создание на стеке?
Это возможно только для объектов кучи.


> можно
> >>-нельзя прикрутить интерфейсы к объекту
> это да

Следующее это то же самое. Проблема на том, что интерфейс должен существовать при выходе объекта из области видимости.
Это возможно только для объектов кучи.

> >>-нельзя прикрутить procedure of object.
> можно, прекрасно работает


Это возможно только для объектов кучи. Поскольку захватив метод объекта ты(это самое первое closure в delphi, еще до 2009) гарантировать время его жизни при выходе из scope.
Это возможно только для объектов кучи.


 
просто так   (2008-10-20 16:48) [92]

>>oxffff

>>Это возможно только для объектов кучи.
тебе религия запрещает объект в куче создать?


 
oxffff ©   (2008-10-20 17:21) [93]


> просто так   (20.10.08 16:48) [92]


Я тебе пояснил  преимущества новой объектной модели.
Мне то все понятно. :)


 
просто так   (2008-10-20 17:40) [94]

отсутствие возможности создать класс статически естественно как недостаток не рассматривается)?


 
oxffff ©   (2008-10-20 19:30) [95]


> просто так   (20.10.08 17:40) [94]


Это ты о чем?


 
GrayFace ©   (2008-10-20 23:12) [96]

Не понятно, о чем тут спорить. Ни одного довода в пользу удирания object"ов ведь не было. Не понятно, чем они мешали CG.


 
Vga ©   (2008-10-21 06:37) [97]


> Не понятно, чем они мешали CG.

Ничем не мешали, больше всего похоже что их случайно сломали.



Страницы: 1 2 3 вся ветка

Текущий архив: 2009.11.15;
Скачать: CL | DM;

Наверх




Память: 0.64 MB
Время: 0.019 c
2-1254374207
Necco
2009-10-01 09:16
2009.11.15
StringList в Edit


2-1254144718
SergejM
2009-09-28 17:31
2009.11.15
TFileStream и array of extended


2-1254223177
defen
2009-09-29 15:19
2009.11.15
вывод значения ключа еестра


11-1207645168
Сидор
2008-04-08 12:59
2009.11.15
KOLGif: обработка события OnClick


15-1253260856
Empleado
2009-09-18 12:00
2009.11.15
О веб сайтах