Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1134132952
sanich
2005-12-09 15:55
2005.12.25
Имборт из FoxPro в Firebird


14-1133453114
Витёк
2005-12-01 19:05
2005.12.25
Как узнать наиболее встречающееся слово в массиве??


14-1133813250
ZefiR
2005-12-05 23:07
2005.12.25
Проблема с екзешником....


14-1133260981
DelphiN!
2005-11-29 13:43
2005.12.25
Одалела зараза!


2-1133888031
Gala_l
2005-12-06 19:53
2005.12.25
kbmMW





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