Форум: "Начинающим";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];
ВнизЧисла размером 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c