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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2008, 19:21   #1
master_root
Пользователь
 
Регистрация: 18.05.2008
Сообщений: 30
Восклицание Создание нового типа

Нужно создать новый тип данных. При этом нужно переопределить стандартные операторы присвоения, сравнения..., чтобы работа с этим типом ничем не отличалась от стандартных. Т.к. нужно переопределять операторы использую тип Record. Работать с полями типа из переопределённых операторов нельзя. Задача такая, чтобы в переопределённом методе присваивания разбить число на цифры и поместить эти цифры в массив, а потом работать с этим массивом в переопределённых операторах сложения, вычитания, сравнения... Что-то никак не могу додуматься как это сделать. Такое ощущение, что эта задача вообще не осуществима при помощи типа Record, а значит переопределить операции нельзя больше нигде. Помогите пожалуйста
master_root вне форума Ответить с цитированием
Старый 26.06.2008, 21:03   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

как пример:
Код:
type
   TMyType = record
     X, Y:integer;
     class operator Implicit(N:integer):TMyType;           // := integer
     class operator add(A, B:TMyType):TMyType;             // +
     class operator LessThan(A, B:TMyType):boolean;        // < 
   end;

implementation

class operator TMyType.Implicit(N:integer):TMyType;
begin
   result.X := N div 10;
   result.Y := N mod 10;
end;

class operator TMyType.add(A, B:TMyType):TMyType;
begin
   result.X := A.X + B.X;
   result.Y := A.Y + B.Y;
end;

class operator TMyType.LessThan(A, B:TMyType):boolean;
begin
   result := (A.X < B.X) or (A.Y < B.Y);
end;

procedure TForm1.FormCreate(Sender: TObject);
var A, B, C:TMyType;
    B1 : boolean;
begin
   A := 56;
   B := 78;
   C := A + B;

   B1 := C < A;
end;
alexBlack вне форума Ответить с цитированием
Старый 02.07.2008, 22:33   #3
master_root
Пользователь
 
Регистрация: 18.05.2008
Сообщений: 30
По умолчанию

спасибо.что-то я сразу не сообразил
master_root вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
XML - создание нового документа PUH Помощь студентам 5 17.04.2008 20:32
создание нового листа cathie Microsoft Office Excel 2 12.12.2007 15:49
Меню, создание нового пункта Yogik™ Помощь студентам 2 17.08.2007 17:32
Создание нового класса на базе существующего SpiritSm Общие вопросы Delphi 1 19.07.2007 10:11
Создание нового класса на базе существующего SpiritSm Помощь студентам 1 19.07.2007 01:05