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

Вниз

приводить к типу DWORD   Найти похожие ветки 

 
Scott Storch ©   (2012-03-06 15:06) [0]

В каких случая значения констант нужно приводить к типу DWORD?

Вот, например, из windows.pas:


 MINLONG = DWORD($80000000);
 {$EXTERNALSYM MINLONG}
 MAXLONG = $7FFFFFFF;
 {$EXTERNALSYM MAXLONG}

STATUS_PENDING                  = $00000103;
 {$EXTERNALSYM STATUS_PENDING}
 STATUS_SEGMENT_NOTIFICATION     = $40000005;
 {$EXTERNALSYM STATUS_SEGMENT_NOTIFICATION}
 STATUS_GUARD_PAGE_VIOLATION     = DWORD($80000001);
 {$EXTERNALSYM STATUS_GUARD_PAGE_VIOLATION}
 STATUS_DATATYPE_MISALIGNMENT    = DWORD($80000002);
 {$EXTERNALSYM STATUS_DATATYPE_MISALIGNMENT}
 STATUS_BREAKPOINT               = DWORD($80000003);
 {$EXTERNALSYM STATUS_BREAKPOINT}


 
RWolf ©   (2012-03-06 15:13) [1]

если не указать тип константы, выбирается ближайший целый знаковый тип, в котором может уместиться это число.
если написать a = $80000001, компилятор посчитает, что a имеет тип Int64.
вот поэтому и приводят.


 
icWasya ©   (2012-03-06 15:14) [2]

Вот когда единичка в 31-ом разряде($80000001), тогда и нужно.


 
RWolf ©   (2012-03-06 15:15) [3]

хотя вру, к беззнаковому типу тоже может привести.
короче: см. хелп, топик "true constants".


 
Scott Storch ©   (2012-03-06 15:15) [4]

все ясно, спасибо.


 
Ega23 ©   (2012-03-06 15:16) [5]

const
 cMyConst = 1;
 cMyDWordConst = DWORD(1);
begin
 ShowMessage(VarTypeAsText(VarType(cMyConst)));
 ShowMessage(VarTypeAsText(VarType(cMyDWordConst)));
end;


Например.


 
Anatoly Podgoretsky ©   (2012-03-06 15:39) [6]

Не обязательно ни в каких случаях, на dWord свет клином не сошелся, но удобно, особенно если нужен фундаментальный тип



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

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

Наверх





Память: 0.46 MB
Время: 0.064 c
15-1340089952
Омлет
2012-06-19 11:12
2013.03.22
Почему FreeAndNil такой, какой он есть?


2-1342945485
Ярослав
2012-07-22 12:24
2013.03.22
Склейка формы


15-1350641276
Ega23
2012-10-19 14:07
2013.03.22
А вот вам, пятничная задачка


2-1340219005
Dron83
2012-06-20 23:03
2013.03.22
IdUDPClient1.SendBuffer(t.memory^,t.size);


2-1340113435
Новичок
2012-06-19 17:43
2013.03.22
Программа на Lazarus для MacOS





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