Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2010, 14:02   #1
GBAXA
Пользователь
 
Аватар для GBAXA
 
Регистрация: 06.05.2010
Сообщений: 73
По умолчанию Переопредиление операторов

Здравствуйте!
Можно в Delphi переопредилить оператори +,-,*,/ для своего типа даних?
Если можно то примерно как.
Зарание спасибо и извините пожалуйста за ошибки я плохо знаю русский.
GBAXA вне форума Ответить с цитированием
Старый 04.08.2010, 14:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я слышал что в 2010 это можно сделать.
Но за достоверность не ручаюсь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.08.2010, 14:29   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Оператор Сигантура Тип оператора
Неявное преобразование Implicit(a : type) : resultType; Приведение
Явное преобразование Explicit(a: type) : resultType; Приведение
- Negative(a: type) : resultType; Унарный
+ Positive(a: type): resultType; Унарный
Inc Inc(a: type) : resultType; Унарный
Dec Dec(a: type): resultType Унарный
not LogicalNot(a: type): resultType; Унарный
not BitwiseNot(a: type): resultType; Унарный
Trunc Trunc(a: type): resultType; Унарный
Round Round(a: type): resultType; Унарный
= Equal(a: type; b: type) : Boolean; Сравнение
<> NotEqual(a: type; b: type): Boolean; Сравнение
> GreaterThan(a: type; b: type) Boolean; Сравнение
>= GreaterThanOrEqual(a: type; b: type): resultType; Сравнение
< LessThan(a: type; b: type): resultType; Сравнение
<= LessThanOrEqual(a: type; b: type): resultType; Сравнение
+ Add(a: type; b: type): resultType; Бинарный
- Subtract(a: type; b: type) : resultType; Бинарный
* Multiply(a: type; b: type) : resultType; Бинарный
/ Divide(a: type; b: type) : resultType; Бинарный
div IntDivide(a: type; b: type): resultType; Бинарный
Mod Modulus(a: type; b: type): resultType; Бинарный
shl ShiftLeft(a: type; b: type): resultType; Бинарный
shr ShiftRight(a: type; b: type): resultType; Бинарный
and LogicalAnd(a: type; b: type): resultType; Бинарный
Or LogicalOr(a: type; b: type): resultType; Бинарный
xor LogicalXor(a: type; b: type): resultType; Бинарный
and BitwiseAnd(a: type; b: type): resultType; Бинарный
Or BitwiseOr(a: type; b: type): resultType; Бинарный
xor BitwiseXor(a: type; b: type): resultType; Бинарный
Вот все что можно переопределять. Об этом написано в одной из статей журнала нашего форума. Скачать можно на procoder.info Там же есть и примеры. Появилось в Delphi .NET
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 04.08.2010, 15:41   #4
GBAXA
Пользователь
 
Аватар для GBAXA
 
Регистрация: 06.05.2010
Сообщений: 73
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Вот все что можно переопределять. Об этом написано в одной из статей журнала нашего форума. Скачать можно на procoder.info Там же есть и примеры. Появилось в Delphi .NET
У меня Delphi 2010 есть обичньій и .net то ето можно делать только в .net или и в обьічном?
GBAXA вне форума Ответить с цитированием
Старый 04.08.2010, 15:48   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

И там и там. Обычный 2010 есть также и .NET, просто сейчас вешать такой ярлык уже не модно. А тот который действительно .NET, кажись, соответствует 8-ке, точно не уверен. Но в общем тоже имеет свой порядковый номер. Обозначение .NET это просто рекламный ход.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 04.08.2010, 16:06   #6
GBAXA
Пользователь
 
Аватар для GBAXA
 
Регистрация: 06.05.2010
Сообщений: 73
По умолчанию

Большое спасибо. Очень помогли.
Delphi всетаки ругаетса
Код:
type

TM= array of array of extended;

TMatrix = class
  private
    FCol: integer;
    FRov: integer;
    FMatrix: TM;
    procedure SetCol(const Value: integer);
    procedure SetRov(const Value: integer);
  protected
  public
    property Matrix: TM read FMatrix write fMatrix;
    property Col:integer read FCol write SetCol;
    property Rov:integer read FRov write SetRov;
    constructor Create(c,r:integer);
    class operator Add(a, b: TMatrix): TMatrix;//ошьібка
end;
воттакая ошьібка [DCC Error] MatrixMod.pas(21): E2123 PROCEDURE, FUNCTION, PROPERTY, or VAR expected

Последний раз редактировалось GBAXA; 04.08.2010 в 17:57.
GBAXA вне форума Ответить с цитированием
Старый 05.08.2010, 07:37   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Как ты реализовал саму функцию Add?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 05.08.2010, 17:21   #8
GBAXA
Пользователь
 
Аватар для GBAXA
 
Регистрация: 06.05.2010
Сообщений: 73
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Как ты реализовал саму функцию Add?
Код:
class operator TMatrix.Add(a, b: TMatrix): TMatrix;
var i,j:integer;
begin
if (a.col=b.col) and (a.Rov=b.Rov) then begin
  for I := 0 to fCol - 1 do
    for j := 0 to fRov - 1 do begin
       result[i,j]:=a[i,j]+b[i,j];
    end;
end  else result:=a;

end;
НО какая разница оно вить ругаєтса еще при обявлении?

Последний раз редактировалось GBAXA; 05.08.2010 в 17:24.
GBAXA вне форума Ответить с цитированием
Старый 06.08.2010, 07:02   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

У тебя Matrix должен быть record.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 06.08.2010, 16:42   #10
GBAXA
Пользователь
 
Аватар для GBAXA
 
Регистрация: 06.05.2010
Сообщений: 73
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
У тебя Matrix должен быть record.
В обьічном не катит даже с record-ом. А вот в Delphi.NET пошло.
Теперь придетса делать DLL на .NET.
Как думаете может прокатить???
GBAXA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка операторов(С++) Сергей AfeR Помощь студентам 0 16.06.2010 18:34
Функции операторов Karasu Общие вопросы C/C++ 7 13.07.2009 18:04
Переопредиление клавиши клавиатуры. Amatory Win Api 3 14.12.2008 16:34
Перегрузка операторов (С++) Перчитель Помощь студентам 1 03.12.2008 18:46
Перегрузка операторов, Организация перегрузки операторов chagin_yav Помощь студентам 2 12.05.2008 09:15