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

Вниз

Как в Delphi работать с операторами?   Найти похожие ветки 

 
S-C-L ©   (2009-12-16 20:06) [0]

Люди помогите!!!
Есть код на С++:

//! Array operator
float & operator[]( unsigned int i )
{
 if ( i < 4 ) return xyzw[i];
}
//! Const array operator
const float & operator[]( unsigned int i ) const
{
 if ( i < 4 ) return xyzw[i];
}


Нужно его переделать на Delphi 7.
Подскажите как.


 
MBo ©   (2009-12-16 20:14) [1]

класс со свойством-массивом


 
S-C-L ©   (2009-12-16 20:21) [2]

Да.
Нужно сделать класс со свойством-массивом.
чтобы к нему можно было обращаться

a := MyClass[num];

Ценю только дельные советы!


 
Nucer   (2009-12-16 20:23) [3]

 TMyItems = class
 private
   ...
   function GetItem(Index: Integer): TMyItem;
 public
   property Items[Index: Integer]: TMyItem read GetItem; default;
   ...
 end;


 
MBo ©   (2009-12-16 20:27) [4]

Ценихелп,источникзнаний
блин,пробелсломался:(


 
S-C-L ©   (2009-12-16 20:32) [5]


> Nucer   (16.12.09 20:23) [3]

Спасибо за помощь!!!


 
S-C-L ©   (2009-12-16 20:40) [6]

А как в этом случае сделать оператор +=?

//! Add-equals operator
Vector2 & operator+=( const Vector2 & v )
{
 xy[0] += v.xy[0];
 xy[1] += v.xy[1];
 return *this;
}
//! Add operator
Vector2 operator+( const Vector2 & v ) const
{
 Vector2 w( *this );
 return ( w += v );
}
//! Minus-equals operator
Vector2 & operator-=( const Vector2 & v )
{
 xy[0] -= v.xy[0];
 xy[1] -= v.xy[1];
 return *this;
}
//! Minus operator
Vector2 operator-( const Vector2 & v ) const
{
 Vector2 w( *this );
 return ( w -= v );
}


 
MBo ©   (2009-12-16 20:47) [7]

Никак. В Д7 перегрузки операторов нет, только индексированные свойства.
Для вариантов что-то такое было только.

С Д2006 можно перегружать операторы для записей (однако операторы += и т.п. - недельфийские, и соответственно перегружать нечего)


 
S-C-L ©   (2009-12-16 20:50) [8]


> MBo ©   (16.12.09 20:47) [7]

А как мне тогда этот код реализовать в Delphi?


 
Nucer   (2009-12-16 20:51) [9]


> А как мне тогда этот код реализовать в Delphi?

Через методы класса.


 
S-C-L ©   (2009-12-16 20:53) [10]

т.е:

//! Add-equals operator
procedure Add( v : Vector2);
procedure Sub( v : Vector2);
procedure Mul( v : Vector2);
procedure Div( v : Vector2);

Я правильно понял?


 
Nucer   (2009-12-16 20:57) [11]


> S-C-L ©   (16.12.09 20:53) [10]

Да. Но это будут аналоги +=, -=, /=, *=. Можно еще сделать методы, аналогичные обычным с двумя операндами.


 
S-C-L ©   (2009-12-16 21:01) [12]

Как заменить оператор |=?

upSkin |= ( iSkinPart == index );


 
Омлет ©   (2009-12-16 21:23) [13]

> upSkin |= ( iSkinPart == index );


upSkin :=  upSkin or (iSkinPart = index );


 
Anatoly Podgoretsky ©   (2009-12-16 21:35) [14]

> MBo  (16.12.2009 20:27:04)  [4]

Alt+32


 
Anatoly Podgoretsky ©   (2009-12-16 22:25) [15]

> Anatoly Podgoretsky  (16.12.2009 21:35:14)  [14]

И вариант пользовательский - Ctrl+C, Ctrl+V, Ctrl+V, ...


 
Игорь Шевченко ©   (2009-12-16 23:15) [16]


> Ценю только дельные советы!


Ценю только деньги за ответы



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

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

Наверх




Память: 0.5 MB
Время: 0.04 c
15-1260048619
Юрий
2009-12-06 00:30
2010.02.14
С днем рождения ! 6 декабря 2009 воскресенье


1-1237819822
Marfusha
2009-03-23 17:50
2010.02.14
Запуск макроса OpenOffice из Delphi


2-1259317673
ford
2009-11-27 13:27
2010.02.14
UTF-8


11-1208415384
MYRX
2008-04-17 10:56
2010.02.14
Вопросы к Старшим


15-1260347327
ford
2009-12-09 11:28
2010.02.14
TRegExpr поогите составить выражение