Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.02.14;
Скачать: [xml.tar.bz2];

Вниз

Как в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
15-1260341779
vajo
2009-12-09 09:56
2010.02.14
Помогите с Windows Photo Gallery


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


2-1260988667
Дмитрий
2009-12-16 21:37
2010.02.14
Заполнение массива из графика


15-1260140497
KilkennyCat
2009-12-07 02:01
2010.02.14
ночная поэзия


15-1260396487
TStas
2009-12-10 01:08
2010.02.14
Дискета с нортоном





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский