Главная страница
    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.47 MB
Время: 0.014 c
1-1133366921
Vadimka
2005-11-30 19:08
2005.12.25
Application.Minimize и форма без кнопки на панели задач


9-1122435799
olorint
2005-07-27 07:43
2005.12.25
Модальные формы и OpenGL


14-1133627059
АЗИМУТ
2005-12-03 19:24
2005.12.25
Лог.задачи.


14-1133740594
Kerk
2005-12-05 02:56
2005.12.25
Welcome to the Stanford Prison Experiment


14-1132315308
DiamondShark
2005-11-18 15:01
2005.12.25
Ненавижу ЮИ





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