Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.06;
Скачать: CL | DM;

Вниз

Объединения   Найти похожие ветки 

 
Chlavik ©   (2002-12-22 18:24) [0]

Как на паскале обьявляются объединения переменных в одну область памяти, на С++ это Union а вот на паскале я не знаю как это делается.....Т.е. например две переменных испльзуют одну и ту же область памяти..


 
PVOzerski ©   (2002-12-22 18:52) [1]

2 варианта, как минимум:
1) использование директивы absolute
var
x:longint;
y:pointer absolute x;

2) использование записей с варьирующими полями:
var
r:packed record
constantpart1:type1;
....
constantpartN:typeN;
case integer of //в данном случае этот integer фиктивен
0:(x:longint);
1:(y:pointer);
end;

на самом деле каждый вариант может включать и несколько полей,
переключатель integer может быть и не integer, и не фиктивным... Лучше почитайте литературу или хотя бы help.



 
Оливейра ©   (2002-12-22 22:53) [2]

3) Просто тупое в стиле Си (опасное) приведение типов и жонглирование указателями ( вопреки воле компилятора - сколько усилий надо приложить... :-)

type
PByte = ^Byte;

var m_iValue: integer;
m_pByte : PByte;
begin
m_iValue := $FFFEFDFC;
m_pByte:= PByte(@m_iValue);
writeln(
m_pByte^, " ", // у меня байты в обратном порядке выводятся, AMD.
PByte(longint(m_pByte) + sizeof(Byte)) ^, " ",
PByte(longint(m_pByte) + sizeof(Byte) * 2)^, " ",
PByte(longint(m_pByte) + sizeof(Byte) * 3)^
);
readln;

end.



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

Текущий архив: 2003.01.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
14-15274
DeMoN-777
2002-12-16 20:26
2003.01.06
Шарим ? Варим !


1-15117
Semyon
2002-12-21 15:14
2003.01.06
Как сделать чтобы фокусом ввода обладало только моё окно?


1-15159
Студент
2002-12-19 23:45
2003.01.06
непонятный глюк


4-15375
Pat
2002-11-17 14:06
2003.01.06
Как можно удалить ScrollBar ы у dbGrid?


8-15168
Dark Elf
2002-07-04 19:59
2003.01.06
Документация на GLScene