![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в Delphi работать с операторами? [D7, XP]
S-C-L © (2009-12-16 20:06:00)Люди помогите!!!
Есть код на С++:
//! 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.
Подскажите как.
Игорь Шевченко (2009-12-16 23:15:00) [1]
> Ценю только дельные советы!
Ценю только деньги за ответы
Anatoly Podgoretsky (2009-12-16 22:25:00) [2]> Anatoly Podgoretsky (16.12.2009 21:35:14) [14]
И вариант пользовательский - Ctrl+C, Ctrl+V, Ctrl+V, ...
Anatoly Podgoretsky (2009-12-16 21:35:00) [3]> MBo (16.12.2009 20:27:04) [4]
Alt+32
Омлет (2009-12-16 21:23:00) [4]> upSkin |= ( iSkinPart == index );
upSkin := upSkin or (iSkinPart = index );
S-C-L (2009-12-16 21:01:00) [5]Как заменить оператор |=?
upSkin |= ( iSkinPart == index );
Nucer (2009-12-16 20:57:00) [6]
> S-C-L © (16.12.09 20:53) [10]
Да. Но это будут аналоги +=, -=, /=, *=. Можно еще сделать методы, аналогичные обычным с двумя операндами.
S-C-L (2009-12-16 20:53:00) [7]т.е:
//! Add-equals operator
procedure Add( v : Vector2);
procedure Sub( v : Vector2);
procedure Mul( v : Vector2);
procedure Div( v : Vector2);
Я правильно понял?
Nucer (2009-12-16 20:51:00) [8]
> А как мне тогда этот код реализовать в Delphi?
Через методы класса.
S-C-L (2009-12-16 20:50:00) [9]
> MBo © (16.12.09 20:47) [7]
А как мне тогда этот код реализовать в Delphi?
MBo (2009-12-16 20:47:00) [10]Никак. В Д7 перегрузки операторов нет, только индексированные свойства.
Для вариантов что-то такое было только.
С Д2006 можно перегружать операторы для записей (однако операторы += и т.п. - недельфийские, и соответственно перегружать нечего)
S-C-L (2009-12-16 20:40:00) [11]А как в этом случае сделать оператор +=?
//! 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 );
}
S-C-L (2009-12-16 20:32:00) [12]
> Nucer (16.12.09 20:23) [3]
Спасибо за помощь!!!
MBo (2009-12-16 20:27:00) [13]Ценихелп,источникзнаний
блин,пробелсломался:(
Nucer (2009-12-16 20:23:00) [14]
TMyItems = class
private
...
function GetItem(Index: Integer): TMyItem;
public
property Items[Index: Integer]: TMyItem read GetItem; default;
...
end;
S-C-L (2009-12-16 20:21:00) [15]Да.
Нужно сделать класс со свойством-массивом.
чтобы к нему можно было обращаться
a := MyClass[num];
Ценю только дельные советы!
MBo (2009-12-16 20:14:00) [16]класс со свойством-массивом