Главная страница
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.017 c
1-15159
Студент
2002-12-19 23:45
2003.01.06
непонятный глюк


7-15320
Дмитрий К.К.
2002-10-25 15:58
2003.01.06
Добавить в избранное: Opera


14-15237
Виктор Щербаков
2002-12-15 15:02
2003.01.06
Обеденный перерыв


3-14922
AlexL
2002-12-12 05:27
2003.01.06
Совместное использование IDENTITY в MSSQL и TDataSet


14-15263
Nick-From
2002-12-16 18:18
2003.01.06
Транслятор Basic в Pascal