Главная страница
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.012 c
8-15179
Ascan_
2002-09-18 14:30
2003.01.06
Как не зависеть от кол. цветов Descktop а ?


1-15131
Азеев Анрей
2002-12-22 23:09
2003.01.06
Перенаправление вывода внешнего консольного приложения


3-14911
UWater
2002-12-13 14:35
2003.01.06
Переход к заданному полю...


3-14919
maxval
2002-12-10 18:20
2003.01.06
Проблема с датой


14-15311
BF7ru
2002-12-17 17:05
2003.01.06
Siemens sl45i - самый популярный телефон