Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];

Вниз

delphi +qword (u64)   Найти похожие ветки 

 
cawwa   (2007-02-17 18:15) [0]

А есть ли в delphi тип переменной QWord (u64), может он просто иначе называется?


 
begin...end ©   (2007-02-17 18:30) [1]

UInt64 ?


 
Аноним   (2007-02-17 21:45) [2]

Int64


 
Ketmar ©   (2007-02-17 22:00) [3]

> Аноним   (17.02.07 21:45) [2]
знаковый.


 
atruhin ©   (2007-02-18 09:17) [4]

Нет. Не так давно было обсуждение UInt64 приводились примеры что Delphi работает
с ним как со знаковым.


 
atruhin ©   (2007-02-18 09:18) [5]

Т.е. аналога QWord (u64) в delphi нет


 
palva ©   (2007-02-18 15:07) [6]

atruhin ©   (18.02.07 09:17) [4]
Там приводились примеры, на Delphi 7
Похоже, что в Turbo Delphi этот тип был доработан, хотя все еще не документирован. Следующий пример запускался на Turbo Delphi. Попробовать его на Delphi 7 возможности не имею, т. к. дома Delphi 7 не установлен.

{$APPTYPE CONSOLE}
uses SysUtils;
var
 ui: UInt64;
begin
 ui := $FFFFFFFFFFFFFFF0;
 WriteLn(ui);  // 18446744073709551600
 ui := 18446744073709551600;
 WriteLn(ui);  // 18446744073709551600
 WriteLn(IntToHex(ui, 16));        // 00000000FFFFFFF0
 WriteLn(IntToHex(ui div $100000000, 8));  // FFFFFFFF
 WriteLn(IntToHex(ui mod $100000000, 8));  // FFFFFFF0
 ui := ui div 100;
 WriteLn(ui);  // 184467440737095516
end.

Как видите, остались претензии только к функции IntToHex, хотя возможно там имеется какая-то другая функция.


 
guav ©   (2007-02-19 03:03) [7]

> [6] palva ©   (18.02.07 15:07)

хм... write-то и в Д7 вроде работал, надо его варифметике и сравнениях проверить.


 
palva ©   (2007-02-19 10:11) [8]

Вот как работает в D7

{$APPTYPE CONSOLE}
uses SysUtils;
type
aui = array [0..1] of LongWord;
taui = ^aui;
var
ui: UInt64;
begin
// ui := $FFFFFFFFFFFFFFF0; // Constant expression violates subrange bounds
// Присваивание пришлось делать так:
taui(@ui)^[0] := $FFFFFFF0;
taui(@ui)^[1] := $FFFFFFFF;
WriteLn(ui);  // -16
// ui := 18446744073709551600; // Integer constant too large
// ну это само-собой, поэтому закомментируем.
// WriteLn(ui);  // 18446744073709551600
WriteLn(IntToHex(ui, 16));        // 00000000FFFFFFF0
WriteLn(IntToHex(ui div $100000000, 8));  // 00000000
WriteLn(IntToHex(ui mod $100000000, 8));  // FFFFFFFFFFFFFFF0
// Этот остаток от деления равен -16
ui := ui div 3;
// Если разделить на 100, как в предыдущем прогоне, получим 0
WriteLn(ui);  // -5
// А здесь работает как обычное отрицательное число,
// то есть воспринимается как знаковый Int64
end.


 
sniknik ©   (2007-02-19 11:55) [9]

> остались претензии только к функции IntToHex
попробуй заменить   WriteLn(IntToHex(ui, 16)); на WriteLn(IntToHex(Int64(ui), 16))
похоже перезагруженной функции с UInt64 нет (по умолчанию преобразует к integer), а в шестнадцатеричном представлении есть знак или нет его неважно.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.042 c
3-1166610028
Megabyte
2006-12-20 13:20
2007.03.18
TpFIBDataSet: RecordCount, глюк?


15-1172191674
vasIZmax
2007-02-23 03:47
2007.03.18
О "миллионе долларов"...


2-1172155883
\/ainu
2007-02-22 17:51
2007.03.18
Простая прога


15-1172315589
vasIZmax
2007-02-24 14:13
2007.03.18
Боевое крещение...


15-1171890958
TIF
2007-02-19 16:15
2007.03.18
Оцените работу WEB-дизайнера (меня то есть :-)





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