Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.011 c
3-1144404814
Russ
2006-04-07 14:13
2006.05.28
запрос для выбора данных из двух БД


2-1147159115
_duk
2006-05-09 11:18
2006.05.28
Получить значения


2-1147258116
Quattro
2006-05-10 14:48
2006.05.28
Разноцветные буквы.


15-1146304466
БГ
2006-04-29 13:54
2006.05.28
Что за вид спорта?


15-1146811361
Rulikkk
2006-05-05 10:42
2006.05.28
Ищу openSource компонент, для отображения блок схем.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский