![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
приводить к типу DWORD
Scott Storch © (2012-03-06 15:06:00)В каких случая значения констант нужно приводить к типу 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}
Anatoly Podgoretsky (2012-03-06 15:39:00) [1]Не обязательно ни в каких случаях, на dWord свет клином не сошелся, но удобно, особенно если нужен фундаментальный тип
Ega23 (2012-03-06 15:16:00) [2]
const
cMyConst = 1;
cMyDWordConst = DWORD(1);
begin
ShowMessage(VarTypeAsText(VarType(cMyConst)));
ShowMessage(VarTypeAsText(VarType(cMyDWordConst)));
end;
Например.
RWolf (2012-03-06 15:15:00) [3]хотя вру, к беззнаковому типу тоже может привести.
короче: см. хелп, топик "true constants".
Scott Storch (2012-03-06 15:15:00) [4]все ясно, спасибо.
icWasya (2012-03-06 15:14:00) [5]Вот когда единичка в 31-ом разряде($80000001), тогда и нужно.
RWolf (2012-03-06 15:13:00) [6]если не указать тип константы, выбирается ближайший целый знаковый тип, в котором может уместиться это число.
если написать a = $80000001, компилятор посчитает, что a имеет тип Int64.
вот поэтому и приводят.