Вниз
Скачать: CL | DM;

новый тип   Найти похожие ветки 

← →
Sergiony   (2006-05-11 01:03) [0]

Приветсвую всех мастеров!
как создать свой тип целого числа например как int64, но int128, чтобы с ним можно было производить все математические операциии как и с int64?


← →
Пусик ©   (2006-05-11 01:06) [1]

Такое невозможно в Delphi до версии 7. Вряд ли возможно и в следующих.


← →
DevilDevil ©   (2006-05-11 01:38) [2]

пока не выйдет 64й Delphi, тебе придётся реализовывать всё самостоятель (что очень сложно). Могу посоветовать использовать вещественный double


← →
Джо ©   (2006-05-11 01:44) [3]

Отчего же, отчего же.
В Делфи 2006 появились две прекрасные вещи: методы в записях и перегрузка операторов для них же.
Таким образом относительно непросто и, несомненно, красиво, можно реализовать желаемое :)

Например, создадим такую вот запись:

 TInt128 = record
   Data: array [0..15] of Byte; // тут актуальные данные
   class operator Add (A,B: TInt128): TInt128; // метод сложения
   class operator Add (A: TInt128; B: Integer): TInt128; // еще один
   class operator Implicit (A: Integer): TInt128; // приведение типов
   // реализуем также вычитание, целочисл. деление
   // и все остальное, что необходимо,
   // включая оператор сравнения
 end;

Для реализации такой вещи нужно немного разобраться с арифметикой над большими числами и проделать немного чисто формальной работы.
И в результате будут возможны такие конструкции как:

var
 Val1,
 Val2: TInt128;
begin
 Val2 := 12345;
 Val1 := Val2 + 200;
end;

и тому подобные :)


← →
Джо ©   (2006-05-11 01:44) [4]

> относительно непросто

относительно просто :)


← →
Anatoly Podgoretsky ©   (2006-05-11 09:17) [5]

Джо ©   (11.05.06 01:44) [3]
Да это легко заменяется на
Val1 := Add(Val2,  200);
Чем оно по сути и является. Что хорошо видно в АДА, там обязательно определяется оператор и могут использоваться все три формы, кроме указаных двух, еще и "+"(A, B)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.038 c
15-1146597572
kilonet
2006-05-02 23:19
2006.05.28
Перевод книги в электронный формат


2-1147078700
cardexc
2006-05-08 12:58
2006.05.28
не получается сделать запрос


2-1147606601
Mr tray
2006-05-14 15:36
2006.05.28
dll с хуком клавы - печатается 2 символа


3-1144404814
Russ
2006-04-07 14:13
2006.05.28
запрос для выбора данных из двух БД


2-1147233740
Rubey
2006-05-10 08:02
2006.05.28
Имя файла при сохранении




   Наверх