Главная страница
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
7-15325
Wizz
2002-10-28 05:09
2003.01.06
Подскажите, как эти несколько ASM команд вставить в Д6?


1-15021
izhalex
2002-12-24 14:59
2003.01.06
курсор в Memo


3-14960
quertXXX
2002-12-14 15:13
2003.01.06
dbExpress


4-15352
Jeka.
2002-11-19 08:14
2003.01.06
Scroll


4-15359
TankMan
2002-11-09 22:29
2003.01.06
Я уже спрашивал... но спрошу переформулировав вопрос...