Главная страница
    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.48 MB
Время: 0.004 c
15-1260136700
Lamer@fools.ua
2009-12-07 00:58
2010.02.14
Стал отцом! Принимаю поздравления =)


6-1212475055
ketovchanin
2008-06-03 10:37
2010.02.14
Proxy-Authorization


1-1236676563
IGray
2009-03-10 12:16
2010.02.14
Очень странное срабатывание секции INITIALIZATION


15-1260272593
RUMSCRU
2009-12-08 14:43
2010.02.14
Программа для упорядочивания музыки "Интеллектуальное радио"


15-1260221418
Юрий
2009-12-08 00:30
2010.02.14
С днем рождения ! 8 декабря 2009 вторник





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский