Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.25;
Скачать: CL | DM;

Вниз

Числа размером 64бита.   Найти похожие ветки 

 
PAVIA ©   (2005-12-11 11:52) [0]

Как можно заставить дельфи воспринемать без знаковые числа размером 64бита.
от 0 до $FFFFFFFFFFFFFFFF.
Просто думаю переписывать на ассемблер. Или как еще можно заставить.


 
TUser ©   (2005-12-11 12:06) [1]

Написать враппер над Int64?


 
PAVIA ©   (2005-12-11 12:31) [2]

Не понял что враппер?
Int64 не подходи так как знаковое число. А у мне нужны положительные числа.


 
Anatoly Podgoretsky ©   (2005-12-11 13:44) [3]

Longword


 
vrem   (2005-12-11 13:47) [4]

Longword 32 бита был, повысили? :)


 
Anatoly Podgoretsky ©   (2005-12-11 14:00) [5]

Перепутал, в Дельфи нет беззнакового целочисленного типа в 64 бита.


 
64-bit   (2005-12-11 16:52) [6]

Попробуйте использовать библиотеку KOL. Там есть тип int64.

64-bit integer numbers

type I64 = record
64 bit integer record. Use it and correspondent functions below in KOL projects to avoid dependancy from Delphi version (earlier versions of Delphi had no Int64 type).

 
Lo, Hi: DWORD;
end;
type PI64 = ^ I64;

function MakeInt64( Lo, Hi: DWORD ): I64;

function Int2Int64( X: Integer ): I64;

procedure IncInt64( var I64: I64; Delta: Integer );
I64 := I64 + Delta;

procedure DecInt64( var I64: I64; Delta: Integer );
I64 := I64 - Delta;

function Add64( const X, Y: I64 ): I64;
Result := X + Y;

function Sub64( const X, Y: I64 ): I64;
Result := X - Y;

function Neg64( const X: I64 ): I64;
Result := -X;

function Mul64i( const X: I64; Mul: Integer ): I64;
Result := X * Mul;

function Div64i( const X: I64; D: Integer ): I64;
Result := X div D;

function Mod64i( const X: I64; D: Integer ): Integer;
Result := X mod D;

function Sgn64( const X: I64 ): Integer;
Result := sign( X ); i.e.:
if X < 0 then -1
if X = 0 then 0
if X > 0 then 1

function Cmp64( const X, Y: I64 ): Integer;
Result := sign( X - Y ); i.e.
if X < Y then -1
if X = Y then 0
if X > Y then 1

function Int64_2Str( X: I64 ): String;

function Str2Int64( const S: String ): I64;

function Int64_2Double( const X: I64 ): Double;

function Double2Int64( D: Double ): I64;


 
sniknik ©   (2005-12-11 17:18) [7]

64-bit   (11.12.05 16:52) [6]
это замена - аналог дельфевского Int64 (а значит тоже со знаком) для ранних версий дельфей в которых его еще не было (нужен чтобы обеспечить независимость от версии дельфи).

сам же коментарий к типу положил. не читаеш? ;)


 
64-bit   (2005-12-11 21:01) [8]

2 sniknik

В файле Kol.pas есть исходник этиого типа. Его легко переделать под беззнаковый тип.


 
PAVIA ©   (2005-12-11 23:42) [9]

Хотелось что бы оболочка понимала данный тип. Но у вы она его совсем не воспринемает. В модуле System объявленны процедуры для работы с таким типом.
procedure __llmul;
procedure __lldiv;
procedure __lludiv;
procedure __llmod;
procedure __llmulo;
procedure __lldivo;
procedure __llmodo;
procedure __llumod;
procedure __llshl;
procedure __llushr;
Пробовол в  создать модуль в котором тип имелбы ранг от 0 до ... (в ручную правил DCU) но и тут облом. Сравнение чисел проходит верно, а вот выбор процедур для деления и умнажения не верен.


 
PAVIA ©   (2005-12-11 23:46) [10]

Решил сделать так. Подправить модуль system, чтобы при указании дириктивы  {$DEFENI UNSIGNED} он выбирал нужные процедуры.



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

Текущий архив: 2005.12.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.059 c
2-1134390455
tgry
2005-12-12 15:27
2005.12.25
Как программно сэмулировать нажатие клавиш???


10-1110209021
maxz
2005-03-07 18:23
2005.12.25
сопряжение в AutoCAD


2-1133790894
kay
2005-12-05 16:54
2005.12.25
Не обновляется MDIChildCount


3-1131211822
Дмитрий Молчанов
2005-11-05 20:30
2005.12.25
Как прикруть индексы к существующему DBF файлу


8-1121870223
race1
2005-07-20 18:37
2005.12.25
RGB значение