Главная страница
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.05 c
14-1133771685
Anton__
2005-12-05 11:34
2005.12.25
Программа, выполняющаяся на сервере


11-1115316782
Sphinxx
2005-05-05 22:13
2005.12.25
Скачивание фалов с инета


14-1133271489
baks_uz
2005-11-29 16:38
2005.12.25
Дельфи глазами Хакера


14-1133348273
Глупые Вопросы
2005-11-30 13:57
2005.12.25
Подскажите компонент


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