![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
новый тип [D2005, XP]
Sergiony © (2006-05-11 01:03:00)Приветсвую всех мастеров!
как создать свой тип целого числа например как int64, но int128, чтобы с ним можно было производить все математические операциии как и с int64?
Anatoly Podgoretsky (2006-05-11 09:17:00) [1]Джо © (11.05.06 01:44) [3]
Да это легко заменяется на
Val1 := Add(Val2, 200);
Чем оно по сути и является. Что хорошо видно в АДА, там обязательно определяется оператор и могут использоваться все три формы, кроме указаных двух, еще и '+'(A, B)
Джо (2006-05-11 01:44:00) [2]Отчего же, отчего же.
В Делфи 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:00) [3]> относительно непросто
относительно просто :)
DevilDevil (2006-05-11 01:38:00) [4]пока не выйдет 64й Delphi, тебе придётся реализовывать всё самостоятель (что очень сложно). Могу посоветовать использовать вещественный double
Пусик (2006-05-11 01:06:00) [5]Такое невозможно в Delphi до версии 7. Вряд ли возможно и в следующих.