Главная страница
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.023 c
3-14917
Ops
2002-12-13 14:54
2003.01.06
Сервер рвет все коннекты. Все проги валятся.


4-15367
vic_774N
2002-11-19 17:57
2003.01.06
Shutdown - Вопрос избитый но дело не в этом .


6-15192
Devid
2002-11-06 22:10
2003.01.06
Дорогие мастера помогите реализовать проект


1-15089
Александр
2002-12-22 12:23
2003.01.06
Работа с принтером


4-15348
mifi
2002-10-13 23:57
2003.01.06
помогите с gethostbyaddr