Главная страница
    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
14-1133527749
Максим
2005-12-02 15:49
2005.12.25
Все решено


1-1133153544
Shlomo
2005-11-28 07:52
2005.12.25
Install Shield выдаёт непонятную ошибку?


3-1131443597
Laymer
2005-11-08 12:53
2005.12.25
Получение список таблиц и их полей


2-1134291163
PAVIA
2005-12-11 11:52
2005.12.25
Числа размером 64бита.


1-1133199265
Erick
2005-11-28 20:34
2005.12.25
Работа с ListBox из другой формы





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