Главная страница
    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.005 c
8-1202838536
SSW
2008-02-12 20:48
2010.02.14
Проблема с back буфером в direct3d


15-1260214408
Павел33333
2009-12-07 22:33
2010.02.14
Копирование программы с одного компьютера на другой.Не пашет.


1-1237742925
Eazy
2009-03-22 20:28
2010.02.14
Сфера применения Delphi7


15-1260263433
Andjey
2009-12-08 12:10
2010.02.14
Проверка файла на вирус


4-1228932250
alextim
2008-12-10 21:04
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский